Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1309 / 258 | Оценка: 4.34 / 3.65 | Длительность: 21:13:00
Лекция 8:

Концепция, устройство и администрирование файловой системы ZFS

< Лекция 7 || Лекция 8: 123456 || Лекция 9 >

Управление ZFS

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

Итак, к делу: как создать пул памяти ZFS, как смонтировать файловые системы и как модифицировать созданные системы?

Создание и уничтожение пулов и файловых систем

Создание пула giant из двух дисков – c1t0d0 и c1t1d0

# zpool create giant c1t0d0 c1t1d0

Система ищет указанные диски в каталоге /dev/dsk, и помечает их как принадлежащие одному пулу.

Так создается зеркальный пул (дисков в зеркале может быть больше, чем два):

# zpool create giant mirror c1d0 c2d0

Массив RAID-Z из нескольких дисков создается командой

# zpool create giant raidz c1t0d0 c2t0d0 c3t0d0 c4t0d0

Для создания массива с двойным контролем четности надо вместо raidz указать raidz2.

Уничтожить пул можно командой zpool destroy. Осторожно: она уничтожает пул, даже если в нем содержатся смонтированные наборы данных.

# zpool destroy giant

Добавление накопителей

Добавление устройства в пул – команда zpool add ; например, для добавления еще двух устройств к зеркалу giant надо скомандовать

zpool add giant mirror c2t1d0 c2t2d0

После создания пула пора создавать файловые системы, которые будут размещаться в нем – командой zfs create, которой требуется аргумент – имя файловой системы; оно указывается как путь, начиная с имени пула: pool-name/[filesystem-name/]filesystem-name

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

Так мы создаем файловую систему oracle в файловой системе giant/home.

# zfs create giant/home/oracle

Если создание файловой системы прошло успешно, система ZFS автоматически монтирует ее. По умолчанию точкой монтирования считается путь, указанный в zfs create. В нашем примере вновь созданная файловая система oracle монтируется в /giant/home/oracle.

Для получения информации о состоянии систем в пуле используют команду zpool list:

# zpool list
NAME     SIZE     USED     AVAIL   CAP   HEALTH   ALTROOT
dbspace  340G     162G     178G    47%   ONLINE   -
samba    204G     134G     69.9G   65%   ONLINE   -
usrdb    68G      27.3G    40.7G   40%   ONLINE   -

Включить сжатие для файловой системы (в примере – home/archive ) можно командой

# zfs set compression=on concat/archive

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

Для создания снимка файловой системы достаточно дать такую команду:

zfs snapshot test/opt@18Feb08

В этой команде указывается имя файловой системы, снимок которой мы хотим сделать, и сразу за ним, после символа @, указывается имя снимка. Снимок делается практически мгновенно, так как никакого физического копирования или переноса данных в момент создания снимка не производится. В дальнейшем мы можем проверить наличие такого снимка в файловой системе c помощью команды zfs list.

Файловую систему, для которой существуют снимки, нельзя удалить, не удалив предварительно все ее снимки.

Кроме снимков, можно создавать клоны файловых систем, которые фактически являются "снимками", смонтированными не только для чтения, но и для записи. На этом основано клонирование зон с использованием клонов ZFS (см. лекцию 6 курса "Системное администрирование ОС Solaris 10").

Снимок можно переслать на другое устройство для резервного копирования командой zfs send:

zfs send test/opt@18Feb08 > backup

В этом примере мы выполнили копирование снимка в файл с именем backup, но вместо файла мы могли использовать любое устройство, в том числе накопитель на магнитной ленте.

Для восстановления файловой системы (равно и снимка) из такой резервной копии следует дать команду zfs receive:

zfs receive -F test/opt@snap < backup

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

Откат всей файловой системы к состоянию, в котором она пребывала на момент снимка, выполняется командой zfs rollback:

zfs rollback test/opt@18Feb08

После выполнения этой команды файловая система test/opt будет иметь в точности такое же содержание, что и в момент создания ее снимка с именем 18Feb08.

Квотирование и резервирование пространства

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

Квотирование сейчас поддерживается в любой современной файловой системе, а вот в ZFS введена еще одна интересная возможность: резервирование места для файлов пользователя. В самом деле, если вы знаете, что пользователь oracle или mail нуждается в хранении большого количества данных, удобно гарантировать ему это хранение независимо от чьих-то аппетитов по выкачиванию видео из Сети.

Для резервирования в ZFS следует дать несколько простых команд (только надо помнить, что зарезервировать можно только свободное место; если его уже не хватает, то вначале надо удалить лишнее):

# zfs set reservation=4G pool/home/oracle
# zfs get reservation pool/home/oracle
NAME              PROPERTY         VALUE         SOURCE
pool/home/oracle  reservation      4.00G         local

Нельзя зарезервировать для пользователя больше места, чем дозволено квотой. При резервировании размер зарезервированного пространства определяется последней по порядку командой zfs set reservation, значения последовательных команд НЕ складываются.

# zfs set quota=5G pool/filesystem
# zfs set reservation=10G pool/filesystem/user1
cannot set reservation for 'pool/filesystem/user1': size is
greater than available space

Открытый код – в массы (перенос ZFS в другие системы UNIX)

В данный момент ZFS портирована во FreeBSD 7.0-RELEASE, однако с некоторыми ограничениями по сравнению с Solaris [ [ 8.7 ] ]:

  1. ZFS скомпилирована в качестве модуля ядра и доступна пока только для архитектуры i386; поддержка для amd64 будет добавлена в ближайшем будущем, другие архитектуры тоже планируется поддерживать;
  2. Не поддерживается разделение ZVOL на базе iSCSI;
  3. Не поддержтиваются ACL и расширенные атрибуты;
  4. С устройства под ZFS нельзя загрузить систему.

Перенос ZFS в Linux затруднен по лицензионным соображениям, потому что ядро Linux распространяется с лицензией GPL, запрещающий присоединение к нему кода, который распространяется с отличной от GPL лицензией. Код Solaris, и в частности код ZFS, тоже открыт для всех, но на условиях лицензии CDDL. В рамках программы Google Summer of Code был поддержан проект портирования ZFS под Linux таким образом, чтобы код поддержки файловой системы выполнялся в пространстве пользователя (user space), а не в пространстве ядра (kernel space). Для этого необходимо иметь ядро версии 2.6.14 либо более свежее, так как в нем можно скомпилировать модуль FUSE, позволяющий исполнять код файловой системы таким образом. Однако в такой конфигурации следует ожидать заметного снижения скорости работы файловой системы.

В Mac OS X Leopard (Build 9a321), вышедшем в декабре 2006 года, впервые в истории Mac OS была встроена поддержка ZFS.

Дополнительные материалы для чтения о ZFS

ZFS Best Parctices Guide: http://www.solarisinternals.com/wiki/index.php/ZFS_Best_Practices_Guide#ZFS_Management_Tools_.2F_Observability

Manual setup to boot ZFS on x86: http://www.opensolaris.org/os/community/zfs/boot/zfsboot-manual/

Администрирование ZFS (перевод на русский язык): документ можно скачать со страницы http://dlc.sun.com/osol/g11n/downloads/docs/current/ в виде архива с .html-файлами.

Литература

  1. Bernd PanzerSteindel, Data integrity, http://indico.cern.ch/getFile.py/access?contribId=3&sessionId=0&resId=1&materialId=paper&confId=13797
  2. ZFS on-disk specification, 2006, http://opensolaris.org/os/community/zfs/docs/ondiskformat0822.pdf
  3. http://en.wikipedia.org/wiki/ZFS
  4. Seth Lloyd, Ultimate physical limits to computation, 2000
  5. Jeff Bonwick, http://blogs.sun.com/bonwick/
  6. http://blogs.sun.com/roch/entry/zfs_to_ufs_performance_comparison
  7. Pawel Jakub Dawidek, 2007, http://lists.freebsd.org/pipermail/freebsdcurrent/2007-April/070544.html
< Лекция 7 || Лекция 8: 123456 || Лекция 9 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.

Александр Васильченко
Александр Васильченко
Россия
Денис Гайдуль
Денис Гайдуль
Россия, Подольск