Date: Sat, 28 Jan 2012 00:23:37 -0800 From: Ravi Pokala <rp_freebsd@mac.com> To: freebsd-geom@freebsd.org Subject: Bootable RAID10 on 9.0-RELEASE Message-ID: <CB48F088.AB1D7%rp_freebsd@mac.com>
next in thread | raw e-mail | index | archive | help
Hi folks, I'm putting together a server, and I want to balance performance and reliability by putting everything on a four-disk RAID10 array. +----------+ +----------+ +----------+ +----------+ | da0 | | da1 | | da2 | | da3 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | +----------+ +----------+ +----------+ +----------+ Based on past experience with creating mirrored roots on older versions (but with the added complexity of the stripes), I would expect the procedure to look something like this, but I would like confirmation and/or corrections: 1) Install the base system on a spare drive: +-----------------------------------+ | dad0p1 freebsd-boot loader | +-----------------------------------+ | dad0p2 freebsd-ufs / | +-----------------------------------+ | dad0p3 freebsd-swap swap | +-----------------------------------+ | dad0p4 freebsd-ufs /var | +-----------------------------------+ | dad0p5 freebsd-ufs /usr | +-----------------------------------+ 2) Boot said drive to single-user mode. 3) Use `geom part' to create appropriately sized partitions on each of the drives for the RAID. +----------+ +----------+ +----------+ +----------+ | da0p1 | | da1p1 | | da2p1 | | da3p1 | +----------+ +----------+ +----------+ +----------+ | ... | | ... | | ... | | ... | +----------+ +----------+ +----------+ +----------+ | da0pN | | da1pN | | da2pN | | da3pN | +----------+ +----------+ +----------+ +----------+ 4) Load the mirror driver: geom mirror load 5) Create the mirrors: geom mirror label [-b load?] gm0p1 /dev/da0p1 /dev/da1p1 ... geom mirror label [-b load?] gm0pN /dev/da0pN /dev/da1pN geom mirror label [-b load?] gm1p1 /dev/da2p1 /dev/da3p1 ... geom mirror label [-b load?] gm1pN /dev/da2pN /dev/da3pN +--------------------------+ +--------------------------+ | +----------+ | | +----------+ | | gm0p1 | da0p1 |\ | | gm1p1 | da2p1 |\ | | +----------+ \ | | +----------+ \ | | ... | ... |\|\ | | ... | ... |\|\ | | +----------+ \ + | | +----------+ \ + | | gm0pN | da0pN |\|\| | | gm1pN | da2pN |\|\| | | +----------+ \ + | | +----------+ \ + | | \ \|\| | | \ \|\| | | \~~~~~~~~~~~\ + | | \~~~~~~~~~~~\ + | | \ da1pN \| | | \ da3pN \| | | +-----------+ | | +-----------+ | +--------------------------+ +--------------------------+ 6) Load the stripe driver: geom stripe load 7) Create the stripes: geom stripe label gs0p1 /dev/mirror/gm0p1 /dev/gm1p1 ... geom stripe label gs0pN /dev/mirror/gm0pN /dev/gm1pN +--------------------------------------+ | +----------+ +----------+ | | gs0p1 | gm0p1 | | gm1p1 | | | +----------+ +----------+ | +--------------------------------------+ | +----------+ +----------+ | | ... | ... | | ... | | | +----------+ +----------+ | +--------------------------------------+ | +----------+ +----------+ | | gs0pN | gm0pN | | gm1pN | | | +----------+ +----------+ | +--------------------------------------+ 8) Create filesystems on the stripes: newfs -J -U /dev/stripe/gs0p1 ... newfs -J -U /dev/stripe/gs0pN 9) Remount / and /boot to read-write, edit /etc/fstab to change all references to /dev/dad0 to /dev/stripe/gs0, edit /boot.loader.conf to add the loading of the mirror and stripe modules at boot, and change back to read-only. 10) Copy all files from dad0pN to gs0pN. 11) Reboot 12) Victory! Somehow, I suspect I'm wrong. In fact, I really hope I'm wrong - RAID10 is such a common configuration, I expect there must be an easier way. Thanks, rp
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CB48F088.AB1D7%rp_freebsd>