[FreeBSD-users-jp 96834] Re: ZFSが突然bootしなくなりました

Hideo Kuwabara kuwa @ superconnect.or.jp
2021年 7月 19日 (月) 00:50:18 UTC


返信ありがとうございます。
Root on ZFSの甘い罠でした。

gptzfsbootを使っていて、gptのパーティションなので、4Tは大丈夫かと思っていたのですが、思い込みでした。

gpt はあくまで mbr の上位互換があるので、ブートブロックは2T以内に置かないと、2Tを使った頃にブート出来なくなります。

/boot を移動してから tarで解凍すると動くとか、bootコードを再書き込みすると治るとかありますが、運が良いと治るようです。

ブートローダーの置いてあるファイルシステムの最後GPTの管理テーブルを書くらしいですが、BIOSが最後をレポートするときにINT13しかないので、2Tを超えた時に正しい値を返すと限らないとのことです。

管理テーブルが行方不明になると救いようが無いと思います。ストライピングだし無理かと思います。

UEFIの場合にはAPIがあって大丈夫のようですね。

状態は、USBでブートすれば、ZFSは見えない状態でしたが、-f でimportしたら普通に見えるようになりました。

こうなるとデータ救っておいて再インストールかと思ってます。

あ、一つ試してない心残りがあります。
gpart recover ada0

これをやってから再インストールすれば良かったなと心残りの状態です。

最終的には、プールを1個追加して/bootdirを
zfsroot にマウントしました。ここに/bootを移動してから、リンクしました。
boodir は、freebsd-zfs で1gのスライスを切りました。UEFIがないので、GPTの数バイトの管理テーブルはここに書かれると思います。
ブートローダーのプールは、zfs mirror
に一応しました。

現在は6TB辛い書き込んでますが、問題無くリブートできております。



2021年7月18日(日) 0:52 skyblue <zyxjulep @ gmail.com>:

> 悸村です。
> 当方、たいていは ufs を使用しているので、zfs に関して詳しくな
> いのですが、ちょっと気になる点があります。
>
> On Mon, 5 Jul 2021 19:47:28 +0900
> Hideo Kuwabara <kuwa @ superconnect.or.jp> wrote:
>
> > ハードディスクは入れ替えたばかりなので、ハードの不良ではないと思います。
> > 少し前に、 installworld, installkernel で 11.4p4 で動かしていました。
>
> /usr/src/UPDATING の 'ZFS notes' はお読みになられたでしょうか。
> > ZFS notes
> > ---------
> > When upgrading the boot ZFS pool to a new version, always follow
> > these two steps:
> >
> > 1.) recompile and reinstall the ZFS boot loader and boot block
> > (this is part of "make buildworld" and "make installworld")
> >
> > 2.) update the ZFS boot block on your boot drive
> >
> > The following example updates the ZFS boot block on the first
> > partition (freebsd-boot) of a GPT partitioned drive ada0:
> > "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
> >
> > Non-boot pools do not need these updates.
>
> 恐らく、installworld の直後あたりに、
> > "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
> と、boot block を更新する作業が必須のように書いてあります。
>
> 我が家では追試のテストが出来ない現状です。
> こちらの勘違いでしたら、外している筈なので、ご容赦ください。
>
> なお、当該の注記は、11.4 と 13.0 では、幾らか差異があります。
>
> --- /usr/src/UPDATING   2020-06-12 20:48:06.000000000 +0900
> +++ /y2/UPDATING-fb13.0-p3      2021-04-09 09:24:00.000000000 +0900
>
> @@ -1707,9 +2268,11 @@
>
>         2.) update the ZFS boot block on your boot drive
>
> -       The following example updates the ZFS boot block on the first
> -       partition (freebsd-boot) of a GPT partitioned drive ada0:
> -       "gpart bootcode -p /boot/gptzfsboot -i 1 ada0"
> +       The following example updates the ZFS boot block on the
> +       freebsd-boot partition of a GPT partitioned drive ada0:
> +       "gpart bootcode -p /boot/gptzfsboot -i $N ada0"
> +       The value $N will typically be 1 (if booting from BIOS) or 2 (if
> +       booting from EFI).
>
> 13.0 では、いわゆる legacy BIOS と UEFI では別の指定をするように
> 記述されています。
>
>
> On Mon, 5 Jul 2021 19:47:28 +0900
> Hideo Kuwabara <kuwa @ superconnect.or.jp> wrote:
>
> > 桑原と申します。
> >
> > FreeBSD11.4 p4 にして暫くしたら突然bootしなくなりました。
> >
> >
> > Attempting Boot From Hard Drive (C:)
> > ZFS: i/o error - all block copies unavaillavle
> > ZFS: cat't read MOS of pool zroot
> > gptzfsboot: failed to mount default pool zroot
> >
> > FreeBSD/x86 boot
> >
> > 復旧のヒントを頂ければと思います。
> >
> > ハードディスクは入れ替えたばかりなので、ハードの不良ではないと思います。
> > 少し前に、 installworld, installkernel で 11.4p4 で動かしていました。
> >
> > USBでbootしても、zpool は見えませんでした。
> > そこで、 zpool  import zroot しましたが はねられ 指示に従って
> >  zpool import -f zroot したら zpool は正常に見えるようになり、
> > 手動でマウントすると中身は正しく見えますが、ブートできません。
> > 何かお呪いが必要でしょうか?
>
> --
> 悸村成一
> _______________________________________________
> freebsd-users-jp @ freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-users-jp
> To unsubscribe, send any mail to "freebsd-users-jp-unsubscribe @ freebsd.org
> "
>
-- 

Super Connect Network
Hideo Kuwabara


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