[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 メーリングリストの案内