Skip to content
Tiantan
Articles

debian9ストレッチにzfsをインストールする

On 2月 18, 2021 by admin

debian 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 

その結果、次のエラーが発生します:

[email protected]:/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 を次のように読みます。

[email protected]:/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をインストールする正しい方法は何ですか?

コメント

  • dkms status | grep 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で役立ちます)。

  • IME、意味のある名前は人的エラーを減らすのに役立ちます。 ‘入力ミスは簡単です(例:sddをsdfとして)。 ID名の入力ミスははるかに困難です。
  • 笑-多くの人が同じ推奨をしています-個人的には、sdc sdesdfとsdgを覚えて入力する方が簡単だと思います。ディスクはバッチで購入し、それらはすべて同じ48個程度のby-id文字で始まり、2〜4桁のサフィックスが異なります。人々は’ by-id名を入力しません-彼らはタブ補完を使用します-おっとIMHOにつながる可能性が高くなります。 3文字の1文字を、52文字の名前の2〜4桁よりもはるかに簡単に区別できることがわかりました。多くの人がUUIDも推奨していることを私は知っています。 ZFSは’気にしないので、私は自分が簡単だと思うものに固執すると思います-少ないほうが多い場合もあります:)
  • 回答

    これをテストするために新しいストレッチ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/[email protected]: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に別の質問を投稿する必要がありますか?

    Written by admin

    コメントを残す コメントをキャンセル

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

    最近の投稿

    • 共振ダイポールを備えたバランの使用
    • “できない”と“できない? [重複]
    • JFKでは国内線のエアサイドターミナル間を移動できますか?
    • “深く感謝します”または“深く感謝します”
    • '抽象的なアイデア'とはどういう意味ですか? [クローズ]

    アーカイブ

    • 2021年2月
    • 2021年1月
    • 2020年12月
    • 2020年11月
    • Deutsch
    • Nederlands
    • Svenska
    • Norsk
    • Dansk
    • Español
    • Français
    • Português
    • Italiano
    • Română
    • Polski
    • Čeština
    • Magyar
    • Suomi
    • 日本語
    • 한국어

    Copyright Tiantan 2021 | Theme by Theme in Progress | Proudly powered by WordPress

    Back to top