delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

16 Sep 2009

ZFS实现快速部署(作弊条)

FreeBSD从8.0开始支持从ZFS引导系统,因此,可以使用ZFS的快照功能来实现快速部署。

新机器使用LiveFS启动,Fix it,CDROM。

kldload /dist/boot/kernel/nullfs.ko

mount_nullfs /dist/boot /boot

kldload tmpfs

kldload zfs

如果需要,此时用dd抹除硬盘内容,例如 dd if=/dev/zero of=/dev/da0 bs=1m count=1

gpart create -s gpt da0(重复此步直到所有硬盘皆包含GPT分区表)

gpart add -b 34 -s 128 -t freebsd-boot da0(实际上只有启动盘需要,不过64K空间对现代硬盘来说基本上可以忽略不计)

gpart add -b 162 -s 8388608 -t freebsd-swap da0(根据需要酌情配置)

gpart add -b 8388770 -t freebsd-zfs da0

cd /boot

gpart bootcode -b pmbr da0(建议所有盘有freebsd-boot分区的盘都做)

gpart bootcode -p gptzfsboot -i 1 da0(所有有freebsd-boot分区的盘都做)

glabel label swap0 /dev/da0p2(swap1,2,3,4,…类推)

glabel label vdsk0 /dev/da0p3(vdsk1…类推)

zpool create -m legacy 集群名 raidz2 /dev/label/vdsk0 /dev/label/vdsk1 .. spare /dev/label/vdskn

ifconfig em0 inet x.x.x.x/m

nc -l 80 | zfs receive -vF 集群名

在样本机上执行:zfs send 集群名@快照名 | nc 客户机IP 80

之后,在安装的机器上mount -t zfs 集群名 /mnt,然后把/boot/zfs内容复制到/mnt/boot/zfs,修改etc/rc.conf等,即可。如果配置时使用的是DHCP,则此过程可进一步简化。