Booting from ZFS raidz
Stefan Bethke
stb at lassitu.de
Fri Dec 19 14:23:27 PST 2008
Am 17.12.2008 um 19:25 schrieb Doug Rabson:
> I've been working on adding raidz and raidz2 support to the boot
> code and I have a patch which could use some testing if anyone here
> is interested. This http://people.freebsd.org/~dfr/raidzboot-17122008.diff
> adds support for raidz and raidz2. The easiest way to prepare a
> bootable pool is to put a GPT boot partition on each disk that will
> make up the raidz pool and install gptzfsboot on the boot partition
> of every drive.
Not sure I did things the right way, and it doesn't appear to be
working correctly. I'm trying this in VMware Fusion, with three SCSI
disks, which I configured like this:
Updated sources yesterday, then applied the patch and added
LOADER_ZFS_SUPPORT?=YES to make.conf, then make buildworld buildkernel.
Created a GPT label and one partition on each of the three drives:
gpart create -s gpt $1
gpart add -b 34 -s 128 -t freebsd-boot $1
gpart bootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 $1
gpart add -b 512 -s 41900000 -t freebsd-zfs $1
gpart list $1
(The disks are 20GB each)
root at freebsd-current:~# gpart list da3
Geom name: da3
fwheads: 255
fwsectors: 63
last: 41943006
first: 34
entries: 128
scheme: GPT
Providers:
1. Name: da3p1
Mediasize: 65536 (64K)
Sectorsize: 512
Mode: r0w0e0
rawtype: 83bd6b9d-7f41-11dc-be0b-001560b84f0f
label: (null)
length: 65536
offset: 17408
type: freebsd-boot
index: 1
2. Name: da3p2
Mediasize: 21452800000 (20G)
Sectorsize: 512
Mode: r1w1e1
rawtype: 516e7cba-6ecf-11d6-8ff8-00022d09712b
label: (null)
length: 21452800000
offset: 262144
type: freebsd-zfs
index: 2
Consumers:
1. Name: da3
Mediasize: 21474836480 (20G)
Sectorsize: 512
Mode: r1w1e2
Created a raidz pool:
# zpool create tank raidz da1p2 da2p2 da3p2
Populated the filesystem with
# cd /usr/src && make installworld installkernel distribution DESTDIR=/
tank
Added zfs_load="YES" and vfs.root.mountfrom="zfs:tank" to loader.conf
When trying to boot, I get a number of "error 4 lba xxx", then "ZFS: i/
o error - all block copies are unavailable". The loader starts up, but
cannot load /boot/loader.conf or /boot/device.hints. The LBA blocks
are all towards the end of the disks, in the 4294626000 and up range.
Booted again from a different disk and ran zpool scrub; waited for
that to complete without errors.
Next boot try now gives me (transcribed by hand):
ZFS: i/o error - all block copies unavailable
ZFS: can't read MOS
ZFS: unexpected object set type lld
ZFS: unexpected object set type lld
FreeBSD/i386 boot
Default: tank:/boot/kernel/kernel
boot:
ZFS: unexpected object set type lld
FreeBSD/i386 boot
Default: tank:/boot/kernel/kernel
boot:
Booting again from a different disk, running zpool status reveals no
errors. Running scrub again, then next boot try.
root at freebsd-current:~# zpool scrub tank
root at freebsd-current:~# zpool status
pool: tank
state: ONLINE
scrub: scrub in progress for 0h0m, 11.18% done, 0h0m to go
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da1p2 ONLINE 0 0 0
da2p2 ONLINE 0 0 0
da3p2 ONLINE 0 0 0
errors: No known data errors
root at freebsd-current:~# zpool status
pool: tank
state: ONLINE
scrub: scrub completed after 0h0m with 0 errors on Fri Dec 19
22:40:18 2008
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
raidz1 ONLINE 0 0 0
da1p2 ONLINE 0 0 0
da2p2 ONLINE 0 0 0
da3p2 ONLINE 0 0 0
errors: No known data errors
On the third boot try, same errors as on the second one.
Stefan
--
Stefan Bethke <stb at lassitu.de> Fon +49 170 346 0140
More information about the freebsd-fs
mailing list