Date: Fri, 03 Feb 2012 14:46:34 +0100 From: Peter Maloney <peter.maloney@brockmann-consult.de> To: freebsd-fs@freebsd.org Subject: Re: ZFS boot problems revisited Message-ID: <4F2BE53A.2030301@brockmann-consult.de> In-Reply-To: <20120203021649.GA87521@server.vk2pj.dyndns.org> References: <20120203021649.GA87521@server.vk2pj.dyndns.org>
next in thread | previous in thread | raw e-mail | index | archive | help
The causes of some zfs boot failures are unknown. I don't know why it does it. I updated 2 nearly identical systems to 8-STABLE from 8.2-RELEASE and (if I remember correctly) got the same error as you on one but not the other. I have only tried 2 way mirrors so far, so I might not know much about this specific issue, but what comes to mind is what I would call the 'standard zfs boot fix', which I first found here: http://freebsd.1045724.n5.nabble.com/Difficulties-to-use-ZFS-root-ROOT-MOUNT-ERROR-td4771828.html It basically goes like this: Boot off of something with zfs support (eg. a DVD). Then run these commands (assuming here your root is named "zroot"). zpool import -o altroot=/z -o cachefile=/tmp/zpool.cache zroot zfs set mountpoint=/ zroot cp /tmp/zpool.cache /z/boot/zfs/zpool.cache shutdown -r now The "mountpoint=/" part is required. And then optionally, you would set it back to "legacy" before the reboot if that is the way you do things. I do not prefer "mountpoint=legacy", which most people seem to have and seems to be in all the howtos, because then if something goes wrong, altroot will work without unmounting /usr, /var, etc. first and remounting it all after / is mounted. (which affects things like chroot, but not simply editing conf if it is in the same dataset). And do not export the pool, or forget/skip the cache file part, or you get the same error that you started with. And if you messed up your config somehow (maybe with mergemaster), you should edit it before the reboot... better double check. /etc/rc.conf: =========== zfs_enable="YES" /boot/loader.conf =========== zfs_load="YES" vfs.root.mountfrom="zfs:zroot" #depending on your install and hardware, maybe you want to load mps (8.2-RELEASE). With 8-STABLE you probably don't need this. I wouldn't just assume the new GENERIC kernel of one version loads the same drivers as your old GENERIC kernel. mps_load="YES" On 02/03/2012 03:16 AM, Peter Jeremy wrote: > I recently ran into the dreaded "all blocks unavailable" error whilst > upgrading to a recent 8-stable with a 3-way mirrored ZFS root. > Installing the latest gptzfsboot helped a bit but still reported > errors and the boot failed. I was under the impression that the > latest boot code had resolved all the problems but it seems there are > still some cases it can't cope with. Comparing the code I built with > the latest head shows no relevant differences (disabling SSE3 & FP and > changing a constant used for RAIDZ parity calculations). > > Are there any known cases that the boot code still doesn't handle? > > The failures led me to investigate zfsboottest & zfsboottest.sh. > Unfortunately, these tools still have some problems: > 1) zfsboottest is still built as native dynamic executable. I'm not > sure if being dynamic presents a problem (I would hope it didn't) > but it should be an i386 executable on amd64. The attached patch > changes it to be a static i386 executable. > 2) vfs.root.mountfrom is documented (in sys/kern/vfs_mountroot.c in > 9.x and later or sys/kern/vfs_mount.c in 8.x and earlier) to take a > space-separated list of <vfsname>:[<path>]. zfsboottest.sh expects > it to be a bare zpool name. The attached patch adds the "zfs:" > prefix but still limits it to a single item. > 3) The "you may not be able to boot" message will never appear because > it's testing the result of the preceeding "rm -f", rather than the > diff (as wanted). The attached patch fixes this. > > I'm still not confident that the flags used to build zfsboottest are > equivalent to those used to build gptzfsboot but will leave that for > later investigation. > > The attached patches are relative to 8-stable CVS but there are no > differences to head. > -- -------------------------------------------- Peter Maloney Brockmann Consult Max-Planck-Str. 2 21502 Geesthacht Germany Tel: +49 4152 889 300 Fax: +49 4152 889 333 E-mail: peter.maloney@brockmann-consult.de Internet: http://www.brockmann-consult.de --------------------------------------------
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4F2BE53A.2030301>