debian9ストレッチにzfsをインストールする
On 2月 18, 2021 by admindebian 9.1にzfsをインストールしようとしましたが、エラーが発生しました。
最初のインストールはzfs-dkmsのみでしたが、ネット上でzfs-dkmsを実行するにはspl-dkmsも必要であると読みました。
私の手順は sources.list contrib 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 リポジトリも有効になっていません。
ステップ0-contribnon-freeリポジトリを有効にします
sed
を使用して、/etc/apt/sources.list
iv id = “内の main という単語を見つけて置き換えました。 4fb23b7f34 “>
ステップ1-ZFSのインストール
最後の修正以降、spl-dkms
は deペンダントなので、自動的に呼び出され、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
ステップ2-ZFSの再起動
この時点で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
ステップ3-少なくとも1つのZPOOLを作成する必要があります
この時点で私は発見しました再起動する前にzpoolを作成する必要がありますそうしないと、zpoolがない場合、zfsは適切なモジュールをロードしません。リソースの節約メカニズム(ただし、その場合でもjournalctl -xe
内でエラーがスローされます)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=864348
“ZFSモジュールがカーネルを汚染するため、これは行いません。使用可能なzpoolがない場合は、ロードしないでください。 / em>
この部分を見逃した場合は、ステップ2から開始する必要があります
たとえば、@ casが提供する例を使用すると、このファイルベースのzpoolを作成することも、ディスクベースの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
マウントはではありません現在のため息-既存の/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
Hooray -すべて存在し、ビット腐敗防止:)
コメント
- +1ですが、
/dev/sd?
デバイスではなく/dev/disk/by-id/?
を使用することを強くお勧めします。プールを作成するときにby-id名を使用するか、後でzpool export <pool>
の後にzpool import -d /dev/disk/by-id/ <pool>
を付けて修正します。これらの名前は、/ dev / sd *とは異なり、再起動後も保持されます。また、ラベルプリンターを使用している場合は、by-idデバイス名の短いバージョンでラベルを印刷できます(’は通常、名前のシリアル番号部分であるため、効果的です。 、短く、一意のラベル)、ドライブにラベルを付けて、交換が必要かどうかを簡単に識別できるようにします。 - うーん-しかし、ZFSは作成中に使用されるディスクエイリアスを気にしません-すべての情報が書き込まれますディスク上のzfs-part9に-そしてそれは配列を構築するために使用されるものです。’ / dev / sdbが将来他のものに変更されるかどうかは気にしないので、常に
lsblk -f
で確認します。ドライブハードウェアを使用する前に-本番サーバーの場合、Dell hdd点滅ツールは、現在のos-aliasを物理ユニットに関連付けるのに役立ちます:)-/ dev / disk / by-idは、他のマウントシステムに役立つと思います。 ‘一貫性のあるZFS ‘が組み込まれていない-例: fstab。 - by-idを使用すると、iv id =で意味のある/便利な名前(各ドライブ’のブランド、モデル、シリアル番号を識別)が表示されます。
status
やlist
などの “5551c7b00a”>
コマンド。これらは、必要なzpoolオフライン/デタッチに簡単にコピーして貼り付けることができます。 / replace / etcコマンド。sda
は’有用なことを何も教えてくれません。ata-ST4000VN008-2DR166_ZDH35XXX
は、ドライブの種類とシリアル番号を正確に識別します。zpool list
、iv id = “で-L
オプションを使用して必要な場合は、(現在の)短い開発者名を引き続き取得できます。 be3c9d7c17 “> など(私の経験では、主にzpool list -L -v
で役立ちます)。
回答
これをテストするために新しいストレッチVMを作成しました。最小限のインストール(sshと標準のシステムツールのみ)、sources.listを編集してcontribとnon-freeを追加してから、次のようにします。
apt-get install spl-dkms zfs-dkms
手動で行うこともできますzfsutils-linux
をインストールします。 zfs-dkms
をインストールすると自動的にインストールされますが、依存関係はDebianリリースやDebianZoLパッケージのバージョンによって異なる場合があります。
apt-get install zfsutils-linux
zfs-share
のsystemdユニットファイルにバグがあるようです。/usr/bin/rm
/bin/rmの代わりに/ div>。
簡単な修正は、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
注:手動で
。自動的に実行されるかどうかはわかりません。そのため、実行する必要があるかもしれません。
BTW、おそらくapt-get install zfs-initramfs
も実行する必要があります。 、initramfs中にzfsがロードされることを確認します。
これが次の機能で動作することをテストしました:
# 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
システム。最初のインストールの直後、spl-dkmsとzfs-dkmsをインストールする前にスナップショットを作成したので、重大な問題が発生した場合にすぐに元に戻して再開できます。
最初に1GBのみで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 -
設定compression=lz4
は、おそらく役に立たないよりも悪いです-zvolにはすでにlz4圧縮があります。
コメント
- 新しいVMにインストールしますが、’まだ問題が発生していると思います。一部のサービスが正しく起動していません。’ As ZFSDKMSのバグリストが” can ‘ t install “バグレポート。 apt-get install zfs-dkmsだけで再現可能なこのような多くのバグ修正リクエストの後、開発者が数か月を経過させるのは正常かどうか疑問に思います。
- cdディレクトリを要求する部分:/ etc / systemd / system /? / etc / systemd / serviceが存在しないため..また、次のメッセージが表示されます:” zfs-import-mount.serviceの再起動に失敗しました:Unit zfs-import-mount.service not見つかりました。”および” zfs-import-share.serviceの再起動に失敗しました:ユニットzfs-import-share。サービスが見つかりません。”
- journalctl -xe:Aug 11 23:03:23 debian zed [を読むと、ZFS-ZEDサービスにも問題があるようです。 70734]:ZFSイベントデーモン0.6.5.9-5(PID 70734)Aug 11 23:03:23 debian zed [70734]:libzfsの初期化に失敗しましたAug 11 23:03:23 debian systemd [1]:zfs-zed.service :メインプロセスが終了しました、code = exited、status = 1 / FAILURE Aug 11 23:03:23 debian systemd [1]:zfs-zed.service:ユニットが失敗した状態になりました。 8月11日23:03:23debian systemd [1]:zfs-zed.service:結果’ exit-code ‘で失敗しました。
- Debian 10で変更/改善されましたか? もしそうなら、Debian 10に別の質問を投稿する必要がありますか?
dkms status | grep zfs
の出力は何ですか?