Краткий обзор снимков ZFS

Ответить
admin
Администратор
Сообщения: 198
Зарегистрирован: 05 янв 2011, 04:19

Краткий обзор снимков ZFS

Сообщение admin »

Краткий обзор снимков ZFS

http://docs.sun.com/app/docs/doc/820-08 ... =ru&a=view

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

Снимки ZFS обладают следующими характеристиками.

* Снимки сохраняются при перезагрузке системы.
* Теоретически максимальное количество снимков составляет 264.
* Не требуется выделенное вспомогательное запоминающее устройство. Дисковое пространство для снимков берется из того же пула устройств хранения данных, в котором размещена файловая система-источник снимка.
* Рекурсивные снимки создаются быстро в рамках одной элементарной операции. Снимки создаются все вместе (одновременно) или не создаются вообще. Преимущество элементарных снимков состоит в том, что данные снимка всегда извлекаются в один и тот же момент времени даже из дочерних файловых систем.

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

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

filesystem@snapname
volume@snapname

Имя снимка должно соответствовать соглашениям по присвоению имен, описанным в разделе Требования к именованию компонентов ZFS.

В следующем примере создается снимок tank/home/ahrens с именем friday.

# zfs snapshot tank/home/ahrens@friday
При помощи параметра -r можно создать снимки для всех дочерних файловых систем. Пример:

# zfs snapshot -r tank/home@now
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
tank/home@now 0 - 29.5K -
tank/home/ahrens@now 0 - 2.15M -
tank/home/anne@now 0 - 1.89M -
tank/home/bob@now 0 - 1.89M -
tank/home/cindys@now 0 - 2.15M -
Снимки не имеют настраиваемых свойств. В отношении снимка также не могут применяться свойства набора данных.

# zfs set compression=on tank/home/ahrens@tuesday
cannot set compression property for 'tank/home/ahrens@tuesday': snapshot
properties cannot be modified

Для уничтожения снимков используется команда zfs destroy. Пример:

# zfs destroy tank/home/ahrens@friday

При наличии снимков набора данных этот набор не может быть уничтожен. Пример:

# zfs destroy tank/home/ahrens
cannot destroy 'tank/home/ahrens': filesystem has children
use '-r' to destroy the following datasets:
tank/home/ahrens@tuesday
tank/home/ahrens@wednesday
tank/home/ahrens@thursday

Кроме того, если были созданы клоны снимка, необходимо их уничтожить перед уничтожением снимка.

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

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

# zfs rename tank/home/cindys@083006 tank/home/cindys@today

Следующий краткий синтаксис эквивалентен полному синтаксису переименования снимка, приведенному в примере выше.

# zfs rename tank/home/cindys@083006 today

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

# zfs rename tank/home/cindys@today pool/home/cindys@saturday
cannot rename to 'pool/home/cindys@today': snapshots must be part of same
dataset

Можно рекурсивно переименовывать снимки с помощью команды zfs rename -r. Пример:

# zfs list
NAME USED AVAIL REFER MOUNTPOINT
users 270K 16.5G 22K /users
users/home 76K 16.5G 22K /users/home
users/home@yesterday 0 - 22K -
users/home/markm 18K 16.5G 18K /users/home/markm
users/home/markm@yesterday 0 - 18K -
users/home/marks 18K 16.5G 18K /users/home/marks
users/home/marks@yesterday 0 - 18K -
users/home/neil 18K 16.5G 18K /users/home/neil
users/home/neil@yesterday 0 - 18K -
# zfs rename -r users/home@yesterday @2daysago
# zfs list -r users/home
NAME USED AVAIL REFER MOUNTPOINT
users/home 76K 16.5G 22K /users/home
users/home@2daysago 0 - 22K -
users/home/markm 18K 16.5G 18K /users/home/markm
users/home/markm@2daysago 0 - 18K -
users/home/marks 18K 16.5G 18K /users/home/marks
users/home/marks@2daysago 0 - 18K -
users/home/neil 18K 16.5G 18K /users/home/neil
users/home/neil@2daysago 0 - 18K -

Просмотр и расположение снимков ZFS

Вывод списков снимков в выводе команды zfs list можно включить или отключить с помощью свойства пула listsnapshots. По умолчанию это свойство включено.

Если это свойство отключено, для вывода данных о снимках можно воспользоваться командой zfs list -t snapshot. Или же требуется активировать свойство пула listsnapshots. Пример:

# zpool get listsnapshots tank
NAME PROPERTY VALUE SOURCE
tank listsnapshots on default
# zpool set listsnapshots=off tank
# zpool get listsnapshots tank
NAME PROPERTY VALUE SOURCE
tank listsnapshots off local

Снимки файловых систем будут доступны в каталоге .zfs/snapshot в корне файловой системы. Например, если tank/home/ahrens монтируется в /home/ahrens, то данные снимка tank/home/ahrens@thursday доступны в каталоге /home/ahrens/.zfs/snapshot/thursday .

# ls /tank/home/ahrens/.zfs/snapshot
tuesday wednesday thursday

Можно вывести список снимков:

# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
pool/home/anne@monday 0 - 780K -
pool/home/bob@monday 0 - 1.01M -
tank/home/ahrens@tuesday 8.50K - 780K -
tank/home/ahrens@wednesday 8.50K - 1.01M -
tank/home/ahrens@thursday 0 - 1.77M -
tank/home/cindys@today 8.50K - 524K -

Можно вывести список снимков, созданных для определенной файловой системы:

# zfs list -r -t snapshot -o name,creation tank/home
NAME CREATION
tank/home/ahrens@tuesday Mon Aug 31 11:03 2009
tank/home/ahrens@wednesday Mon Aug 31 11:03 2009
tank/home/ahrens@thursday Mon Aug 31 11:03 2009
tank/home/cindys@now Mon Aug 31 11:04 2009

Учет пространства снимков

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

Свойство referenced пространства снимка совпадает с аналогичным свойством файловой системы на момент создания снимка.

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

$ zfs list -o space
NAME AVAIL USED USEDSNAP USEDDS USEDREFRESERV USEDCHILD
rpool 60.6G 6.37G 0 97K 0 6.37G
rpool/ROOT 60.6G 4.87G 0 21K 0 4.87G
rpool/ROOT/zfs1009BE 60.6G 4.87G 0 4.87G 0 0
rpool/dump 60.6G 1.50G 0 1.50G 0 0
rpool/swap 60.6G 16K 0 16K 0 0

Описание этих свойств приведено в разделе Таблица 6–1.
Откат снимка ZFS

Команда zfs rollback используется для отмены всех изменений, внесенных с момента создания определенного снимка. Файловая система возвращается в состояние, в котором она находилась на момент создания снимка. По умолчанию эта команда позволяет выполнить откат только к последнему созданному снимку.

Для возврата к какому-либо из предшествующих снимков необходимо уничтожить все промежуточные снимки. Для уничтожения предшествующих снимков используется параметр -r.

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

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

В следующем примере для файловой системы tank/home/ahrens выполняется откат к снимку tuesday:

# zfs rollback tank/home/ahrens@tuesday
cannot rollback to 'tank/home/ahrens@tuesday': more recent snapshots exist
use '-r' to force deletion of the following snapshots:
tank/home/ahrens@wednesday
tank/home/ahrens@thursday
# zfs rollback -r tank/home/ahrens@tuesday

В приведенном выше примере снимки wednesday и thursday удаляются с целью отката к предшествующему снимку tuesday.

# zfs list -r -t snapshot -o name,creation tank/home/ahrens
NAME CREATION
tank/home/ahrens@tuesday Wed Aug 27 16:35 2008
Ответить