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

Управление свойствами ZFS

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

Установка свойств ZFS

Для установки любого настраиваемого свойства набора данных используется команда zfs set. Для настройки свойств при создании набора данных используется команда zfs create. Список настраиваемых свойств набора данных приведен в разделе Настраиваемые системные свойства ZFS. Команда zfs set принимает последовательность свойств/значений в формате свойство=значение и имя набора данных.

В следующем примере для свойства atime в tank/home устанавливается значение off. За один вызов команды zfs set можно установить или изменить только одно свойство.


# zfs set atime=off tank/home

Кроме того, любое свойство можно установить при создании файловой системы. Пример:


# zfs create -o atime=off tank/home

Числовые значения свойств можно указывать с использованием следующих простых суффиксов (в порядке возрастания): BKMGTPEZ. Любой из этих суффиксов может сопровождаться параметром b с указанием битов, за исключением суффикса B, который уже определяет байты. Следующие четыре вызова zfs set эквивалентны числовым выражениям, указывающим на то, что для свойства quota файловой системы tank/home/marks устанавливается значение 50 ГБ:


# zfs set quota=50G tank/home/marks
# zfs set quota=50g tank/home/marks
# zfs set quota=50GB tank/home/marks
# zfs set quota=50gb tank/home/marks

Значения нечисловых свойств определяются с учетом регистра и должны указываться в нижнем регистре, за исключением свойств mountpoint и sharenfs. В значениях этих свойств могут использоваться символы верхнего и нижнего регистра.

Для получения дополнительной информации о команде zfs set см. zfs(1M).

Наследование свойств ZFS

Все настраиваемые свойства, за исключением квот и резервируемого пространства, наследуют значения родительского элемента (кроме случаев, когда для дочернего элемента явно указаны квота или резервируемое пространство). Если родительский элемент не имеет явно указанного набора значений наследуемого свойства, используется значение свойства по умолчанию. Для сброса значения свойства используется команда zfs inherit, в результате выполнения которой наследуются параметры родительского элемента.

В следующем примере команда zfs set используется для активации сжатия в файловой системе tank/home/bonwick. Затем выполняется команда zfs inherit для возврата исходного значения свойства compression. Таким образом, это свойство наследует параметр по умолчанию off. Поскольку для home и tank свойство compression не указано на локальном уровне, используется значение по умолчанию. Если бы для обоих элементов сжатие было включено, то использовалось бы значение, указанное в ближайшем родительском элементе (home в данном примере).


# zfs set compression=on tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression   on                      local
# zfs inherit compression tank/home/bonwick
# zfs get -r compression tank
NAME             PROPERTY      VALUE                    SOURCE
tank             compression   off                      default
tank/home        compression   off                      default
tank/home/bonwick compression  off                      default

При вводе параметра r подкоманда -inherit применяется рекурсивно. В следующем примере эта команда определяет значение свойства compression, наследуемого tank/home и всеми дочерними элементами.


# zfs inherit -r compression tank/home

Примечание –

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


Для получения дополнительной информации о команде zfs см. zfs(1M).

Запрос свойств ZFS

Наиболее простым способом запроса значений свойств является выполнение команды zfs list. Для получения дополнительной информации см.Вывод базовой информации ZFS. Однако для сложных запросов и сценариев необходимо использовать команду zfs get. Это позволит получить более подробную информацию в требуемом формате.

Команда zfs get используется для извлечения свойств набора данных. Ниже приведен пример извлечения одного свойства набора данных:


# zfs get checksum tank/ws
NAME             PROPERTY       VALUE                      SOURCE
tank/ws          checksum       on                         default

В четвертом столбце SOURCE указывается, где было установлено значение свойства. Возможные источники перечислены в следующей таблице.

Таблица 6–3 Возможные значения SOURCE (zfs get)

Источник 

Описание 

default

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

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

Это свойство наследуется от родительского элемента имя_набора_данных.

local

Это свойство было явно установлено для этого набора данных с помощью команды zfs set.

temporary

Это свойство было указано с помощью параметра zfs mount -o и действует только на время монтирования. Для получения дополнительной информации о временных свойствах точки монтирования см. Использование временных свойств монтирования.

- (none) 

Это свойство доступно только для чтения. Его значение генерируется ZFS. 

Для извлечения всех свойств набора данных используется специальное ключевое слово all. Ниже приведены примеры использования ключевого слова all для извлечения всех существующих свойств набора данных:


# zfs get all pool
NAME  PROPERTY              VALUE                  SOURCE
pool  type                  filesystem             -
pool  creation              Thu Aug 27  9:33 2009  -
pool  used                  72K                    -
pool  available             66.9G                  -
pool  referenced            21K                    -
pool  compressratio         1.00x                  -
pool  mounted               yes                    -
pool  quota                 none                   default
pool  reservation           none                   default
pool  recordsize            128K                   default
pool  mountpoint            /pool                  default
pool  sharenfs              off                    default
pool  checksum              on                     default
pool  compression           on                     default
pool  atime                 on                     default
pool  devices               on                     default
pool  exec                  on                     default
pool  setuid                on                     default
pool  readonly              off                    default
pool  zoned                 off                    default
pool  snapdir               hidden                 default
pool  aclmode               groupmask              default
pool  aclinherit            restricted             default
pool  canmount              on                     default
pool  shareiscsi            off                    default
pool  xattr                 on                     default
pool  copies                1                      default
pool  version               4                      -
pool  utf8only              off                    -
pool  normalization         none                   -
pool  casesensitivity       sensitive              -
pool  vscan                 off                    default
pool  nbmand                off                    default
pool  sharesmb              off                    default
pool  refquota              none                   default
pool  refreservation        none                   default
pool  primarycache          all                    default
pool  secondarycache        all                    default
pool  usedbysnapshots       0                      -
pool  usedbydataset         21K                    -
pool  usedbychildren        51K                    -
pool  usedbyrefreservation  0                      -

Примечание –

Свойства casesensitivity, nbmand, normalization, sharemgrutf8only и vscan имеют фиксированные значения и не поддерживаются в выпуске Solaris 10.


Параметр -s команды zfs get позволяет указать выводимые свойства по типу источника. При выборе этого параметра выводится список требуемых типов источников через запятую. Отображаются только свойства с указанным типом источника. Допустимы следующие типы источника: local, default, inherited, temporary иnone. В следующем примере отображены все свойства, настроенные локально для пула.


# zfs get -s local all pool
NAME             PROPERTY      VALUE                      SOURCE
pool             compression   on                         local

Все перечисленные параметры могут комбинироваться с параметром -r для рекурсивного вывода указанных свойств для всех дочерних элементов указанного набора данных. Ниже приведен пример рекурсивного отображения всех временных свойств во всех наборах данных в tank:


# zfs get -r -s temporary all tank
NAME             PROPERTY       VALUE                      SOURCE
tank/home          atime          off                      temporary
tank/home/bonwick  atime          off                      temporary
tank/home/marks    atime          off                      temporary

Описанная функция позволяет выполнять запросы с помощью команды zfs get без указания целевой файловой системы, которые будут работать во всех пулах или файловых системах. Пример:


# zfs get -s local all
tank/home               atime          off                    local
tank/home/bonwick       atime          off                    local
tank/home/marks         quota          50G                    local

Для получения дополнительной информации о команде zfs get см. zfs(1M).

Запрос свойств ZFS для использования в сценариях

Команда zfs get поддерживает параметры и , предназначенные для сценариев. Параметр -H указывает на то, что следует пропустить информацию заголовка и преобразовать все пробелы в символы табуляции. Однородное заполнение пустого пространства обеспечивает пригодность данных для анализа без дополнительной обработки. Для настройки вывода используется параметр -o. После этого параметра указывается список выводимых значений через запятую. Все свойства, определенные в разделе Введение в свойства ZFS, а также литералы name, value, property и source можно включить в список параметра -o.

В следующем примере показано извлечение одиночного значения с использованием параметра -H и команды zfs get.


# zfs get -H -o value compression tank/home
on

Параметр -p представляет числовые значения в виде точных значений. Например, 1 МБ будет показано как 1000000. Этот параметр используется следующим образом:


# zfs get -H -o value -p used tank/home
182983742

Параметр -r можно использовать с любыми вышеупомянутыми параметрами для рекурсивного извлечения запрашиваемых значений для всех дочерних элементов. В следующем примере параметры -r, -o и- H использованы для извлечения имени набора данных и значения свойства used для export/home и дочерних элементов (без вывода заголовка):


# zfs get -H -o name,value -r used export/home
export/home     5.57G
export/home/marks       1.43G
export/home/maybee      2.15G