Главное меню
RSS трансляции
Наши новости могут транслироваться, используя rss.
rss1.0
rss2.0
rdf
FAQ
 FAQ #76
Back to Categories    Print this FAQ  Send a link to this FAQ to a friend pdf
Файловая система ZFS
Взято отсюда и чуть добавлено. Нвписано про солярис, но фря тоже умеет использовать этот тип фс, а мне он достался в VPS.

Заметил, что на Хабре много статей про ZFS. И вот, решил написать краткое руководство, как же этой ZFS пользоваться. В качестве ОС буду рассматривать Solaris, т.к. ZFS изначально разрабатывалась для Соляры да и познакомился с ZFS я именно там. Понимаю, что мало у кого стоит Open Solaris на десктопе, а администраторы Solaris и так должны это знать. Но может кому и пригодится.

Для начала, что же такое ZFS и в чем ее преимущества перед существующими файловыми системами.
Приведу лишь краткий список плюсов ZFS.

ZFS является 128 битной файловой системой. Максимальный размер пула — 16 экзабайт (18млн Терабайт) Максимальное количество файлов в одном пуле — 20х1012 .
ZFS является self-healing системой. ZFS использует 256-битный контрольные суммы для проверки данных.
Позволяет добавлять пулы или же наращивать емкость пула без остановки системы или же приложений
Очень гибкая организация RAID'ов.



Немного терминологии

checksum — Контрольная сумма. 256-разрядный хеш-код данных в блоке файловой системы.
clone — Клон. Файловая система, исходное содержимое которой идентично содержимому снапшота.
snapshot — Снимок. Образ файловой системы или тома в определенный момент времени, доступный только для чтения.
dataset — Набор данных. Общее название следующих объектов ZFS: клонов, файловых систем, снимков или томов. Каждый набор данных идентифицируется по уникальному имени в пространстве имен ZFS. Наборы данных определяются с помощью следующего формата: пул/путь[ @снимок]
pool — Пул. Логическая группа устройств, описывающая размещение и физические характеристики доступного пространства для хранения данных. Из пула берется пространство для наборов данных.
volume — Том. Набор данных, используемый для эмулирования физического устройства. Например, можно создать том ZFS в качестве устройства подкачки.



Собственно руковдство


В Solaris работа с ZFS идет в основном через 2 команды. Это zpool и zfs.

zpool — работа с пулами. Их создание, изменение, удаление и т.д.

zfs — работа с самой файловой системой.

Итак, из чего же можно создать пул? Да из чего угодно. От файлов под другой фс, до дисков в дисковом массиве.

Примеры создания пула MyPool

# Создание пула из файлов /zfs1/disk01 и /zfs1/disk02 созданных командой mkfile
zpool create MyPool /zfs1/disk01 /zfs1/disk02

# Создание пула используя обычный слайс
zpool create MyPool c1t0d0s0

# Создание пула c зеркалированием и использованием spare дисков.
zpool create MyPool mirror c1t0d0 c2t0d0 mirror c1t0d1 c2t0d1
zpool create MyPool mirror c1t0d0 c2t0d0 spare c3t0d0

Список ваших пулов и их статус можно посмотреть с помощью команда
# zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
MyPool 191M 94K 191M 0% ONLINE -

zpool status -v
pool: MyPool
state: ONLINE
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
MyPool ONLINE 0 0 0
/disk1 ONLINE 0 0 0
/disk2 ONLINE 0 0 0

Статусы могут быть следующие

DEGRADED — Один или несколько устройства верхнего уровня находятся в нерабочем состоянии, т.к. были отключены. Но дальнейшее функционирование возможно.
FAULTED — Один или несколько устройства верхнего уровня находятся в состоянии FAULT. Дальнейшее функционирование не возможно.
OFFLINE — Пул был отключен командой «zpool offline».
ONLINE — Пул находится в состоянии ONLINE и нормально функционирует.
REMOVED — Устройство (Пул) было физически удалено при работающей системе.
UNAVAIL — Устройство (Пул) недоступно.



Изменение пула MyPool


#Добавление и удаление элементов (дисков) из пула, не использующего зеркалирование осуществляется с помощью команд:
zpool add MyPool /zfs1/disk3
zpool remove MyPool /disk3

#Добавление и удаление элементов (дисков) из пула, c зеркалированиеv осуществляется с помощью команд:
zpool attach MyPool /disk1 /disk3
zpool detach MyPool /disk1 /disk3

#Ввод элемента в состояние offline с невозможностью чтения/записи до ввода в состояние online (используя ключ -t можно ввести элемент в состояние offline только до ребута)
zpool offline MyPool /disk1

Как это отобразится на Пуле в целом:
zpool status -v
pool: myzfs
state: DEGRADED
status: One or more devices has been taken offline by the administrator.
Sufficient replicas exist for the pool to continue functioning
in a degraded state.
action: Online the device using 'zpool online' or replace the device
with 'zpool replace'.
scrub: resilver completed with 0 errors on Tue Sep 11 13:39:25 2007
config:

NAME STATE READ WRITE CKSUM
myzfs DEGRADED 0 0 0
mirror DEGRADED 0 0 0
/disk1 OFFLINE 0 0 0
/disk2 ONLINE 0 0 0

#И обратно online
zpool online MyPool /disk1

#Замена одного элемента пула на другой
zpool replace MyPool /disk1 /disk3

Создание и работа с файловой системой


#Создаем файловую систему
zfs create MyPool/systemname

опцией -о мы можем выбрать точку монтирования, отличную от /MyPool/systemname

#Резервируем место под свою файловую систему
zfs set reservation=20m MyPool/systemname

#Устанавливаем квоту для вашей файловой системы, которую вы не сможете превысить
zfs set quota=20m MyPool/systemname

#Включаем компрессию.
zfs set compression=on MyPool/systemname

#Расшариваем нашу файловую систему.
zfs set sharenfs=on MyPool/systemname в NFS
zfs set sharesmb=on MyPool/systemname в SMB

#Снимаем снапшот
zfs snapshot MyPool/systemname@hostname

#Так как снапшот — это просто снимок системы в данный момент, то иногда стоит создавать клона.
zfs clone MyPool/systemname@hostnameyPool/systemname2

#Удаляем файловую систему. Если существуют файловые системы-наследники, надо использовать ключ -f
zfs destroy MyPool/systemname

Как видите, ничего сложного с ZFS на начальном этапе нет. Очень и очень гибкая штука.

__________________________________
# zfs snapshot storage/home@08-30-08

Заметьте, что снимок (snapshot) захватит реальную файловую систему, а не домашний каталог или файл. Символ @ отделяет имя файловой системы или имя тома от имени снимка. Когда возникнет необходимость восстановить пользовательские домашние каталоги, выполните следующую команду:

# zfs rollback storage/home@08-30-08

Чтобы получить список имеющихся в наличии снимков, выполните команду ls в каталоге .zfs/snapshot. Например, чтобы увидеть сделанный ранее снимок, выполните следующую команду:

# ls /storage/home/.zfs/snapshot

____________________________________________________________


Снапшоты, клоны и реплики в ZFS on Linux

Перевод: Алексей Федорчук

Пошаговое руководство по работе со снапшотами, клонами и репликами 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 с указанием имени пула и имени снапшота. Имя снапшота должно выглядеть так:

filesystem@snapname

или

volume@snapname

То есть:

# zfs snapshot datapool/docs@version1
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version1 0 - 19.5K -

Теперь снапшот datapool/docs создан.

Для удаления снапшота используется команда zfs destroy:

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

Откат снапшота

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

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

Затем:

# zfs snapshot datapool/docs@version1
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version1 9K - 19.5K -

Теперь изменим содержимое файла data.txt:

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

И теперь можно вернуть файловую систему в то состояние, в котором она была в момент создания предыдущей копии:

# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version1 9.50K - 19.5K -
# zfs rollback datapool/docs@version1
# cat /docs/data.txt
version 1

Из вывода последней команды можно видеть, что содержимое файла data.txt стало прежним (то есть соответствует версии 1).

Для переименования снапшота можно использовать команду zfs rename:

# zfs rename datapool/docs@version1 datapool/docs@version2
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@version2 9.50K - 19.5K -

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

# zfs destroy datapool/docs
cannot destroy 'datapool/docs': filesystem has children
use '-r' to destroy the following datasets:
datapool/docs@version2

А получится так:

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

Клоны 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/docs@today
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@today 0 - 19K -

Создание клона снапшота datapool/docs@today:

# zfs clone datapool/docs@today 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

Процесс клонирования закончен, снапшот datapool/docs@today был клонирован в datapool/pict. Проверка показывает, что содержимое их одинаково:

# ls /datapool/pict
folder1 folder2 folder3 folder4 folder5

После клонирования снапшота его нельзя удалить, пока не удалён клон:

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

Удаление клона:

# zfs destroy datapool/pict

Теперь, наконец, можно удалить снапшот:

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

Реплики ZFS: обзор

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

В этом разделе я хочу показать вам, как реплицировать набор данных из datapool в backuppool. Но можно не только хранить данные одного пула в другом локальном пуле, но и отправлять по сети в другую систему. Для репликации данных используются команды 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

pool: backuppool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
backuppool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
sde ONLINE 0 0 0
sdf ONLINE 0 0 0

errors: No known data errors

Создание набора данных для репликации:

# zfs snapshot datapool/docs@today
# zfs list -t snapshot
NAME USED AVAIL REFER MOUNTPOINT
datapool/docs@today 0 - 19K -
# ls /docs/
folder1 folder2 folder3 folder4 folder5

Настало время репликации:

# zfs send datapool/docs@today | 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

Набор данных datapool/docs@today успешно реплицирован в backuppool/backup.

Реплицирование набора данных на другую машину выполняется так:

# zfs send datapool/docs@today | ssh otherserver zfs recv backuppool/backup

Готово.
Заключение

Снапшоты, ктоны и реплиуи — самые мощные функции ZFS. Снапшоты используются для периодического создания копий файловых систем, клоны — для создания дублирующих наборов данных, реплики — для переноса набора данных из одного пула данных в другой на той же машине, или для переноса между машинами.
Views 1770 (Unique 693)
Member Rating : Not yet rated  
FAQ Posted by vampyr
Info Created: Monday 17 July 2017 - 04:27:52
Last Updated: Monday 17 July 2017 - 04:27:52
 
РадиоЭлектроника
Поиск Vampyr`s House!
Copyright © 1999-2014, Igor Muraviov. Все авторские права принадлежат их владельцам ( в случае указания) или владельцу сайта, если автор не указан.
Копирование материалов с сайта возможно только в случае размещения ссылки на первоисточник.
Protected by Copyscape DMCA Plagiarism Check