zfs livecdを使用しています。 「password」というキーファイルを含む暗号化されたプールをインポートしたいと思います。
まず、キーファイルを使用してUSBドングルをインストールしました。
mkdir /tmpusb
mount /dev/disk/by-uuid/uuidofdongle... /tmpusb
その後、プールをインポートします。
zpool import -l -d /dev/disk/by-partlabel/ROOTPOOL1 -d /dev/disk/by-partlabel/ROOTPOOL2 -o altroot=/mnt rpool
1 / 1 keys successfully loaded
すべてが正常です!問題は何ですか?
ドングルをインストールする正しいディレクトリを忘れた場合はどうすればよいですか?
zfsは正解を与えましたが、最初にプールを開く必要があります!
zfs get all rpool|grep -i kyloc
rpool keylocation file:///tmpusb/cifry local
問題は、プールが閉鎖されている間にこの宿泊施設を開いたままにする方法はありますか?
答え1
私は10年以上ZFSを使用してきましたが、ZFS暗号化を使用したことはありません。したがって、ZFSについて全体的によく知っていますが、ZFS暗号化の専門家ではありません。
AFAIK、プールをインポートしないと、データセットの主要な場所属性を取得できません(プールではなくデータセットの属性であるため、zdb
ZFSデバッグユーティリティを使用してこれを行う方法があるかもしれませんが、それがある場合はまったくわかりません)。
ただし、プールをインポートした後にデータセットをマウントする前に、このプロパティをオーバーライドしてキーファイルの場所を手動で通知できますzfs
。
-L
文書を読んでみると、これがまさにオプションであることを確信していますzfs load-key
。からman zfs-load-key
:
zfs load-key [-nr] [-L keylocation] -a|filesystem
ファイルシステムのキーをロードして、そのキー位置属性を継承するすべての子孫へのアクセスを許可します。
キーは、keyformatで指定された形式とkeylocation属性で指定された場所でなければなりません。キー位置をプロンプトに設定すると、端末はキー入力が入力されるまで対話的に待機します。
キーをロードしてもデータセットは自動的にマウントされません。機能が必要な場合は、
zfs mount -l
キーを要求してデータセットをインストールします(zfs-mount
(8)を参照)。キーがロードされると、keystatusプロパティが使用可能になります。
-r
指定されたファイルシステムとすべてのサブ暗号化ルートのキーを繰り返しロードします。
-a
プール内のすべての暗号化ルートにインポートされたすべてのキーをロードします。
-n
キーをロードするには、練習実行(「タスクなし」)を実行します。これにより、zfsは提供されたキーが正しいことを確認します。キーがすでにロードされている場合でも、このコマンドを実行できます。
-L keylocation
– keylocation 属性の代わりに keylocation を使用します。これはデータセットの属性値を変更しません。キーの位置は、-r
またはで使用している場合にのみヒントとして提供できます-a
。
したがって、次のようにしてみてください。
- キーを含むUSBキーを好きな場所にマウントします。
keylocation
で属性をオーバーライドしようとしているので、キーをロードせずにプールを取得しますzfs load-key
。この-l
オプションがないと、必要に応じて暗号化されたデータセットはインストールされません。- データセットをロードするキー
- データセットをインストールします。
zpool import rpool # without the `-l` option!
zfs load-key -L /path/to/keyfile rpool
zfs mount rpool
注:呼び出されるプールrpool
とそのプールの最上位データセット(とも呼ばれる)rpool
との違いを覚えておいてください。zpool
サブコマンドはプールと共に使用され、サブコマンドzfs
はデータセット、zvol、スナップショットなどと一緒に使用されます。