Управление свойствами набора данных осуществляется с помощью подкоманд set, inherit и get команды 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 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 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 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 |