Spec-Zone .ru
спецификации, руководства, описания, API
|
Поскольку zfs send
и zfs recv
используйте потоки,
чтобы обмениваться данными, можно использовать их, чтобы тиражировать информацию от одной системы до другого,
объединяясь zfs send
, ssh
, и zfs
recv
.
Например, чтобы скопировать снимок scratchpool
файловую систему к новой файловой
системе вызывают slavepool
на новом сервере Вы использовали бы следующую команду.
Эта последовательность комбинирует снимок scratchpool
, передача к ведомой машине
(использующий ssh с учетными данными входа в систему), и
восстановление снимка на ведомом устройстве, используя zfs recv:
root-shell> zfs send scratchpool@snap1 |sshid
@host
pfexec zfs recv -F slavepool
Первая часть конвейера, zfs send scratchpool@snap1
, передает снимок потоком. ssh
команда, и команда, которую это выполняет на другом сервере, pfexec zfs recv -F slavepool
, получает переданные потоком данные снимка и пишет это в
slavepool. В этом экземпляре я определил -F
опция, которая вынуждает данные снимка
быть примененными, и является поэтому разрушительной. Это прекрасно, поскольку я создаю первую версию своей
тиражированной файловой системы.
На ведомой машине тиражированная файловая система содержит тот же самый контент:
root-shell> ls -al /slavepool/total 23drwxr-xr-x 6 root root 7 Nov 8 09:13 ./drwxr-xr-x 29 root root 34 Nov 9 07:06 ../drwxr-xr-x 31 root bin 50 Jul 21 07:32 DTT/drwxr-xr-x 4 root bin 5 Jul 21 07:32 SUNWmlib/drwxr-xr-x 14 root sys 16 Nov 5 09:56 SUNWspro/drwxrwxrwx 19 1000 1000 40 Nov 6 19:16 emacs-22.1/
Как только снимок был создан, чтобы синхронизировать файловую систему снова, Вы создаете новый снимок и затем
используете инкрементную функцию снимка zfs send
отправить изменения между этими
двумя снимками к ведомой машине снова:
root-shell> zfs send -i scratchpool@snapshot1 scratchpool@snapshot2 |sshid
@host
pfexec zfs recv slavepool
Эта работа только успешно выполняется, если файловая система на ведомой машине не была изменена вообще.
Невозможно применить инкрементные изменения к целевой файловой системе, которая изменилась. В примере выше,
ls
команда вызвала бы проблемы, изменяя метаданные, такие как прошлое время доступа
для файлов или каталогов.
Чтобы предотвратить изменения на ведомой файловой системе, установите файловую систему на ведомом устройстве, чтобы быть только для чтения:
root-shell> zfs set readonly=on slavepool
Установка readonly
средства, что невозможно изменить файловую систему на ведомом
устройстве нормальными средствами, включая метаданные файловой системы. Операции, которые обычно обновляли бы
метаданные (как наш ls
) тихо выполните их функцию, не пытаясь обновить состояние
файловой системы.
В основном ведомая файловая система является только статической копией исходной файловой системы. Однако, даже когда конфигурирующийся к быть только для чтения, файловой системе можно было примениться к снимкам это. С набором файловой системы к только для чтения, запускает повторно начальную копию:
root-shell> zfs send scratchpool@snap1 |sshid
@host
pfexec zfs recv -F slavepool
Теперь можно произвести изменения в исходной файловой системе и тиражировать их в ведомое устройство.