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

KIRIYAMA Kazuhiko kiri @ truefc.org
2021年 7月 19日 (月) 21:55:48 UTC


On Mon, 19 Jul 2021 09:50:03 +0900,
Hideo Kuwabara wrote:
> 
> 返信ありがとうございます。
> 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辛い書き込んでますが、問題無くリブートできております。

このあたりの話は [1] にありますが,結局 RAID カードの JBOD
でディスクを 2TB に分割した状態にしてやれば FreeBSD 側で認識
するので,そいつらをまとめて RAIDZ3 とかにするしかできないの
ではと思います.うちでは以下のようなかんじで使ってます.

root @ vm:~ # uname -a
FreeBSD xx.xxxxxx.xxx 14.0-CURRENT FreeBSD 14.0-CURRENT #1 main-n244894-f61e92ca5a23: Fri Feb 19 07:41:10 JST 2021     admin @ xx.xxxxxx.xxx:/usr/obj/usr/src/amd64.amd64/sys/GENERIC  amd64
root @ vm:~ # zpool list
NAME       SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
bootpool  1.88G   320M  1.56G        -         -     1%    16%  1.00x    ONLINE  -
zroot     20.2T  4.77T  15.5T        -         -     8%    23%  1.00x    ONLINE  -
root @ vm:~ # zpool status
  pool: bootpool
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: scrub repaired 0B in 00:00:02 with 0 errors on Wed Nov  4 20:36:05 2020
config:

        NAME          STATE     READ WRITE CKSUM
        bootpool      ONLINE       0     0     0
          mirror-0    ONLINE       0     0     0
            mfid0p2   ONLINE       0     0     0
            mfid1p2   ONLINE       0     0     0
            mfid2p2   ONLINE       0     0     0
            mfid3p2   ONLINE       0     0     0
            mfid4p2   ONLINE       0     0     0
            mfid5p2   ONLINE       0     0     0
            mfid6p2   ONLINE       0     0     0
            mfid7p2   ONLINE       0     0     0
            mfid8p2   ONLINE       0     0     0
            mfid9p2   ONLINE       0     0     0
            mfid10p2  ONLINE       0     0     0
            mfid11p2  ONLINE       0     0     0

errors: No known data errors

  pool: zroot
 state: ONLINE
status: Some supported features are not enabled on the pool. The pool can
        still be used, but some features are unavailable.
action: Enable all features using 'zpool upgrade'. Once this is done,
        the pool may no longer be accessible by software that does not support
        the features. See zpool-features(5) for details.
  scan: scrub repaired 0B in 01:14:07 with 0 errors on Wed Nov  4 21:50:23 2020
config:

        NAME          STATE     READ WRITE CKSUM
        zroot         ONLINE       0     0     0
          raidz3-0    ONLINE       0     0     0
            mfid0p4   ONLINE       0     0     0
            mfid1p4   ONLINE       0     0     0
            mfid2p4   ONLINE       0     0     0
            mfid3p4   ONLINE       0     0     0
            mfid4p4   ONLINE       0     0     0
            mfid5p4   ONLINE       0     0     0
            mfid6p4   ONLINE       0     0     0
            mfid7p4   ONLINE       0     0     0
            mfid8p4   ONLINE       0     0     0
            mfid9p4   ONLINE       0     0     0
            mfid10p4  ONLINE       0     0     0
            mfid11p4  ONLINE       0     0     0

errors: No known data errors
root @ vm:~ # 


[1] http://freebsd.1045724.x6.nabble.com/ZFS-I-O-error-blocks-larger-than-16777216-are-not-supported-tt6265032.html#none

> 
> 
> 
> 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 @ 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"
> 

---
きりやま <kiri @ truefc.org>


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