Руководство по администрированию файловых систем ZFS Solaris

Введение в свойства ZFS

Свойства – это основной механизм, используемый для управления поведением файловых систем, томов, снимков и клонов. Если не указано иное, свойства, определенные в разделе, применяются ко всем типам наборов данных.

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

Большинство устанавливаемых свойств также наследуется. Наследуемое свойство – это свойство, которое при установке для родительского элемента распространяется на все дочерние элементы.

Все наследуемые свойства имеют связанный источник. Этот источник определяет выбор значения свойства. Ниже перечислены возможные значения источников свойств:

local

Источник local указывает, что свойство было явно задано для набора данных с помощью команды zfs set, как описано в разделе Установка свойств ZFS.

inherited from имя_набора_данных

Значение inherited from имя_набора_данных означает, что свойство было унаследовано от соответствующего родительского элемента.

default

Значение default означает, что значение свойства не было унаследовано или установлено на локальном уровне. Этот источник задается при отсутствии родительского элемента с источником local.

В следующей таблице перечислены системные свойства файловой системы ZFS – как доступные только для чтения, так и настраиваемые. Особо выделены системные свойства, доступные только для чтения. Все прочие системные свойства, перечисленные в этой таблице, являются настраиваемыми. Для получения информации о пользовательских свойствах см. Пользовательские свойства ZFS.

Таблица 6–1 Описание системных свойств ZFS

Имя свойства 

Тип 

Значение по умолчанию 

Описание 

aclinherit

Строка 

secure

Используется для управления наследованием записей списков ACL при создании файлов и каталогов. Возможные значения: discard, noallow, secure и passthrough. Описание этих значений приведено в разделе Режимы свойств списков ACL.

aclmode

Строка 

groupmask

Используется для управления изменением записей списков ACL при выполнении операции chmod. Возможные значения: discard, groupmask и passthrough. Описание этих значений приведено в разделе Режимы свойств списков ACL.

atime

Логическое значение 

on

Используется для управления обновлением времени доступа к файлам при их чтении. Отключение этого свойства запрещает трафик записи при чтении файлов и может существенно повысить быстродействие, но при этом могут возникнуть трудности с почтовыми программами и подобными им служебными программами.

available

Число 

нет 

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

На это свойство можно также ссылаться по сокращенному имени столбца avail.

Для получения дополнительной информации об учете пространства см. Учет пространства ZFS.

canmount

Логическое значение 

on

Определяет возможность монтирования данной файловой системы с помощью команды zfsmount. Это свойство можно установить в любой файловой системе, и само свойство не является наследуемым. При значении этого свойства off точка монтирования может быть унаследована дочерними файловыми системами, но сама файловая система никогда не монтируется.

Когда задан параметр noauto, набор данных можно монтировать и размонтировать только явно. Набор данных не монтируется автоматически при его создании или импорте. Он также не монтируется командой zfs mount- a и не размонтируется командой zfs unmount-a.

Дополнительные сведения приведены в разделе Свойство canmount.

checksum

Строка 

on

Используется для настройки контрольной суммы в целях проверки целостности данных. По умолчанию используется значение on, задающее автоматический выбор соответствующего алгоритма (в данном случае fletcher2). Возможные значения: on, off, fletcher2, fletcher4 и sha256. Значение off отключает проверку целостности пользовательских данных. Значение off использовать не рекомендуется.

compression

Строка 

off

Включение или выключение сжатия для этого набора данных. Доступные значения: on , off, lzjb, gzip и gzip-N. В настоящее время значения lzjb, gzip и gzip- N имеют тот же эффект, что и значение on. По умолчанию установлено значение off. Активация сжатия в файловой системе с существующими данными приводит к сжатию только новых данных. Существующие данные не сжимаются.

Это свойство может также указываться сокращенным именем столбца: compress.

compressratio

Число 

нет 

Свойство только для чтения, определяющее достигнутую степень сжатия для набора данных, выражаемую в виде множителя. Включить сжатие можно с помощью команды zfs set compression=on набор_данных.

Рассчитывается на основе логического размера всех файлов и объема связанных физических данных. Включает явное сокращение, достигаемое за счет использования свойства compression .

copies

Число 

1

Задает количество копий пользовательских данных для файловой системы. Доступные значения: 1, 2 или 3. Эти копии являются дополнительными по отношению к избыточности уровня пула. Пространство, используемое несколькими копиями пользовательских данных, относится на счет соответствующего файла и набора данных с учетом квот и резервирований. Кроме того, если разрешено создание нескольких копий, то обновляется свойство used. Это свойство устанавливается при создании файловой системы, поскольку изменение его значения в существующей файловой системе влияет только на новые данные.

creation

Строка 

нет 

Свойство только для чтения, определяющее дату и время создания набора данных.

devices

Логическое значение 

on

Определяет возможность открытия файлов устройств в файловой системе.

exec

Логическое значение 

on

Определяет возможность выполнения программ в файловой системе. Кроме того, при установке значения off запрещаются вызовы mmap(2) с PROT_EXEC.

mounted

Логическое значение 

нет 

Свойство только для чтения, которое определяет, монтируется ли в настоящее время файловая система, клон или снимок. Это свойство не применяется в отношении томов. Возможные значения: yes или no.

mountpoint

Строка 

нет 

Определяет точку монтирования, используемую для этой файловой системы. При изменении свойства mountpoint для файловой системы эта файловая система и все дочерние элементы, наследующие точку монтирования, размонтируются. При установке значения legacy они остаются размонтированными. В противном случае они автоматически перемонтируются в новом местоположении, если свойство ранее имело значениеlegacy или none, либо если они были смонтированы до изменения свойства. Кроме того, настройки совместного использования всех файловых систем адаптируются согласно новому местоположению.

Для получения дополнительной информации об использовании этого свойства см. Управление точками монтирования ZFS.

primarycache

Строка 

off

Управляет содержимым для кэширования в ARC. Возможными значениями являются all, none и metadata. При установке на all выполняется кэширование данных пользователя и метаданных. При установке на none кэширование данных пользователя и метаданных не выполняется. При установке на metadata выполняется кэширование только метаданных. По умолчанию установлено значение all.

origin

Строка 

нет 

Свойство только для чтения, предназначенное для клонированных файловых систем или томов и определяющее снимок, на основе которого был создан клон. До тех пор пока клон существует, источник не может быть уничтожен (даже при помощи параметров -r и -f).

Для неклонированных файловых систем устанавливается значение none.

quota

Число (или none)

none

Определяет пределы пространства, которое могут занимать набор данных и дочерние элементы. Это свойство устанавливает жесткий предел по используемому пространству, включая все пространство, занимаемое дочерними элементами, в т.ч. файловыми системами и снимками. Установка квоты для дочернего элемента набора данных, для которого уже задана квота, не переопределяет квоту родительского элемента, но устанавливает дополнительный предел. Квоты не могут быть заданы для томов, поскольку свойство volsize выступает в качестве неявной квоты.

Для получения информации об установке квот см. Установка квот в файловых системах ZFS.

readonly

Логическое значение 

off

Определяет возможность изменения набора данных. При установке значения on изменить набор данных невозможно.

Это свойство может также указываться сокращенным именем столбца: rdonly.

recordsize

Число 

128K

Указывает рекомендуемый размер блока для файлов в файловой системе.

Это свойство может также указываться сокращенным именем столбца: recsize. Подробное описание приведено в разделе Свойство recordsize.

referenced

Число 

нет 

Свойство только для чтения, определяющее объем данных набора, которые могут использоваться (или не использоваться) совместно с другими наборами данных в пуле.

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

Это свойство может также указываться сокращенным именем столбца: refer.

refquota

Число (или "none") 

none

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

refreservation

Число (или "none") 

none

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

Если указано свойство refreservation, то иметь снимок разрешается только при наличии в пуле достаточного свободного пространства (за пределами данного резервирования) для размещения текущего объема байт referenced в наборе данных.

Это свойство может также указываться сокращенным именем столбца: refreserv.

reservation

Число (или "none") 

none

Минимальный объем пространства, гарантированного для набора данных и дочерних элементов. Если объем используемого пространства ниже этого значения, то считается, что набор данных занимает указанное резервируемое пространство. Резервирование учитывается при расчете используемого пространства родительских наборов данных и сопоставляется с квотами и резервированием для родительских наборов данных.

Это свойство может также указываться сокращенным именем столбца: reserv.

Для получения дополнительной информации см. Настройка резервируемого пространства в файловых системах ZFS.

secondarycache

Строка 

off

Управляет содержимым для кэширования в L2ARC. Возможными значениями являются all, none и metadata. При установке на all выполняется кэширование данных пользователя и метаданных. При установке на none кэширование данных пользователя и метаданных не выполняется. При установке на metadata выполняется кэширование только метаданных. По умолчанию установлено значение all.

setuid

Логическое значение 

on

Определяет значение бита setuid в файловой системе.

sharenfs

Строка 

off

Определяет доступность файловой системы через NFS и используемые для этого параметры. При выборе значения on команда zfs share вызывается без каких-либо параметров. В противном случае команда zfs share вызывается с параметрами, эквивалентными содержимому свойства. При выборе значения off управление файловой системой осуществляется с использованием старых команд share и unshare и файла dfstab.

Для получения дополнительной информации о совместном использовании файловых систем ZFS см. Разрешение и запрет совместного использования файловых систем ZFS.

snapdir

Строка 

hidden

Определяет, является ли каталог .zfs скрытым или видимым в корне файловой системы. Дополнительная информация об использовании снимков приводится в разделе Краткий обзор снимков ZFS.

type

Строка 

нет 

Свойство только для чтения, определяющее набор данных как filesystem (файловая система или клон), volume (том) или snapshot (снимок).

used

Число 

нет 

Свойство только для чтения, определяющее объем пространства, занимаемого набором данных и всеми дочерними элементами.

Подробное описание приведено в разделе Свойство used.

usedbychildren

Число 

off 

Доступное только для чтения свойство, определяющее объем пространства, используемого дочерними элементами этого набора данных, который будет освобожден после разрушения всех этих дочерних элементов. Сокращением этого свойства является usedchild.

usedbydataset

Число 

off 

Доступное только для чтения свойство, определяющее объем пространства, используемого самим набором данных, которое будет освобождено после разрушения набора данных, после того как сначала будут разрушены любые снимки и удалены любые refreservation. Сокращением этого свойства является usedds.

usedbyrefreservation

Число 

off 

Доступное только для чтения свойство, определяющее объем пространства, используемого набором refreservation для этого набора данных, которое будет освобождено при удалении refreservation. Сокращением этого свойства является usedrefreserv.

usedbysnapshots

Число 

off 

Доступное только для чтения свойство, которое определяет объем пространства, занимаемого снимками этого набора данных. В частности, это объем пространства, которое будет освобождено в случае разрушения всех снимков этого набора данных. Обратите внимание, что это не просто сумма снимков свойств used, поскольку пространство может совместно использоваться несколькими снимками. Сокращением этого свойства является usedsnap.

volsize

Число 

нет 

Указывает логический размер тома.

Подробное описание приведено в разделе Свойство volsize.

volblocksize

Число 

8 КБ

Указывает размер блока для томов. После записи тома изменить размер блока невозможно, поэтому его необходимо устанавливать при создании тома. Стандартный размер блока для томов составляет 8 КБ. Допустимым является любой размер от 512 байт до 128 КБ, соответствующий степени двойки.

Это свойство может также указываться сокращенным именем столбца: volblock.

zoned

Логическое значение 

нет 

Определяет, был ли набор данных добавлен в неглобальную зону. При установке этого свойства точка монтирования в глобальной зоне не определяется, и ZFS не может монтировать такую файловую систему по запросу. Это свойство указывается при первой установке зоны для всех добавляемых файловых систем.

Для получения дополнительной информации об использовании ZFS с установленными зонами см. Использование ZFS в системе Solaris с установленными зонами.

xattr

Логическое значение 

on

Активирует или деактивирует расширенные атрибуты для данной файловой системы. По умолчанию установлено значение on.

Системные свойства ZFS, доступные только для чтения

Системные свойства, доступные только для чтения, – это свойства, которые могут быть считаны, но не могут указываться вручную. Системные свойства, доступные только для чтения, не наследуются. Некоторые системные свойства применяются только в отношении определенного типа набора данных. В таких случаях в описании в Таблица 6–1 указывается тип набора данных.

Ниже перечислены системные свойства, доступные только для чтения. Их описание приведено в Таблица 6–1.

Для получения дополнительной информации об учете пространства, включая сведения о свойствах used, referenced и available, см. Учет пространства ZFS.

Свойство used

Объем пространства, занимаемого набором данных и всеми дочерними элементами. Это значение сверяется с квотой и резервированием, указанными для набора данных. Используемое пространство не учитывает резервирование для набора данных, но учитывает резервирование для любых дочерних наборов данных. Объем пространства родительского элемента, занимаемого набором данных, а также объем освобожденного пространства в случае рекурсивного уничтожения набора данных – это большее из объема используемого и объема резервируемого пространства.

При создании снимков их пространство первоначально используется совместно с файловой системой и, возможно, с предшествующими снимками. При изменении файловой системы пространство, которое ранее использовалось совместно, полностью передается снимку и учитывается при определении занятого снимком пространства. Используемое снимком пространство включает только его данные. Кроме того, удаление снимков может увеличить объем пространства, отведенного под другие снимки и используемого этими снимками. Для получения дополнительной информации по вопросам, связанным со снимками и пространством, см. Поведение при недостатке пространства.

При определении объема используемого, доступного и занятого пространства не учитываются отложенные изменения. Как правило, отложенные изменения существуют в течение нескольких секунд. Запись изменения на диск с помощью команды fsync(3c) или O_SYNC не гарантирует немедленного обновления информации об использовании пространства.

Просмотр информации о свойствах usedbychildren, usedbydataset , usedbyrefreservation и usedbysnapshots возможен с помощью команды zfs list - o space. Данные свойства делят свойство used на пространства, занимаемые дочерними элементами. Дополнительная информация приведена в Таблица 6–1.

Настраиваемые системные свойства ZFS

Настраиваемые системные свойства – это свойства, значения которых могут быть как считаны, так и указаны вручную. Настраиваемые системные свойства указываются с помощью команды zfs set, как описано в разделе Установка свойств ZFS, или с помощью команды zfs create, как описано в разделе Создание файловой системы ZFS. За исключением квот и резервируемого пространства, настраиваемые системные свойства являются наследуемыми. Для получения дополнительной информации о квотах и резервировании см. Настройки квот и резервируемого пространства в ZFS.

Некоторые настраиваемые свойства применяются только в отношении определенного типа набора данных. В таких случаях в описании в Таблица 6–1 указывается соответствующий тип набора данных. Если это не указано специально, свойство применяется в отношении всех типов наборов данных: файловых систем, томов, клонов и снимков.

Ниже перечислены настраиваемые свойства. Их описание приведено в Таблица 6–1.

Свойство canmount

Если для этого свойства выбрано значение off, то монтирование файловой системы с помощью команды zfs mount или zfs mount -a невозможно. Это значение аналогично установке для свойства mountpoint значения none, за исключением того, что набор данных по-прежнему имеет стандартное свойство mountpoint, которое может наследоваться. Например, для этого свойства можно установить значение off и указать наследуемые свойства для дочерних файловых систем, но сама файловая система не может быть смонтирована или доступна для пользователей. В этом случае родительская файловая система со значением свойства off служит в качестве контейнера с настраиваемыми атрибутами. При этом сам контейнер остается недоступным.

В следующем примере создается пул userpool и для свойства canmount устанавливается значение off. Дочерние пользовательские файловые системы имеют одну общую точку монтирования /export/home . Свойства, устанавливаемые для родительской файловой системы, наследуются дочерними файловыми системами, однако сама родительская файловая система не монтируется.


# zpool create userpool mirror c0t5d0 c1t6d0
# zfs set canmount=off userpool
# zfs set mountpoint=/export/home userpool
# zfs set compression=on userpool
# zfs create userpool/user1
# zfs create userpool/user2
# zfs list -r userpool
NAME             USED  AVAIL  REFER  MOUNTPOINT
userpool         140K  8.24G  24.5K  /export/home
userpool/user1  24.5K  8.24G  24.5K  /export/home/user1
userpool/user2  24.5K  8.24G  24.5K  /export/home/user2

Если для свойства canmount указано значение noauto, то набор данных можно монтировать только явно (не автоматически). Программное обеспечение Solaris для обновления использует этот параметр таким образом, чтобы во время загрузки монтировались только наборы данных, относящиеся к активной среде начальной загрузки.

Свойство recordsize

Указывает рекомендуемый размер блока для файлов в файловой системе.

Это свойство предназначено исключительно для использования с базами данных, которые обращаются к файлам с записями фиксированного размера. ZFS автоматически регулирует размер блока в соответствии с внутренними алгоритмами, оптимизированными для типичных моделей доступа. Для баз данных, создающих крупные файлы, но обращающихся к файлам в небольших произвольных блоках, эти алгоритмы могут быть близки к оптимальным. Если для свойства recordsize указать значение, превышающее размер записи базы данных или равное ему, производительность может существенно возрасти. Использование этого свойства для универсальных файловых систем достаточно затруднительно и может негативно сказаться на производительности. Можно указать размер не менее 512 и не более 128 КБ, соответствующий степени двойки. Изменение свойства recordsize для файловой системы оказывает влияние только на файлы, созданные после изменения. На существующие файлы изменения не распространяются.

Это свойство может также указываться сокращенным именем столбца: recsize.

Свойство volsize

Определяет логический размер тома. По умолчанию при создании тома резервируется пространство, равное объему тома. Любые изменения свойства volsize отражаются в эквивалентных изменениях резервируемого пространства. Эти проверки используются для предотвращения непредвиденного с точки зрения пользователей поведения системы. Том, который содержит меньше пространства, чем было указано как доступное, может вызвать непредсказуемое поведение или повреждение данных, в зависимости от способов использования этого тома. Эти последствия также могут возникнуть в случае изменения размера тома в процессе его использования, в частности, при уменьшении размера. При корректировке размера тома необходимо соблюдать особую осторожность.

Несмотря на то что это не рекомендуется, можно создать разреженный том путем установки флага -s для команды zfs create -V или путем изменения резервируемого пространства после создания тома. Разреженный том – это том, резервируемое пространство которого не равно размеру этого тома. В случае разреженного тома изменение свойства volsize не отражается на резервируемом пространстве.

Для получения дополнительной информации об использовании томов см. Тома ZFS.

Пользовательские свойства ZFS

Помимо стандартных системных свойств, ZFS поддерживает произвольные пользовательские свойства. Пользовательские свойства не влияют на поведение ZFS, но их можно использовать для добавления пользовательской информации к наборам данных.

Имена пользовательских свойств должны соответствовать следующим характеристикам:

Подразумевается, что имя свойства разделяется на следующие два компонента, однако это требование не является обязательным для ZFS:


module:property

При программном использовании пользовательских свойств для компонента модуль имен свойств следует указать имя домена DNS, элементы которого представлены в обратном порядке. Это позволит снизить вероятность использования двух независимо созданных пакетов с одним именем свойства в различных целях. Имена свойств, начинающиеся с com.sun., зарезервированы для использования Sun Microsystems.

Значения пользовательских свойств имеют следующие характеристики:

Пример:


# zfs set dept:users=finance userpool/user1
# zfs set dept:users=general userpool/user2
# zfs set dept:users=itops userpool/user3

Все команды, выполняемые по отношению к свойствам, например zfs list, zfs get, zfs set и т. д., могут использоваться для управления как системными, так и пользовательскими свойствами.

Пример:


zfs get -r dept:users userpool
NAME            PROPERTY    VALUE           SOURCE
userpool        dept:users  all             local
userpool/user1  dept:users  finance         local
userpool/user2  dept:users  general         local
userpool/user3  dept:users  itops           local

Для сброса пользовательского свойства используется команда zfs inherit. Пример:


# zfs inherit -r dept:users userpool

Если свойство не определено ни в одном родительском наборе данных, оно удаляется полностью.