GPT boot with ZFS RAIDZ
"ZFS: i/o error - all block copies unavailable"
Norikatsu Shigemura
nork at ninth-nine.com
Tue Oct 27 22:17:42 UTC 2009
Hi rnoland.
On Mon, 26 Oct 2009 10:34:59 -0500
Robert Noland <rnoland at freebsd.org> wrote:
> > >> ZFS: i/o error - all block copies unavailable
> > >> Invalid format
> > >> FreeBSD/i386 boot
> > >> Default: tank:/boot/kernel/kernel
> > >> boot:
> > > Could you type "status" at this point and tell what it shows?
> > If I type status at this point I get:
> > pool: tank
> > config:
> > NAME STATE
> > tank ONLINE
> > raidz1 ONLINE
> > ad4p3 ONLINE
> > ad6p3 ONLINE
> > ad8p3 ONLINE
> > ad10p3 ONLINE
> > Which seems odd, since that's all the drives there are. So if it finds
> > these it's already found all drives. My optimistic "Oh! I'll try and boot
> > again" spirit was however crushed since it just results in the same error.
> Ok, that is both good and frustrating... I haven't produced any boot
> failures with all of the drives visible. Do, note that I just added
> support for reading gang blocks to the loader. (basically untested,
> since I haven't managed to create them at will) You will need to update
> your partition boot code for it to be supported during early boot. i.e.
> gpart bootcode -p /boot/gptzfsboot -i <boot partition> <disk>
> The "all block copies unavailable" is a frustrating error, since all it
> means is a failed read, but we don't get a clue what failed or why.
> With the code that is in -CURRENT it will report gang blocks if found,
> even if it fails to read them.
I confirmed reproduce.
1. zpool list, and get SIZE and CAP.
$ zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 59.5G 48.4G 11.1G 81% ONLINE -
2. reduce AVAIL < 10% with creating dummy file like ...
$ dd if=/dev/zero of=$HOME/DUMMY.FILE bs=1m count=5632
5632+0 records in
5632+0 records out
5905580032 bytes transferred in 49.822200 secs (118533104 bytes/sec)
$ zpool list
NAME SIZE USED AVAIL CAP HEALTH ALTROOT
tank 59.5G 53.9G 5.61G 90% ONLINE -
3. cd /boot/; cp -pr kernel kernel.err
In this time, if reboot, we can get boot time error.
4. rm $HOME/DUMMY.FILE, and reboot
5. boot kernel.err on new-loader.
I can get "ZFS: gang block detected!" message and overrun:D.
More information about the freebsd-current
mailing list