Алексей Федорчук
Как обычно с каждой новой системой, один из первых вопросов, который интересует меня последнее время — поддержка ZFS. В LM она реализована пакетами одного из PPA-репозиториев — а последние, как мы уже видели в прошлой заметке, в LMDE не поддерживаются. С другой стороны, для неё должны подойти пакеты, собранные для обычного Debian’а — и таких пакетов есть непосредственно на сайте проекта ZFS on Linux.
Так что отправляюсь на соответствующую страницу сайта проекта и обнаруживаю, что поддержка Jessie, на которой базируется наша Betsy, имеет место быть. И чтобы её задействовать, нужно скачать пакетик, содержащий описание :
$ wget http://archive.zfsonlinux.org/debian/pool/main/z/zfsonlinux/zfsonlinux_4_all.deb
а затем, получив права администратора, установить его таким образом:
# dpkg -i zfsonlinux_4_all.deb
Увы, в моём случае процесс завершается ошибкой, объясняемой вот таким сообщением:
Unknown Debian GNU/Linux version! Can not create /etc/apt/sources.list.d/zfsonlinux.list. See /usr/share/doc/zfsonlinux/zfsonlinux.list.
Так что приходится следовать совету и смотреть указанный файл:
$ < /usr/share/doc/zfsonlinux/zfsonlinux.list
Из его содержимого причина ошибки становится ясной:
## This file is installed by the zfsonlinux package. deb [arch=amd64] http://archive.zfsonlinux.org/debian %DIST% main #deb-src http://archive.zfsonlinux.org/debian %DIST% main # !! Enable these ONLY if you want/need the dailies - latest ZoL code !! #deb [arch=amd64] http://archive.zfsonlinux.org/debian %DIST%-daily main #deb-src http://archive.zfsonlinux.org/debian %DIST%-daily main
Ведь наша система носит имя не Jessie, а Betsy, которая, видимо, в пакете не предусмотрено. Кстати, посмотреть содержимое репозитория не получится ни через браузер, ни, скажем, через lftp
, так что приходится действовать методом лобового напора. А именно: создаю файл /etc/apt/sources.list.d/zfsonlinux.list
, тот самый, что dpkg
отказался сгененрировать автоматически (хотя файлы zfsonlinux.gpg
и pin-zfsonlinux
были благополучно созданы) и вношу туда такие строки:
## This file is installed by the zfsonlinux package. deb [arch=amd64] http://archive.zfsonlinux.org/debian jessie main deb-src http://archive.zfsonlinux.org/debian jessie main # !! Enable these ONLY if you want/need the dailies - latest ZoL code !! #deb [arch=amd64] http://archive.zfsonlinux.org/debian jessie-daily main #deb-src http://archive.zfsonlinux.org/debian jessie-daily main
После этого даю команду
$ apt update
нахожу нужный пакет
$ apt search zfs
и устанавливаю его:
$ apt install debian-zfs
В ответ на эту команду следует список её жёстких зависимостей и несколько предлагаемых и рекомендуемых пакетов, из которых я, прервав выполнение, дописываю в строку команды zfs-initramfs
. После чего начинается скачивание, сборка и установка модулей, установка утилит поддержки и, наконец, генерация нового initrd
.
А завершается всё это дело тем же сообщением об ошибке, что и попытка установить пакет описания репозитория — о невозможности создать файл zfsonlinux.list
. Тем не менее, все необходимые пакеты были установлены и работали, новый initrd
сгенерировался, и система могла с него загрузиться. Успешно было и выполнение команды
$ sudo modprobe zfs
что было тут же установлено таким образом:
$ dmesg | grep -i zfs [ 19.792308] ZFS: Loaded module v0.6.3-766_gfde0d6d, ZFS pool version 5000, ZFS filesystem version 5
То есть всё связанное с ZFS хозяйство казалось вполне работоспособным, что следовало немедленно проверить на практике.
Для проверки я пожертвовал ещё одним первичным разделом на своём экспериментальном винчестере. И, получив бессрочные права администратора
$ sudo -i
ибо все последующие действия будут выполняться от его имени, создал каталог /home/zlmde
для монтирования будущего пула ZFS. Который тоже не замедлил создать:
# zpool create -m /home/zlmde zlmde sdd3
В пуле были созданы файловые системы (dataset
в терминологии ZFS):
# zfs create zlmde/myaudio # zfs create zlmde/myvideo
Установил для них нужные аттрибуты:
# chown -R alv:alv /home/zlmde # zfs set atime=off zlmde/* # zfs set xattr=off zlmde/* # zfs set checksum=off zlmde/*
И выполнил экспортирование пула
# zpool export zlmde
А затем его обратное импортирование:
# zpool import zlmde
И, наконец, убедился, что все мои файловые системы имеют место быть смонтированными куда надо и как надо:
# mount | grep zfs /home/zlmde on /home/zlmde type zfs (rw,noatime,noxattr,noacl) /home/zlmde/myaudio on /home/zlmde/myaudio type zfs (rw,noatime,noxattr,noacl) /home/zlmde/myvideo on /home/zlmde/myvideo type zfs (rw,noatime,noxattr,noacl)
В качестве последнего действия я проверил доступность пула и его dataset'ов в другой системе — для этого и требовался экспорт пула. Например, в собственно Linux Mint, в который я перезагружась, создаю идентичную точку монтирования:
$ sudo mkdir /home/zlmde
Присваиваю ей нужные атрибуты принадлежности:
$ sudo chown -R alv:alv /home/zlmde
И импортирую ранее созданный пул:
$=> sudo zpool import zlmde
После этого команда
$ sudo zpool status zlmde
сообщает об успехе этого предприятия:
[sudo] password for alv: pool: zlmde state: ONLINE scan: none requested config: NAME STATE READ WRITE CKSUM zlmde ONLINE 0 0 0 sdd3 ONLINE 0 0 0 errors: No known data errors
А команда
$ mount G zfs
показывает все наличные dataset'ы там, где надо:
zlmde on /home/zlmde type zfs (rw,noatime,noxattr,noacl) zlmde/myaudio on /home/zlmde/myaudio type zfs (rw,noatime,noxattr,noacl) zlmde/myvideo on /home/zlmde/myvideo type zfs (rw,noatime,noxattr,noacl)
После этого остаётся только придумать, как избавиться от сообщения об ошибке по поводу файла описания репозитория — но об этом как-нибудь в другой раз.
Помнится, автор не так давно пробовал btrfs как замену zfs под linux, вроде бы даже доволен был. Что же в итоге не устроило в оной, очень даже нативной для linux?
Во-первых, давно, когда ZFS on Linux ещё не было.
Во-вторых, именно пробовал.
Не распробовал…