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

Настройка резервируемого пространства в файловых системах ZFS

Настройка резервируемого пространства ZFS подразумевает распределение пространства пула, гарантированно доступного набору данных. Таким образом, зарезервировать для набора данных пространство, которое в настоящее время не доступно в пуле, невозможно. Общий объем всех указанных резервирований не может превышать объем неиспользуемого пространства в пуле. Для настройки и просмотра резервируемого пространства ZFS используются команды zfs set и zfs get. Пример:


# zfs set reservation=5G tank/home/moore
# zfs get reservation tank/home/moore
NAME             PROPERTY      VALUE                      SOURCE
tank/home/moore  reservation   5.00G                      local

Настройка резервируемого пространства ZFS может повлиять на выходные данные команды zfs list. Пример:


# zfs list
NAME                   USED  AVAIL  REFER  MOUNTPOINT
tank/home             5.00G  33.5G  8.50K  /export/home
tank/home/moore       15.0K  10.0G  8.50K  /export/home/moore

Обратите внимание, что система tank/home использует пространство объемом 5 ГБ, несмотря на то, что общий объем пространства, доступного для tank/home и ее дочерних элементов, значительно меньше 5 ГБ. Используемое пространство отражает пространство, зарезервированное для tank/home/moore. Настройки резервируемого пространства учитываются при отображении занятого пространства родительского набора данных и проверяются на соблюдение установленных квот и прочих резервирований.


# zfs set quota=5G pool/filesystem
# zfs set reservation=10G pool/filesystem/user1
cannot set reservation for 'pool/filesystem/user1': size is greater than 
available space

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

Настройки резервируемого пространства не суммируются. Это означает, что при втором вызове команды zfs set для определения резервируемого пространства суммирование зарезервированного объема не выполняется. Напротив, вторая настройка заменяет собой первую.


# zfs set reservation=10G tank/home/moore
# zfs set reservation=5G tank/home/moore
# zfs get reservation tank/home/moore
NAME             PROPERTY      VALUE                      SOURCE
tank/home/moore  reservation   5.00G                      local

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


# zfs set refreservation=10g profs/prof1
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                    10.0G  23.2G    19K  /profs
profs/prof1                10G  33.2G    18K  /profs/prof1

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


# zfs set reservation=20g profs/prof1
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
profs                    20.0G  13.2G    19K  /profs
profs/prof1                10G  33.2G    18K  /profs/prof1

Обычное резервирование учитывается в пространстве, используемом родительским элементом.

В приведенном выше примере команда zfs list отображает меньшую квоту (10 и 20 ГБ). Чтобы увидеть обе квоты, используйте команду zfs get. Пример:


# zfs get reservation,refreserv profs/prof1
NAME         PROPERTY        VALUE        SOURCE
profs/prof1  reservation     20G          local
profs/prof1  refreservation  10G          local

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