使用自編譯的 ZFS 自動掛載加密檔案系統

使用自編譯的 ZFS 自動掛載加密檔案系統

我目前正在嘗試將運行 19.04 的資料轉儲伺服器從 LUKS+btrfs 更改為 ZFS。系統磁碟機經過 LUKS 加密,可透過 SSH 解密。它包含一個用於解密 ZFS 檔案系統的金鑰檔案。我已經完成一半了,但自動掛載不起作用。

  • 我已經成功編譯了 ZFS 0.8.1 並按照以下步驟建置了一個 DKMS 套件維基百科。透過閱讀 makefile,我還發現我還需要製作 deb-utils 來獲取 zpool 等。
  • 我創建了一個支援加密的池

    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

我現在已經完全解決了這個問題,本質上有太多的部分。

  1. systemd 服務必須內建到 deb 套件中。不幸的是,正如所討論的,上面連結的 wiki 包非常草率在問題追蹤器中

簡而言之,DKMS deb 的建置命令應該是

$ ./configure
$ make -j1 deb-utils deb-dkms
  1. 舊安裝需要清理

命令:

sudo systemctl unmask zfs*

並且需要啟用並啟動新服務。

我還描述如何處理加密資料集這裡

相關內容