Я попытался установить zfs на Debian 9.1, однако у меня возникают некоторые ошибки.
Моя первая установка была только zfs-dkms, однако я прочитал в сети, что для запуска zfs-dkms требуется также spl-dkms.
Мои шаги состояли в том, чтобы изменить мой sources.list, добавив взнос non-free следующим образом:
/etc/apt/sources.list
deb http://ftp.nl.debian.org/debian/ stretch main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch main contrib non-free
deb http://security.debian.org/debian-security stretch/updates main contrib non-free
deb-src http://security.debian.org/debian-security stretch/updates main contrib non-free
# stretch-updates, previously known as 'volatile'
deb http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
deb-src http://ftp.nl.debian.org/debian/ stretch-updates main contrib non-free
Завершил классическое обновление apt-get, а затем попытался установить zfs со следующим:
apt-get install spl-dkms
и только после
apt-get install zfs-dkms
В результате у меня есть эти ошибки:
root@debian:/etc/apt# apt-get install zfs-dkms
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libnvpair1linux libuutil1linux libzfs2linux libzpool2linux zfs-zed zfsutils-linux
...
DKMS: install completed.
Setting up libzpool2linux (0.6.5.9-5) ...
Setting up libzfs2linux (0.6.5.9-5) ...
Setting up zfsutils-linux (0.6.5.9-5) ...
Created symlink /etc/systemd/system/zfs-mount.service.wants/zfs-import-cache.service â /lib/systemd/system/zfs-import-cac
Created symlink /etc/systemd/system/zfs.target.wants/zfs-import-cache.service â /lib/systemd/system/zfs-import-cache.serv
Created symlink /etc/systemd/system/zfs-share.service.wants/zfs-mount.service â /lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-mount.service â /lib/systemd/system/zfs-mount.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-share.service â /lib/systemd/system/zfs-share.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zfs.target â /lib/systemd/system/zfs.target.
zfs-import-scan.service is a disabled or a static unit, not starting it.
Job for zfs-mount.service failed because the control process exited with error code.
See "systemctl status zfs-mount.service" and "journalctl -xe" for details.
zfs-mount.service couldn't start.
Job for zfs-share.service failed because the control process exited with error code.
See "systemctl status zfs-share.service" and "journalctl -xe" for details.
zfs-share.service couldn't start.
Setting up zfs-zed (0.6.5.9-5) ...
Created symlink /etc/systemd/system/zed.service â /lib/systemd/system/zfs-zed.service.
Created symlink /etc/systemd/system/zfs.target.wants/zfs-zed.service â /lib/systemd/system/zfs-zed.service.
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Чтение journalctl -xe как предложено, я получаю:
root@debian:/etc/apt# journalctl -xe
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 23:13:13 debian systemd[1]: Failed to start ZFS file system shares.
-- Subject: Unit zfs-share.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-share.service has failed.
--
-- The result is failed.
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Unit entered failed state.
Aug 02 23:13:13 debian systemd[1]: zfs-share.service: Failed with result 'exit-code'.
Aug 02 23:13:13 debian systemd[1]: Starting Mount ZFS filesystems...
-- Subject: Unit zfs-mount.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-mount.service has begun starting up.
Aug 02 23:13:13 debian zfs[81481]: The ZFS modules are not loaded.
Aug 02 23:13:13 debian zfs[81481]: Try running '/sbin/modprobe zfs' as root to load them.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Main process exited, code=exited, status=1/FAILURE
Aug 02 23:13:13 debian systemd[1]: Failed to start Mount ZFS filesystems.
-- Subject: Unit zfs-mount.service has failed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-mount.service has failed.
--
-- The result is failed.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Unit entered failed state.
Aug 02 23:13:13 debian systemd[1]: zfs-mount.service: Failed with result 'exit-code'.
Aug 02 23:13:13 debian systemd[1]: Starting ZFS file system shares...
-- Subject: Unit zfs-share.service has begun start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit zfs-share.service has begun starting up.
Aug 02 23:13:13 debian systemd[81483]: zfs-share.service: Failed at step EXEC spawning /usr/bin/rm: No such file or direc
-- Subject: Process /usr/bin/rm could not be executed
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- The process /usr/bin/rm could not be executed and failed.
--
-- The error number returned by this process is 2.
Что здесь не так? Я что-то пропустил? Как пакет zfs-linux связан с установкой zfs?
Как правильно установить zfs в Debian 9?
dkms status | grep zfs
?Ответы:
Фактический ответ @cas хороший, но есть некоторые исправления, которые необходимо применить.
Итак, давайте возьмем новую установку Debian 9 и предположим, что не бесплатные репозитории contrib также не включены.
Шаг 0 - Включите репозитории non-free contrib
Я использовал,
sed
чтобы найти и заменить слово главное внутри/etc/apt/sources.list
Шаг 1 - Установка ZFS
Поскольку последние исправления
spl-dkms
правильно рассматриваются какzfs-dkms
зависимости, поэтому они вызываются автоматически, и нет необходимости устанавливать их вручнуюzfs-dkms
. Символьная ссылка необходима из-за ошибки в дистрибутиве zfs в Debian, которая не ищетrm
двоичный файл в правильной позиции.Шаг 2 - Перезапуск ZFS
В этот момент zfs-dkms установлен, но выдает ошибки
journalctl -xe
; чтобы правильно запустить zfs, используйте:Шаг 3 - ВЫ ДОЛЖНЫ СОЗДАТЬ, КАК МИНИМУМ, ОДИН ZPOOL
В этот момент я обнаружил, что вы должны создать zpool перед перезагрузкой, иначе zfs не загрузит нужные модули, если zpools нет. Это своего рода механизм экономии ресурсов (но даже в этом случае он все равно будет выдавать ошибки
journalctl -xe
)https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
Если вы пропустите эту часть, вы должны начать с шага 2
Например, используя пример, предоставленный @cas, вы можете создать этот файл на основе zpool или напрямую создать свой диск на основе.
тогда после
reboot
все будет работать без ошибок вjournalctl -xe
источник
Небольшие изменения для меня в Debian 9.4 - после добавления источников в Apt:
Гора НЕ присутствовала, вздохнула - обнаружила, что существует существующее
/var/jeff
с контентом - убрала это с пути и сделалаreboot
...После перезагрузки:
Ура - все настоящее и защищенное от гниения :)
источник
/dev/disk/by-id/?
а не/dev/sd?
устройства. Либо используйте имена by-id при создании пула, либо исправьте позже сzpool export <pool>
последующимzpool import -d /dev/disk/by-id/ <pool>
. Эти имена, в отличие от / dev / sd *, сохранятся при перезагрузке. Кроме того, если у вас есть принтер этикеток, вы можете печатать этикетки с короткими версиями имен устройств by-id (обычно это часть с серийным номером имени, которая делает хорошую короткую уникальную этикетку) и маркировать диски, чтобы сделать их легко определить, если они когда-либо должны быть заменены.lsblk -f
это перед тем, как сходить с аппаратным обеспечением привода - для наших производственных серверов инструмент Dell hdd blink полезен в отношении текущих псевдоним физического блока :) - Я думаю, что / dev / disk / by-id более полезен для других систем монтирования, которые не имеют встроенной согласованности ZFS - например, fstab.zpool
командах likestatus
иlist
, которые можно легко скопировать в любые необходимые команды zpool offline / detach / replace / etc.sda
не говорит вам ничего полезного.ata-ST4000VN008-2DR166_ZDH35XXX
точно определяет, что это за диск и его серийный номер. Вы все еще можете получить (текущие) короткие имена разработчиков, если хотите, чтобы они использовались с-L
опциямиzpool list
,zpool status
и т. Д. (По моему опыту, в основном полезно сzpool list -L -v
).Я только что создал совершенно новую стрейч ВМ, чтобы проверить это. Минимальная установка (только ssh и стандартные системные инструменты), отредактируйте sources.list для добавления contrib и non-free, затем:
Вы также можете установить вручную
zfsutils-linux
. Он должен быть установлен автоматически при установке,zfs-dkms
но зависимости могут отличаться для разных выпусков Debian и для разных версий пакетов Debian ZoL:Похоже, что в файле системного модуля есть ошибка
zfs-share
. Он пытается запустить/usr/bin/rm
вместо/bin/rm
.Быстрое решение заключается в запуске
ln -s /bin/rm /usr/bin
или, альтернативно:и затем перезапустите сервисы zfs:
ПРИМЕЧАНИЕ. Я вручную запустил
modprobe zfs
перед перезапуском любую из служб zfs. Я не уверен, сделают ли они это автоматически или нет, так что, возможно, вам придется сделать это тоже.Кстати, вы, вероятно,
apt-get install zfs-initramfs
тоже хотите , чтобы гарантировать, что zfs загружается во время initramfs.Я проверил, что это работает с:
Zpool работает и / tank автоматически устанавливается после перезагрузки.
Вывод: это работает сейчас.
Кстати, эта виртуальная машина в качестве диска использует ZFS zvol, созданный в моей основной
sid
системе. Я сделал снимок, если он был сделан сразу после первоначальной установки, перед установкой spl-dkms и zfs-dkms, чтобы я мог быстро вернуться и начать заново, если что-то пошло не так.Сначала я сделал zvol только с 1 ГБ, а позже мне потребовалось увеличить его, чтобы было достаточно места для build-essential, linux-headers-amd64 и т. Д .:
установка
compression=lz4
на танке в ВМ, вероятно, хуже, чем бесполезная - у zvol уже есть сжатие lz4.источник