GPT boot with ZFS RAIDZ "ZFS: i/o error - all block copies
unavailable"
Robert Noland
rnoland at FreeBSD.org
Tue Oct 27 23:19:23 UTC 2009
On Wed, 2009-10-28 at 07:17 +0900, Norikatsu Shigemura wrote:
> 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.
Ok, so does it still boot? Or do you still get an error?
robert.
--
Robert Noland <rnoland at FreeBSD.org>
FreeBSD
More information about the freebsd-current
mailing list