ZFS и Ubuntu 13.04

Алексей Федорчук
Ubuntu’вы страсти, 10.06.2013

Что такое ZFS, для чего предназначена и чем хороша — говорить не время и не место. Исходим из предположения, что читатель либо это уже знает и хочет её использовать, либо у него появилось желание с ней ознакомиться и поэкспериментировать. В обоих случаях первый шаг — обеспечить её поддержку системой.

Подключение репозитория

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

Чтобы задйствовать модули поддержки ZFS в Ubuntu для начала требуется подключить нужный PPA-репозиторий. Поскольку все последующие действия потребуют прав суперпользователя, перво-наперво обретаем их на длительное время командой

$ sudo -i

А затем собственно подключаем репозиторий:

# apt-add-repository ppa:zfs-native/daily

и обновляем кэш:

# apt-get update

Сборка модулей

Теперь собираем необходимые пакеты:

# apt-get install ubuntu-zfs

Поскольку в репозитории они существуют не в бинарном виде, а в виде исходников, приведённая команда потянет за собой весь необходимый инструментарий — gcc, bunutils и так далее. И сама сборка пакетов займёт некоторое время, зависящее от мощности машины. Но рано или поздно она закончится, и можно будет скомандовать

# modprobe zfs

Теперь можно выйти из режима суперпользователя и проверить результат командой

$ lsmod | grep zfs

вывод которой будет выглядеть примерно так:

zfs                  1158757  4
zcommon                51283  1 zfs
znvpair                81997  2 zfs,zcommon
zavl                   15011  1 zfs
zunicode              331226  1 zfs
spl                    88617  5 zfs,zcommon,znvpair,zavl,zunicode

Альтернативный способ проверки — команда

$ dmesg | grep -i zfs

Она должна дать на выходе нечто вроде этого:

[    1.133492] ZFS: Loaded module v0.6.1-rc14, ZFS pool version 5000, ZFS filesystem version 5

Всё, система готова к работе с ZFS — ныне, и присно, и во веки веков. Никаких дополнительных действий, вроде перезагрузки чего бы то ни было, не требуется: можно сразу приступать к созданию пула ZFS и файловых систем на нём, или подключать пул уже существующий.

Подключение существующего пула

Перво-наперво нужно перезагрузиться в ту систему, в которой создавался пул (в моём случае это была openSUSE), и экспортировать его командой:

# zpool export data

где data — имя пула с точкой монтирования /home/data.

Следующий шаг — вернуться в Ubuntu и создать в ней аналогичную точку монтирования для пула ZFS — в моём случае таким образом:

$ sudo mkdir /home/data

Дать ей атрибуты принадлежности обычному пользователю:

$ sudo chown -R alv:alv /home/data

И импортировать созданный в openSUSE пул ZFS:

$ sudo zpool import -f data

Не забыв об опции -f, предписывающей принудительной выполнение импорта. Без неё ответом на эту команду будет сообщение об ошибке.

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

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

Добавить комментарий