ZFS имеет множество различных настраиваемых свойств.для бассейнов,для vdevидля наборов данных. Многие из них можно изменить в любой момент, но некоторые можно задать только во время создания (или они влияют только на данные, записанные позже, поэтомудолженна самом деле быть установлено во время создания).
Будучи новичком, я искал ответы на множество различных вопросов и нашел несколько свойств, которые предлагалось задать чаще всего.
Очевидно, что каждый вариант использования будет иметь небольшие различия в том, какие свойства имеют смысл, но, похоже, есть общий набор свойств, которые должны использовать большинство пользователей zfs. Я имею в виду те свойства, для которых нужно иметь активную причинунетиспользовать их. Что это и почему?
решение1
(Отказ от ответственности: поскольку я новичок в ZFS, это только мое понимание, и оно призвано послужить стимулом для получения более полной и достоверной информации от других).
Свойства бассейна
ashift=12
На базовом уровне этообеспечивает соответствие операций чтения/записи ZFS границам блоков базового хранилища.Теоретическидля блоков по 512 байт
ashift=9
было бы нормально, но приводы с такими параметрами в наши дни встречаются редко, а штраф за установкуashift
«слишком большого» значения довольно невелик.autotrim=on
Автоматическиинформировать базовое блочное хранилище, когда часть пространства больше не нужна. Особенно полезно для SSD-накопителей, но, похоже, не повредит и для классических HDD (хотя там, скорее всего, не поможет).
Свойства набора данных
Их можно указать с zfs create -o
помощью -O
переключателя zpool create
для корневой файловой системы (которая по умолчанию будет унаследована другими).
xattr=sa
Значительно увеличивает производительность xattr без каких-либо реальных недостатков.Доступно только на Linuxна данный момент).
dnodesize=auto
Это свойство следует использовать при использовании
xattr=sa
. Основная причина не использовать их заключается в том,взаимодействие с системами, которые не поддерживают требуемую функцию ZFS.relatime=on
Отслеживание времени доступа к файлам может быть очень затратным даже при взаимодействии только для чтения.
relatime
значительно снижает гранулярность/частоту этих обновлений за счет менее точной информации вatime
свойстве (при сохранении некоторых обычно требуемых инвариантов). Обратите внимание, что это значение по умолчанию для почти всех файловых систем в Linux на долгое время. Если вам нужна точнаяatime
информация, то не включайте это. Если вы знаете, что этоatime
никогда не понадобится, тоatime=off
обеспечивает еще лучшую производительность.normalization=formD
Это гарантирует, что имена файлов всегда будут нормализованы одинаково. В качестве основного побочного эффекта это также означает, что файловая система будет обрабатывать имена файлов как закодированные в UTF-8 и больше не сможет хранить имена файлов с определенными "сломанными" именами, которые принимают другие файловые системы. Если это нежелательно, то оставьте это.
compression=lz4
Похоже, консенсус заключается в том, что стоимость сжатия настолько низка на современном оборудовании, что это фактически имеет только положительный эффект. Наборы данных, которые в основном хранят уже сильно сжатые данные, могут захотеть отключить это.
нет
recordsize
Размер записи по умолчанию, по-видимому, является хорошим компромиссом для многих вариантов использования, но в некоторых случаях, например, в базах данных, могут быть полезны определенные значения.
Источники
- Корень Debian на ZFS
- Множество отдельных сообщений на форуме