[FreeBSD-users-jp 96801] Re: FreeBSD13.0-R GEOM ELIで暗号化したデバイスのアタッチ後にzpoolが見えるようにするには?

Katsuyuki Miyoshi katsu @ miyoshi.matsuyama.ehime.jp
2021年 5月 4日 (火) 02:32:01 UTC


 みよし です。

KAWAMATA <fumio @ next.matrix.jp> writes:
> ◆失敗の記録◆
> 最初、zpool import のオプションを「 -c のみでもいけるのでは?」 と思い、以下のようにしました。
>
> $ sudo zpool import -c /etc/zfs/zpool_tank2.cache
>    pool: tank2
>      id: 3658802728382514599
>   state: ONLINE
> status: Some supported features are not enabled on the pool.
>  action: The pool can be imported using its name or numeric identifier, though
>         some features will not be available without an explicit 'zpool upgrade'.
>  config:
>
>         tank2       ONLINE
>           ada1.eli  ONLINE
>
> プール情報が表示されただけで、
> $ zpool list
> を実行しても、プール名は表示されず、また、キャッシュファイルも更新されませんでした。

 今ひとつ何をされたくてこのコマンドを実行されたのかよく分からないのですが、
tank2 を import したいのであれば

    $ sudo zpool import tank2

のように import するプールを指定する必要があります (もしくは -a)。
 ここで川又さんが実行されているのは川又さんが書かれている通り import
可能なプールを表示しているだけですのでこのような結果になるのはその通り
だと思うのですけど、ここは何を意図して行われたものでしょうか?
(「 -c のみでもいけるのでは?」と思われたのは、何がいけると思われて
こうされたという事なのでしょう?)

> FreeBSD12.2-Rでは、暗号化したデバイスをアタッチしたあとに
> $ zpool list
> を実行するとzpoolが表示されます。(上記現象発生後、改めて確認済です)

 R12 において暗号化したデバイスを attach する前に zpool status で
確認していただくと、tank2 は UNAVAIL な状態で見えていたりしませんで
しょうか?
 R12 においては一度 import したプールは OS が再起動されても import
され続けますので、暗号化したデバイスが attach されていないとデバイス
open ができない障害が発生したプールの状態になると思います。
 その状態で暗号化したデバイスが attach されてアクセスできるようになると
ONLINE になって tank2 が利用できるようになるという流れだと思います。

> $ sudo geli attach -k /hogehoge/geli.key /dev/ada1
> のように暗号化したデバイスをアタッチしたあとに、
> $ zpool list
> を実行しても、zpoolが表示されません。
> $ sudo zpool import
> を実行すると、import可能なzpoolとして表示され、実際に、importも
> 可能なのですが、再起動後に再アタッチして、zpool listとしても、
> やはり、zpoolは表示されません。再起動・再アタッチの度にimport
> しなければならない状況です。

 R13 においてはプールを一度 import しても OS を再起動したりした場合は
明示的にあらためて import してやらないと import されなくなりました。
よって OS 起動後暗号化したデバイスを attach しただけではそのデバイスが
生えてくるだけで、ZFS としては何も起こりません。
 すなわち OS 起動後 tank2 を利用したいなら、川又さんがここで書かれて
いらっしゃる通り毎回、

    1. 暗号化したデバイスを attach する
    2. tank2 を import する

という手順が必要だと思います。

 #  もう少し述べておきますと、zfs_enable="YES" により OS 起動時に
 # zpool import -a は試みられますが、(恐らく川又さんの設定では)
 # その時点で暗号化されたデバイスが attach されていないので tank2
 # が import される事はありません。
 #  /etc/rc.conf に
 #
 #    geli_devices="ada1"
 #    geli_ada1_flags="-k /hogehoge/geli.key"
 #
 # とかの記述をしておけば OS 起動時に全て解決すると思いますが、
 # この辺りはあえて起動時には attach しない事にしているという
 # 事でいいでしょうか?

> $ ls -l /etc/zfs
> total 4
> -rw-r--r--  1 root  wheel     0  1月  5 10:13 exports
> -rw-r--r--  1 root  wheel  1448  5月  2 11:07 zpool_tank2.cache
> -rw-r--r--  1 root  wheel  1416  5月  2 11:07 zpool.cache

 こちらに関しては zpool.cache も zpool_tank2.cache も置き場所は同じ
ようですし、わざわざ /etc/zfs/zpool_tank2.cache にする必要は無いような
気はします…

 以上、どうぞよろしくお願いいたします。

-- 
 三好勝幸 (Katsuyuki Miyoshi)


freebsd-users-jp メーリングリストの案内