Debian 9.1にzfsをインストールしようとしましたが、いくつかのエラーが発生しています。
私の最初のインストールはzfs-dkmsだけでしたが、zfs-dkmsを実行するにはspl-dkmsも必要であることをネットで読みました。
私の手順は、次のようにsources.listcontrib 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のインストールにどのように関連していますか?
debian 9にzfsをインストールする正しい方法は何ですか?
@casによる実際の答えは良いですが、適用されるいくつかの修正があります。
それでは、Debian 9の新規インストールを行い、contrib non-freeリポジトリも有効になっていないと仮定します。
sed
を使用して、/etc/apt/sources.list
内の単語mainを検索して置換しました
sed -i 's/main/main contrib non-free/g' /etc/apt/sources.list
apt-get update
最後の修正以降、spl-dkms
はzfs-dkms
依存関係として正しく認識されるため、自動的に呼び出され、zfs-dkms
の前に手動でインストールする必要はありません。 Debianのzfsディストリビューション内のバグのため、シンボリックリンクが必要です。これは、正しい位置でrm
バイナリを検索しません。
apt -y install linux-headers-$(uname -r)
ln -s /bin/rm /usr/bin/rm
apt-get -y install zfs-dkms
この時点でzfs-dkmsはインストールされていますが、journalctl -xe
でエラーが発生します。 zfsを正しく起動するには、次を使用します。
/sbin/modprobe zfs
systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share
この時点で、私は再起動前にzpoolを作成する必要があることを発見しましたそうでない場合、zpoolがない場合、zfsは適切なモジュールをロードしません。これは一種のリソース節約メカニズムです(ただし、その場合でもjournalctl -xe
内でエラーがスローされます)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
"ZFSモジュールがカーネルを汚染するため、これを行っていません。使用可能なzpoolがない場合、ロードしないでください。"
この部分を見逃した場合は、ステップ2から開始する必要があります
たとえば、@ casが提供する例を使用すると、このファイルベースのzpoolを作成するか、ディスクベースのファイルを直接作成できます。
truncate -s 100M /root/z1
truncate -s 100M /root/z2
zpool create tank /root/z1 /root/z2
zpool scrub tank
zpool status
その後、reboot
の後、journalctl -xe
ですべてがエラーなしで機能します
Debian 9.4での私のためのわずかなバリエーション-Aptが追加をソースした後:
apt-get install linux-headers-AMD64 # not tied to specific kernel version
apt-get install zfs-dkms zfsutils-linux # my apt recommends is off
lsblk # double-check which disks to pool
zpool create -f jeff -o ashift=12 -o autoexpand=on -o autoreplace=on mirror sdb sdd
zfs set mountpoint=/var/jeff jeff
zfs set compression=lz4 jeff
zfs create jeff/blog
zfs create jeff/docs
zfs create jeff/pics
zfs set compression=off jeff/pics
df -h
マウントは[〜#〜] not [〜#〜] present sigh-既存の/var/jeff
とコンテンツが存在することを発見-それを邪魔にならないように移動してreboot
...
再起動後:
df -htzfs
Filesystem Size Used Avail Use% Mounted on
jeff 849G 128K 849G 1% /var/jeff
jeff/blog 850G 128K 849G 1% /var/jeff/blog
jeff/docs 856G 128K 849G 1% /var/jeff/docs
jeff/pics 850G 128K 849G 1% /var/jeff/pics
フーレイ-すべての存在し、ビット腐敗防止:)
私は真新しいストレッチを作成しましたVM。最小インストール(sshと標準のシステムツールのみ))、sources.listを編集してcontribとnon-freeを追加し、次に:
apt-get install spl-dkms zfs-dkms
zfsutils-linux
を手動でインストールすることもできます。 zfs-dkms
をインストールすると自動的にインストールされますが、DebianのリリースやDebian ZoLパッケージのバージョンによって依存関係が異なる場合があります。
apt-get install zfsutils-linux
zfs-share
のsystemdユニットファイルにバグがあるようです。 /usr/bin/rm
ではなく/bin/rm
を実行しようとしています。
クイックフィックスはln -s /bin/rm /usr/bin
を実行するか、または次のようにします:
cd /etc/systemd/system
cp -a /lib/systemd/system/zfs-share.service .
edit zfs-share.service and change `/usr/bin/rm` to `/bin/rm`
次にzfsサービスを再起動します。
systemctl restart zfs-import-cache
systemctl restart zfs-import-scan
systemctl restart zfs-mount
systemctl restart zfs-share
注:zfsサービスを再起動する前に、手動でmodprobe zfs
を実行しました。彼らがそれを自動的に行うかどうかはわかりませんので、あなたもそうする必要があるかもしれません。
ところで、initramfsの実行中にzfsが確実に読み込まれるようにするには、おそらくapt-get install zfs-initramfs
も使用する必要があります。
私はこれが動作することをテストしました:
# truncate -s 100M /root/z1
# truncate -s 100M /root/z2
# zpool create tank mirror /root/z1 /root/z2
# zfs set compression=lz4 tank
# rsync -ax /etc /tank/
# du -sch /etc /tank/etc/
3.5M /etc
825K /tank/etc/
4.3M total
# zpool scrub tank
# zpool status
pool: tank
state: ONLINE
scan: scrub repaired 0 in 0h0m with 0 errors on Thu Aug 3 19:28:21 2017
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
/root/z1 ONLINE 0 0 0
/root/z2 ONLINE 0 0 0
errors: No known data errors
Zpoolは機能しており、/ tankは再起動後に自動マウントされます。
結論:これで動作します。
ところで、このストレッチVMは、メインのsid
システムで作成されたZFS zvolをディスクとして使用します。最初のインストール直後に、spl-dkmsをインストールする前に、スナップショットを作成しましたzfs-dkmsを使用して、何か重大な問題が発生した場合にすぐに元に戻して再開できるようにしました。
私は最初に1 GBだけでzvolを作成しましたが、ビルドに不可欠なlinux-headers-AMD64などに十分なスペースを確保するために、後でそれを増やす必要がありました。
# zfs list -r -t all export/volumes/stretch
NAME USED AVAIL REFER MOUNTPOINT
export/volumes/stretch 6.25G 834G 1.77G -
export/volumes/stretch@2017-08-03-18:31:04 279M - 1.09G -
VM=のタンクでcompression=lz4
を設定することは、おそらく役に立たないよりも悪いです-zvolはすでにlz4圧縮を持っています。