6.9. Настройка дисков

6.9.1. Переменные Sysctl

6.9.1.1. vfs.vmiodirenable

Значением переменной vfs.vmiodirenable по умолчанию является 0 (выключено) (хотя вскоре значением по умолчанию будет 1). Она может принимать два значения: 0 (выключено) и 1 (включено). Эта переменная отвечает за метод кэширования директорий. Размер большинства директорий маленький. Они могут поместиться в одном фрагменте (обычно 1K), хотя могут занимать и ещё меньше места (обчычно 512 байт) в кэше буфера. Однако, при работе в стандартном режиме буфер прокэширует только заданное число директорий даже если у вас много памяти. Включение этого параметра sysctl позволит кэшу использовать "VM Page Cache" для кэширования директорий. Преимущество этого метода в том, что теперь для кэширования директорий будет доступен весь обьём памяти. Недостаток - в том, что минимальный объём памяти, используемой для кэширования директорий стал равен объёму страницы (обычно 4K) вместо 512 байт. Мы рекомендуем включить эту опцию, если ваш компьютер исполняет программы, манипулирующие значительным количествои файлов. Примером таких программ могут быть кэширующие прокси-серверы, большие почтовые серверы и серверы новостей. Обычно включение этой опции не понижает производительности, однако лучше поэкспериментировать, чтобы узнать оптимальное значение для вашей машины.

6.9.1.2. hw.ata.wc

Во FreeBSD 4.3 кэширование записи на IDE диски было отключено. Это понижало производительность IDE дисков в тестах, но было неободимо для лучшей сохранности данных. Проблема состоит в том, что IDE диски неправильно указывают время завершения записи на диск. При включенном кэшировании IDE диски могут не только записать данные в неправильном порядке - при большой нагрузке на диск некоторые блоки могут задержаться до бесконечности. Сбой, или отключение питания могут повлечь за собой серьёзные повреждения в файловой системе. Поэтому для безопасности системы значение по умолчанию этого параметра было изменено. К сожалению, результатом этого стало столь значительная потеря производительности, что после выхода релиза значение этого параметра было возвращено в первоначальное состояние. Вам следует проверить значение переменной sysctl hw.ata.wc на вашей машине. Если кэширование выключено - вы можете включить его, установив значение переменной ядра, равное 1. Это должно быть сделано при помощи загрузчика при загрузке. Если вы сделаете это позже - изменения не будут иметь силы.

Для более полной информации обращайтесь к ata(4).

6.9.2. Soft Updates

Программа tunefs(8) используется для настройки файловой системы. Эта программа может принимать большое количество параметров, но мы рассмотрим лишь один из них - включение и выключение "Soft Updates", что может быть достигнуто следующим обраозом:

    # tunefs -n enable /filesystem
    # tunefs -n disable /filesystem

Нельзя изменять файловую систему с помощью tunefs(8) когда она смонтирована. Самое подходящее время для включения "Soft Updates" - перед монтированием разделов, в однопользовательском режиме.

Soft Updates существенно увеличивают скорость создания и удаления файлов путём использования кэширования. Мы рекомендуем включить Soft Updates на всех ваших файловых системах. Однако у Soft Updates есть и обратные стороны: Во-первых, Soft Updates гарантирует целостность файловой системы в случае сбоя, но в этом случае данные могут быть не записаны до сбоя. Если система зависнет - вы можете потерять больше, чем, если бы вы не включили Soft Updates. Во-вторых, Soft Updates задерживает освобождение блоков файловой системы. Если ваша файловая система заполнена, запись на ней, например командой make installworld, может вызвать её переполнение.