У меня есть система резервного копирования Arch linux ZFS, которая долгое время не обновлялась, потому что работала отлично и не было причин для беспокойства. Однако после недавнего обновления мои наборы данных ZFS больше не монтируются автоматически при перезагрузке. К сожалению, сервисы не показывают сообщений об ошибках, и я могу запустить
# zfs mount -a
после того, как система загрузилась без проблем. Некоторые подробности:
[root@elephant etc]# uname -a
Linux elephant 4.16.11-1-ARCH #1 SMP PREEMPT Tue May 22 21:40:27 UTC 2018 x86_64 GNU/Linux
[root@elephant etc]# pacman -Q | grep spl
spl-dkms 0.7.9-1
spl-utils 0.7.9-1
[root@elephant etc]# pacman -Q | grep zfs
zfs-dkms 0.7.9-1
zfs-utils 0.7.9-1
root@elephant etc]# zfs get mountpoint backup/www
NAME PROPERTY VALUE SOURCE
backup/www mountpoint /backup/www default
[root@elephant etc]# zfs get mountpoint backup/data
NAME PROPERTY VALUE SOURCE
backup/data mountpoint /backup/data default
[root@elephant etc]# zfs get mountpoint backup/metadata
NAME PROPERTY VALUE SOURCE
backup/metadata mountpoint /backup/metadata default
В частности, обратите внимание, что служба zfs-mount выглядит совершенно счастливой:
[root@elephant ~]# systemctl -l status zfs*
● zfs.target - ZFS startup target
Loaded: loaded (/usr/lib/systemd/system/zfs.target; enabled; vendor preset: enabled)
Active: active since Mon 2018-05-28 15:30:18 CDT; 1min 32s ago
May 28 15:30:18 elephant systemd[1]: Reached target ZFS startup target.
● zfs-import-cache.service - Import ZFS pools by cache file
Loaded: loaded (/usr/lib/systemd/system/zfs-import-cache.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2018-05-28 15:30:18 CDT; 1min 32s ago
Process: 659 ExecStart=/usr/bin/zpool import -c /etc/zfs/zpool.cache -aN (code=exited, status=0/SUCCESS)
Process: 656 ExecStartPre=/sbin/modprobe zfs (code=exited, status=0/SUCCESS)
Main PID: 659 (code=exited, status=0/SUCCESS)
May 28 15:30:12 elephant systemd[1]: Starting Import ZFS pools by cache file...
May 28 15:30:18 elephant systemd[1]: Started Import ZFS pools by cache file.
● zfs-zed.service - ZFS Event Daemon (zed)
Loaded: loaded (/usr/lib/systemd/system/zfs-zed.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2018-05-28 15:30:18 CDT; 1min 32s ago
Docs: man:zed(8)
Main PID: 1586 (zed)
Tasks: 3 (limit: 4915)
Memory: 5.6M
CGroup: /system.slice/zfs-zed.service
└─1586 /usr/bin/zed -F
May 28 15:30:18 elephant systemd[1]: Started ZFS Event Daemon (zed).
May 28 15:30:18 elephant zed[1586]: ZFS Event Daemon 0.7.9-1 (PID 1586)
May 28 15:30:18 elephant zed[1586]: Processing events since eid=0
May 28 15:30:18 elephant zed[1591]: eid=1 class=history_event pool_guid=0x7314E37F1A1C0088
May 28 15:30:18 elephant zed[1593]: eid=2 class=config_sync pool_guid=0x7314E37F1A1C0088
May 28 15:30:18 elephant zed[1595]: eid=3 class=pool_import pool_guid=0x7314E37F1A1C0088
May 28 15:30:18 elephant zed[1618]: eid=5 class=config_sync pool_guid=0x7314E37F1A1C0088
● zfs-mount.service - Mount ZFS filesystems
Loaded: loaded (/usr/lib/systemd/system/zfs-mount.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2018-05-28 15:30:12 CDT; 1min 38s ago
Process: 657 ExecStart=/usr/bin/zfs mount -a (code=exited, status=0/SUCCESS)
Main PID: 657 (code=exited, status=0/SUCCESS)
May 28 15:30:12 elephant systemd[1]: Starting Mount ZFS filesystems...
May 28 15:30:12 elephant systemd[1]: Started Mount ZFS filesystems.
[root@elephant ~]#
Тем не мение:
[root@elephant ~]# zfs mount
[root@elephant ~]#
[root@elephant ~]# zfs mount -a
[root@elephant ~]# zfs mount
backup /backup
backup/data /backup/data
backup/metadata /backup/metadata
backup/www /backup/www
У меня закончилось время, чтобы разобраться с этим, и я просто собираюсь переключить все наборы данных на устаревшее монтирование, но мне все еще любопытно, почему это сработало для zfs 0.6.x, но не работает для 0.7.9 - - возможно какая-то несовместимость systemd?
Оказывается, моя проблема заключалась в том, что у меня не было zfs-import.target включен. Я даже не уверен, что этот файл модуля существовал, когда я впервые установил эту систему с ZoL 0.6.x, но в любом случае
systemctl enable zfs-import.target
решил вопрос. Наборы данных ZFS снова правильно монтируются при загрузке.