Могу ли я настроить dm-кеш для кеширования только небольших файлов?

Из-за проблем с бюджетом мы внедряем файловый сервер-слэш контроллера домена Active Directory в небольшой НПО, использующей Ubuntu Server/Samba и обычный жесткий диск.

Я обеспокоен мрачной случайной скоростью доступа 4K обычных вращающихся дисков, когда дело доходит до загрузки и выгрузки перемещаемых профилей Windows. Итак, я думаю о том, чтобы получить очень маленький SSD для кеширования. Пропускная способность сети составляет 1 ГБ, поэтому все, что превышает ~100 МБ / с, тратится впустую, поэтому файлы большего размера (к которым осуществляется более последовательный доступ) следует исключить из кэша SSD.

Можем ли мы настроить dm-cache для кэширования только файлов ниже определенного размера на кеширующем SSD?

1 ответ

Решение

Итак, чтобы ответить на мой собственный вопрос: я нашел необходимую информацию в документации к dm-кешу, точнее в cache-policies.txt,

Согласно документации, dm-кеш различает случайные и последовательные передачи прямо из коробки. Цитировать cache-policies.txt:

Пары аргументов сообщения и конструктора:

  • 'sequential_threshold <#nr_sequential_ios>'
  • 'random_threshold <#nr_random_ios>'
  • 'read_promote_adjustment'
  • 'write_promote_adjustment'
  • 'discard_promote_adjustment'

Последовательный порог указывает количество смежных операций ввода-вывода, необходимых для того, чтобы поток был обработан как последовательный. Случайный порог - это количество промежуточных несмежных операций ввода-вывода, которые необходимо увидеть, прежде чем поток снова будет считаться случайным.

Последовательные и случайные пороговые значения по умолчанию равны 512 и 4 соответственно.

Большие последовательные ios, вероятно, лучше оставить на исходном устройстве, поскольку шпиндели имеют хорошую пропускную способность. Io_tracker считает непрерывные операции ввода / вывода, чтобы попытаться определить, когда io находится в одном из этих последовательных режимов.

Это отличается от разграничения на уровне файлов (о котором просил исходный вопрос), поскольку предположительно случайное чтение блоков из фрагментированных больших файлов также будет кэшироваться. Но это аналогично выполнимое (и действительно, гораздо более надежное) решение проблемы. Итак, исходный вопрос ошибочно предполагал, что решение для кэширования работает с файлами; фактически это работает на уровне блоков файловой системы.

Другие вопросы по тегам