Репликация файловой системы linux

Как использовать моментальные снимки, клоны и репликацию в ZFS в Linux

В предыдущем уроке мы узнали, как создать zpool и файловую систему или набор данных ZFS. В этом руководстве я пошагово покажу вам, как работать со снимками, клонами и репликацией ZFS. Снимок, клон. и репликация — самые мощные функции файловой системы ZFS.

Снимки ZFS — обзор

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

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

Создание и удаление моментального снимка ZFS

К снимкам томов нельзя обращаться напрямую, но их можно клонировать, создавать резервные копии и выполнять откат. Создать и уничтожить моментальный снимок ZFS очень просто, для этого мы можем использовать команды zfs snapshot и zfs destroy.

Создайте пул с именем datapool.

# zpool create datapool mirror /dev/sdb /dev/sdc 
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
datapool 1.98G 65K 1.98G - 0% 0% 1.00x ONLINE -

Теперь у нас есть пул под названием datapool, затем нам нужно создать одну файловую систему ZFS для имитации функции моментальных снимков.

# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME USED AVAIL REFER MOUNTPOINT
datapool 93.5K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs

Чтобы создать снимок файловой системы, мы можем использовать команду zfs snapshot, указав пул и имя снимка. Мы можем использовать параметр -r, если хотим создать снимок рекурсивно. Имя моментального снимка должно удовлетворять следующим требованиям к именованию:

# zfs snapshot datapool/ 0 - 19.5K -

Моментальный снимок для пула данных/документов создан.

Читайте также:  Чем хорош арч линукс

Чтобы уничтожить снимок, мы можем использовать команду zfs destroy как обычно.

# zfs destroy datapool/
# zfs list -t snapshot
no datasets available

Откат снимка

Для моделирования нам нужно создать тестовый файл в каталоге /docs.

# echo "version 1" > /docs/data.txt
# cat /docs/data.txt
version 1
# zfs snapshot datapool/ 9K - 19.5K -

Теперь меняем содержимое /docs/data.txt

# echo "version 2" > /docs/data.txt
# cat /docs/data.txt
version 2

Мы можем полностью вернуться к более старому моментальному снимку, который даст нам копию на момент времени, когда был сделан снимок.

# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/
# cat /docs/data.txt
version 1

Как мы видим, содержимое data.txt возвращается к предыдущему содержимому.

Если мы хотим переименовать снимок, мы можем использовать команду zfs rename.

# zfs rename datapool/ 9.50K - 19.5K -

Примечание: набор данных не может быть уничтожен, если существуют моментальные снимки этого набора данных, но мы можем использовать параметр -r, чтобы переопределить это.

# zfs destroy datapool/docs
cannot destroy 'datapool/docs': filesystem has children
use '-r' to destroy the following datasets:
datapool/
# zfs destroy -r datapool/docs
# zfs list -t snapshot
no datasets available

Обзор клонов ZFS

Клон — это доступный для записи том или файловая система, исходное содержимое которого совпадает с набором данных, из которого он был создан.

Создание и уничтожение клона ZFS

Клоны могут быть созданы только из снимка, а снимок нельзя удалить, пока вы не удалите клон, основанный на этом снимке. Чтобы создать клон, используйте команду zfs clone.

# zfs create datapool/docs -o mountpoint=/docs
# zfs list -r datapool
NAME USED AVAIL REFER MOUNTPOINT
datapool 93.5K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
# mkdir /docs/folder
# ls /docs/
folder1 folder2 folder3 folder4 folder5
# zfs snapshot datapool/ 0 - 19K -

Теперь мы создаем клон из пула данных снапшотов/[email

# zfs clone datapool/ datapool/pict
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
datapool 166K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
datapool/pict 1K 1.92G 19K /datapool/pict

Процесс клонирования завершен, пул данных моментального снимка/[email был клонирован в /datapool/pict. Когда мы проверяем содержимое каталога /datapool/pict, оно должно быть таким же, как /datapool/docs.

# ls /datapool/pict
folder1 folder2 folder3 folder4 folder5

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

# zfs destroy datapool/': snapshot has dependent clones
use '-R' to destroy the following datasets:
datapool/pict

Наконец мы можем уничтожить снимок.

# zfs destroy datapool/
# zfs list -t snapshot
no datasets available

Обзор репликации ZFS

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

Читайте также:  Linux replace window manager

Настройка репликации ZFS

В этом разделе я хочу показать вам, как реплицировать набор данных из пула данных в резервный пул, но данные можно не только хранить в другом пуле, подключенном к локальной системе, но и отправлять их по сети в другую систему. Для репликации данных используются команды zfs send и zfs receive.

Создайте еще один пул с именем backuppool.

# zpool create backuppool mirror sde sdf
# zpool list
NAME SIZE ALLOC FREE EXPANDSZ FRAG CAP DEDUP HEALTH ALTROOT
backuppool 1.98G 50K 1.98G - 0% 0% 1.00x ONLINE -
datapool 1.98G 568K 1.98G - 0% 0% 1.00x ONLINE -
# zpool status 
pool: datapool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
datapool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sdb ONLINE 0 0 0
sdc ONLINE 0 0 0

errors: No known data errors

пул: backuppool
состояние: ONLINE
scan: ничего не запрошено
config:

NAME STATE READ WRITE CKSUM
backuppool ONLINE 0 0 0
Mirror-0 ONLINE 0 Mirror-0 ONLINE 0
sde ОНЛАЙН 0 0 0
sdf ОНЛАЙН 0 0 0

ошибки: нет известных ошибок данных

Создайте набор данных, который хорошо реплицируется.

# zfs snapshot datapool/ 0 - 19K -
# ls /docs/
folder1 folder2 folder3 folder4 folder5

Пришло время сделать репликацию.

# zfs send datapool/ | zfs receive backuppool/backup
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
backuppool 83K 1.92G 19K /backuppool
backuppool/backup 19K 1.92G 19K /backuppool/backup
datapool 527K 1.92G 19K /datapool
datapool/docs 19K 1.92G 19K /docs
# ls /backuppool/backup
folder1 folder2 folder3 folder4 folder5

Пул данных набора данных/[электронная почта защищена] успешно реплицирован в резервный пул/резервное копирование.

Чтобы реплицировать набор данных на другой компьютер, мы можем использовать следующую команду:

# zfs send datapool/ | ssh otherserver zfs recv backuppool/backup

Заключение

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

Читайте также:  Cisco на базе linux

Источник

Оцените статью
Adblock
detector