Рассказы о ZFS. Её команды: некоторые опции zpool

Команда zpool поддерживает ещё множество субкоманд, предназначенных для экспорта и импорта пула, добавления к нему устройств и изъятия оных, и так далее. Но о них я сейчас говорить не буду, ибо пока на практике мне они не понадобились. А поговорю о некоторых опциях, которые могут оказаться необходимыми при создании пула.

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

Полезной может оказаться опция -n. Она определяет тестовый режим выполнения определённой субкоманды, то есть выводит результат, например, субкоманды zpool create без фактического создания пула. И. соответственно, сообщает об ошибках построения командной директивы, если таковые имеются.

Интересна также опция -m mountpoint. Как уже говорилось, при создании пула по умолчанию в корне файловой иерархии создаётся каталог /pool_name, который в дальнейшем будет точкой монтирования файловых систем ZFS. Возможно, что это окажется не самым лучшим местом для их размещения, и, как мы увидим в дальнейшем, это несложно будет изменить. Но можно задать каталог для пула сразу — например /home/data: это и будет значением опции -m. Никто не запрещает определить в качестве такового и какой-либо из существующих каталогов, например, весь /home целиком. Нужно только проследить, чтобы он был пуст, иначе автоматическое монтирование файловых систем пула в него окажется невозможным.

Наконец, нынче важное значение приобретает опция ashift=#, значением которой является размер блока файловой системы в виде степеней двойки. По умолчанию при создании пула размер блока определяется автоматически, и до некоторого времени это было оптимально. Однако затем, с одной стороны, появились диски так называемого Advanced Format (сначала у Western Digital, но ныне модели такие можно найти у всех уцелевших производителей традиционных винчестеров). Со стороны же другой — получили распространение SSD-накопители. И в тех, и в других размер блока равен 4 КБ, хотя в целях совместимости по прежнему эмулируется блок в 512 байт. В этих условиях автоматика ZFS может работать некорректно, что приводит к падению производительности пула.

Для предотвращения означенного безобразия и была придумана опция ashift. Значение её по умолчанию — 0, что соответствует автоматическому определению размера блока. Прочие же возможные значения лежат в диапазоне от 9 для блока в 512 байт (29 = 512) до 16 для 64-килобайтного блока (216 = 65 536, правда, не знаю, используется ли такое на практике). В интересующем нас случае четырёхкилобайтного блока оно составляет 12 (212 = 4096). Именно последнее значение и следует указать явным образом при создании пула из винчестеров AF или SSD-накопителей, как это сделал я при окучивании ZFS:

# zpool create -o ashift=12 tank scsi-SATA_SanDisk_SDSSDX1120823400863-part3 scsi-SATA_SanDisk_SDSSDX1120823402786-part3

Об остальных опциях команды zpool разговор будет тогда, когда дело дойдёт до субкоманд, с которыми они обычно употребляются.


Назад | Рассказы о ZFS | Вперёд