[FreeBSD-users-jp 96417] Re: gpartでOperation not permitted

Hiroki Sato hrs @ allbsd.org
2019年 7月 28日 (日) 09:46:24 UTC


佐藤です。

KUNIYOSHI <nao_k @ din.or.jp> wrote
  in <20190723145437.75F6.ECFBC552 @ din.or.jp>:

na>  gpartで、Operation not permittedエラーが出てしまいました。
na>  数日調べてみても原因らしきものに辿り着けませんでした。
na>  原因に心当たり等あれば教えてください。よろしくお願いします。
(snip)
na>  zfsのバージョンも上がったようだったので、zpool upgradeもしてみたところ、
na>
na> # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada8
na> # gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ada9
na>
na>  の両方で、
na>
na> gpart: /dev/ada8p1: Operation not permitted
na> gpart: /dev/ada9p1: Operation not permitted
na>
na>  となってしまいました。
na>
na>  kern.geom.debugflagsは、問題なく0x10になっています。

 これは正常な動作です。過去のバージョンでは、この手順で
 gpart bootcode -p が実行できていたのでしょうか?
 gmirror を設定する前に実行したのではないかと想像しますが、
 いかがでしょうか。

 mirror/boot は /dev/ada8p1 と /dev/ada9p1 で
 構成されていて、次のような親子関係があるのだと思います。

 ada8 -> ada8p1 -> mirror/boot

 上記の gpart bootcode ada8 コマンドは、
 -b で指定されたファイルの内容を /dev/ada8 に、
 -p で指定されたファイルの内容を /dev/ada8p1 に書き込もうとします。
 一方、GEOM の親子関係が前述のように設定されている場合、
 ada8 や ada8p1  へのアクセスは禁止されます。

 debugflags を使うと禁止されているアクセスの一部を許可することが
 可能ですが、この場合、debugflags=16 であっても ada[89]p1 への
 書き込みはできません。理由は、debugflags=16 によって
 書き込みが許可されるのは、GEOM ランクが 1 のデバイスだからです。

 GEOM ランクとは、親子関係に下位から数字をつけたものです。
 上記構成をデバイス名(ランク)という形で表現すると、
 ada8 の場合は次のようになります。

 ada8(1) -> ada8p1(3) -> mirror/boot(4)

 ランク 1 とは、子に何も持たない GEOM です。
 物理ドライブに対応する GEOM の多くは、ランク 1 になります。

 したがって、ada8 にアクセスする gpart bootcode -b は
 成功し、ada8p1 にアクセスする gpart bootcode -p は失敗します。

na> #  gpart bootcode -p /boot/gptzfsboot -i 1 ada8
na> #  gpart bootcode -p /boot/gptzfsboot -i 1 ada9
na>
na>  ここがNGでした。

 この構成では、次のようにして mirror/boot に
 直接書き込む以外に方法はないように思います。

 # dd if=/boot/gptzfsboot of=/dev/mirror/boot

 gmirror を使用している際に、debugflags=16 を使った
 下位 GEOM プロバイダの直接操作を説明している文書が
 いくつかあるのですが、
 これが可能なのは、ランク 1 のプロバイダを使って
 直接 gmirror を構成している時だけです。

-- Hiroki
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: 無し
型:         application/pgp-signature
サイズ:     163 バイト
説明:       無し
URL:        <http://lists.freebsd.org/pipermail/freebsd-users-jp/attachments/20190728/2590e21b/attachment.sig>


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