Date: Tue, 10 Jan 2012 19:18:27 +0100 From: Frank Bartels <knarf@knarf.de> To: freebsd-fs@freebsd.org Subject: Mounting from zfs:zroot failed with error 6. Message-ID: <20120110181827.GA7601@server-king.de>
next in thread | raw e-mail | index | archive | help
Hi, I use FreeBSD 9.0-RELEASE. I boot from USB stick (16 GB) using gptzfsboot. Everything works fine. In the past weeks I've read a lot about the 4 KB alignment and ashift=12. But at the time I've created the stick the first time I had no idea about all these problems. I still have no clue what the physical sector size of my USB stick is (more than 4 KB for sure, maybe 128 KB or 256 KB?) and why gnop does not allow more than 8 KB, but that's another story. This is my old stick, created the wrong way: bkool:/root# gpart show da1 => 34 30883773 da1 GPT (14G) 34 128 1 freebsd-boot (64k) 162 8019968 2 freebsd-swap (3.8G) 8020130 22863677 3 freebsd-zfs (10G) And this is the new one, created the right way: bkool:/root# gpart show da0 => 34 30871485 da0 GPT (14G) 34 6 - free - (3.0k) 40 128 1 freebsd-boot (64k) 168 1880 - free - (940k) 2048 8388608 2 freebsd-swap (4.0G) 8390656 22480863 3 freebsd-zfs (10G) So my plan is to create a new zpool with altroot= and cachefile=, rsync the old stick to the new one, copy over the cachefile, double check loader.conf vfs.root.mountfrom= and zfs bootfs=. This worked several times before in other environments. But here it does not. If I try to boot, the new stick runs gptzfsboot, loads the kernel and fails with "Mounting from zfs:bkool9 failed with error 6.". In the past (maybe it was with 8.2-RELEASE) I had the same problem. The solution was to type "zfs:zroot" (*same* value from loader.conf) at the prompt and it worked. But this time this "trick" does not help. I've seen this error message several times now. I tried to create the new zpool with ashift=12 (gnop -S 4K) and ashift=9. I double checked gpart bootcode. kernel is GENERIC with DDB enabled, no other changes. But it won't mount root. The interesting part is, if I boot from the old stick and inspect the new one, I see this: bkool:/root# zpool import pool: bkool9 id: 2362879880167335458 state: FAULTED status: One or more devices contains corrupted data. action: The pool cannot be imported due to damaged devices or data. The pool may be active on another system, but can be imported using the '-f' flag. see: http://www.sun.com/msg/ZFS-8000-5E config: bkool9 FAULTED corrupted data 5856161150314576551 UNAVAIL corrupted data But, if I tell zpool to look for devices in /dev, I get this: bkool:/root# zpool import -d /dev pool: bkool9 id: 2362879880167335458 state: ONLINE action: The pool can be imported using its name or numeric identifier. config: bkool9 ONLINE gpt/bkool9-disk0 ONLINE What's going on here? Why is the kernel not able to find the zpool during boot (after loading the loader and kernel from it!) even if "/dev/gpt/bkool9-disk0" is part of zpool.cache? And why is looking for devices in /dev or /dev/gpt not default if I use zpool import? The manual page says "/dev/dsk" is default, but does this not only make sense under Solaris? And what does "5856161150314576551" mean? Where does the information about the pool bkool9 come from if the only vdev is UNAVAIL and there are no hints in /boot/zfs/zpool.cache? Thanks, Frank
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120110181827.GA7601>