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

Отправка и получение потоковых представлений сложных моментальных снимков ZFS

В этом разделе описано использование параметров команды zfs send - I и - R для отправки и получения потоковых представлений сложных моментальных снимков.

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


Пример 7–1 Примеры: отправка и получение потоковых представлений сложных моментальных снимков ZFS

Группу инкрементных снимков можно объединить в один снимок с помощью команды zfs send с параметром - I. Пример:


# zfs send -I pool/fs@snapA pool/fs@snapD > /snaps/fs@all-I

Удалите снимки B, C и D.


# zfs destroy pool/fs@snapB
# zfs destroy pool/fs@snapC
# zfs destroy pool/fs@snapD

Получите комбинированный снимок.


# zfs receive -d -F pool/fs < /snaps/fs@all-I
# zfs list
NAME                      USED  AVAIL  REFER  MOUNTPOINT
pool                      428K  16.5G    20K  /pool
pool/fs                    71K  16.5G    21K  /pool/fs
pool/fs@snapA              16K      -  18.5K  -
pool/fs@snapB              17K      -    20K  -
pool/fs@snapC              17K      -  20.5K  -
pool/fs@snapD                0      -    21K  -

Команду zfs send -I можно также использовать, чтобы объединить снимок и снимок клона для создания комбинированного набора данных. Пример:


# zfs create pool/fs
# zfs snapshot pool/fs@snap1
# zfs clone pool/fs@snap1 pool/clone
# zfs snapshot pool/clone@snapA
# zfs send -I pool/fs@snap1 pool/clone@snapA > /snaps/fsclonesnap-I
# zfs destroy pool/clone@snapA
# zfs destroy pool/clone
# zfs receive -F pool/clone < /snaps/fsclonesnap-I

Команду zfs send - R используют для репликации файловой системы ZFS и всех дочерних файловых систем вплоть до именованного снимка. При получении сохраняются все свойства, снимки, дочерние файловые системы и клоны.

В следующем примере снимки создаются для пользовательских файловых систем. Для всех пользовательских снимков создается один поток репликации. Затем исходные файловые системы и снимки удаляются и восстанавливаются.


# zfs snapshot -r users@today
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
users               187K  33.2G    22K  /users
users@today            0      -    22K  -
users/user1          18K  33.2G    18K  /users/user1
users/user1@today      0      -    18K  -
users/user2          18K  33.2G    18K  /users/user2
users/user2@today      0      -    18K  -
users/user3          18K  33.2G    18K  /users/user3
users/user3@today      0      -    18K  -
# zfs send -R users@today > /snaps/users-R
# zfs destroy -r users
# zfs receive -F -d users < /snaps/users-R
# zfs list
NAME                USED  AVAIL  REFER  MOUNTPOINT
users               196K  33.2G    22K  /users
users@today            0      -    22K  -
users/user1          18K  33.2G    18K  /users/user1
users/user1@today      0      -    18K  -
users/user2          18K  33.2G    18K  /users/user2
users/user2@today      0      -    18K  -
users/user3          18K  33.2G    18K  /users/user3
users/user3@today      0      -    18K  -

Можно использовать команду zfs send -Rдля репликации набора данных users и отправки реплицированного потока в другой пул users2.


# zfs create users2 mirror c0t1d0 c1t1d0
# zfs receive -F -d users2 < /snaps/users-R
# zfs list
NAME                 USED  AVAIL  REFER  MOUNTPOINT
users                224K  33.2G    22K  /users
users@today             0      -    22K  -
users/user1           33K  33.2G    18K  /users/user1
users/user1@today     15K      -    18K  -
users/user2           18K  33.2G    18K  /users/user2
users/user2@today       0      -    18K  -
users/user3           18K  33.2G    18K  /users/user3
users/user3@today       0      -    18K  -
users2               188K  16.5G    22K  /users2
users2@today            0      -    22K  -
users2/user1          18K  16.5G    18K  /users2/user1
users2/user1@today      0      -    18K  -
users2/user2          18K  16.5G    18K  /users2/user2
users2/user2@today      0      -    18K  -
users2/user3          18K  16.5G    18K  /users2/user3
users2/user3@today      0      -    18K  -

Удаленная репликация данных ZFS

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


# zfs send tank/cindy@today | ssh newsys zfs recv sandbox/restfs@today

Эта команда отправляет данные снимка tank/cindy@today и получает их в файловой системе sandbox/restfs, а также создает снимок restfs@today в системе newsys. В этом примере пользователь настроен на использование команды ssh в удаленной системе.