On 07/01/2024 15:49, Lev Serebryakov wrote:
On 05.01.2024 18:28, Lev Serebryakov wrote:
After that my server fails to boot, gtpzfsboot from second disk
(ada1) reports several "zio_read error: 5" and
ZFS: i/o error - all block copies unavailable
ZFS: can't read MOS of pool zroot
after that.
I've re-created pool from scratch
zpool create znewroot ada0p3 && zfs send zroot | zfs receive znewroot
&& zpool destroy zroot && zpool attach znewroot ada0p3 ada1p3
but gptzfsboot still can not boot from it with same diagnostics :-(
How large are your disks in a question?
I was bitten by this not a long time ago when migrating my 2TB pool by
zfs send to larger disks (4TB), then I see the error:
ZFS: i/o error - all block copies unavailable
ZFS: can't read MOS of pool zroot
As far as I search the internet it is caused by the boot code (later
stage which is in a file in /boot directory) was moved too far from the
beginning of the disk and some old BIOS cannot allow the system to
continue booting. I am not a boot expert so my words can be wrong but I
hope you get the point. It can be result of the system update, or zfs
send | zfs recv. In my case the pool was unbootable in HP Miniserver Ge
8 but boots perfectly fine in an old Supermicro with X9SCA-F board. The
problem is not in a pool, nor disks, nor FreeBSD but in a BIOS.
I solved it by creating new mirrored pool of the size about 40GB at the
beginning of the disks (40GB GPT partition for freebsd-zfs) where I
installed the FreeBSD system and next freebsd-zfs partition covering the
rest of the 4TB disks for data storage. Everything works fine.
You can also have just a small /boot partition for the boot and later
overlayed by main ZFS pool, but it seems to me as bad for maintaining.
example of my partitions layout
# gpart show -p
=> 40 7814037088 ada0 GPT (3.6T)
40 1024 ada0p1 freebsd-boot (512K)
1064 40960 ada0p2 efi (20M)
42024 83886080 ada0p3 freebsd-zfs (40G)
83928104 20971520 ada0p4 freebsd-swap (10G)
104899624 7707033600 ada0p5 freebsd-zfs (3.6T)
7811933224 2103904 - free - (1.0G)
It can also be avoided if your machine supports EFI boot, but my HP
Microserver Gen 8 does not support it.
Kind regards
Miroslav Lachman