自己コンパイルされた ZFS で暗号化されたファイルシステムを自動マウントする

自己コンパイルされた ZFS で暗号化されたファイルシステムを自動マウントする

現在、19.04 を実行しているデータ ダンプ サーバーを LUKS+btrfs から ZFS に変更しようとしています。システム ドライブは LUKS で暗号化されており、SSH 経由で復号化できます。これには、ZFS ファイルシステムを復号化するキー ファイルが含まれています。途中まで進んでいますが、自動マウントが機能しません。

  • 私はZFS 0.8.1をコンパイルし、DKMSパッケージをビルドすることができました。ウィキ. makefile を読んでみると、zpool などを取得するには deb-utils も作成する必要があることがわかりました。
  • 暗号化をサポートするプールを作成しました

    zpool create -o ashift=12 dataint /dev/disk/by-id/mydrive zpool set feature@encryption=enabled dataint

  • 私はキーファイルで暗号化されたファイルシステムを作成しました

    zfs create \ -o encryption=on \ -o keylocation=file:///root/keys/hdd256.key -o keyformat=raw\ dataint/test

  • これをマウントできますzfs mount dataint -l

私が現在抱えている問題は次のとおりです。

  1. zfs は起動時にロードされません。カーネル モジュールもロードされず、したがってプールもロードされません。

  2. 暗号化されたボリュームは、プールがインポートされるか、ファイルシステムがオプションでマウントされる場合にのみロードされます-l。 1. が解決されたら、自動ロードのために何らかの方法で対処する必要があると思いますか?

zfs systemd サービスがいくつかありますが、それらはマスクされています。削除した以前の 0.7 パッケージ マネージャーのインストールからの残り物であるかどうかはわかりません。

答え1

インストールされているすべてのパーツを手動で有効にしてみてください。

システムにインストールされている zfs 関連サービスを確認するには:

sudo systemctl list-unit-files | grep zfs

次に、すべてのサービスを有効にします。詳細は次のとおりです。

sudo modprobe zfs
sudo systemctl enable zfs-import-cache
sudo systemctl enable zfs-import-scan
sudo systemctl enable zfs-import.target
sudo systemctl enable zfs-mount
sudo systemctl enable zfs-share
sudo systemctl enable zfs-zed
sudo systemctl enable zfs.target

ターミナルにマスクされているものに関する苦情が表示された場合は、すべてのマスクを強制的に削除します。

sudo systemctl unmask zfs-*

おそらくこれは必要ありませんが、完全性のために、一部の古いシステムではサービスが少なく、以下が好まれますupdate-rc.d

update-rc.d zfs-import enable
update-rc.d zfs-mount enable
update-rc.d zfs-zed enable
update-rc.d zfs-share enable

答え2

私は今、本質的に 2 つの部分から成る問題を完全に解決しました。

  1. systemdサービスはdebパッケージに組み込む必要があります。残念ながら、上で説明したように、上記のwikiパッケージは非常にずさんです。問題追跡システムはこちら

つまり、DKMS debのビルドコマンドは次のようになります。

$ ./configure
$ make -j1 deb-utils deb-dkms
  1. 古いインストールをクリーンアップする必要がある

指示:

sudo systemctl unmask zfs*

新しいサービスを有効にして開始する必要があります。

暗号化されたデータセットの扱い方についても説明しましたここ

関連情報