《2022年ZFS文件系统 .pdf》由会员分享,可在线阅读,更多相关《2022年ZFS文件系统 .pdf(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、注意:本文内容已经过时。TODO :需要进行一部分改写,包括:zpool 根 fs 不应挂载、关于如何配置纯ZFS系统的介绍、 4K扇区等话题。FreeBSD 7.0 具备以 ZFS 作为根文件系统的能力。本文将以一台有6 块硬盘的服务器介绍从 FreeBSD/amd64 7.0 LiveFS 光盘(随发行版发行的LiveCD 系统)全新安装一份 FreeBSD ,并使用 ZFS作为根目录的具体方法。存储的规划我们假定有 6 块 750GB的 SATA硬盘, ad0-ad5;系统有 8GB RAM ,希望作为存储服务器。在尽量保证数据完整性和性能的前提下,我们会希望有:使用五块硬盘作为RAID
2、Z1或 RAIDZ2卷;一块硬盘作为备盘;系统的引导和配置信息保存2 份,以便当系统无法引导时进行灾难恢复;适当大小的 swap 空间,在本例中,我们选择的容量是 8GB。分区如下所示:磁盘 a b d ad0 UFS 2GB ZFS ad1 SWAP 2GB ZFS ad2 SWAP 2GB ZFS ad3 SWAP 2GB ZFS ad4 SWAP 2GB ZFS ad5 UFS 2GB ZFS 说明:对于新系统,可以使用 GPT 分区、纯 ZFS 。此时,分配格局大致如下:磁盘分区编号尺寸类型说明ad0 1 94 freebsd-boot 用于存放 FreeBSD的 GPT引导记录,并对
3、齐到 4k 扇区ad0 2 4194304 freebsd-swap 交换分区ad0 3 其余全部freebsd-zfs zfs 初始化命令为:gpart create -s gpt ad0 gpart add -s 94 -t freebsd-boot ad0 gpartbootcode -b /boot/pmbr -p /boot/gptzfsboot -i 1 ad0 gpart add -s 4194304 -t freebsd-swap -l swap0 ad0 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心
4、整理 - - - - - - - 第 1 页,共 5 页 - - - - - - - - - gpart add -t freebsd-zfs -l disk0 ad0 准备使用 LiveFS 光盘引导之后会自动进入sysinstall,选择 Fixit CDROM。进入 Fixit shell,会看到这样的提示符:Fixit# 这时,我们可以开始分区了。首先,初始化覆盖所有磁盘的slice :fdisk -IB /dev/ad0 fdisk -I /dev/ad1 fdisk -I /dev/ad2 fdisk -I /dev/ad3 fdisk -I /dev/ad4 fdisk -IB
5、/dev/ad5 接下来在这些磁盘上初始化bsdlabel 。由于 bsdlabel 需要调用 vi (透过EDITOR 环境变量) ,而 sysinstall会将这个环境变量设置为 /mnt2/stand/vi,因此需要改一下:unsetenv EDITOR bsdlabel -wB /dev/ad0s1 bsdlabel -w /dev/ad1s1 bsdlabel -w /dev/ad2s1 bsdlabel -w /dev/ad3s1 bsdlabel -w /dev/ad4s1 bsdlabel -wB /dev/ad5s1 分别编辑这些 labels 。对于 ad0和 ad5,类似
6、这样:8 partitions: # size offset fstype a: 4194304 16 unused c: * 0 unused d: * * unused 对于 ad1-ad4,类似这样:8 partitions: # size offset fstype b: 4194304 16 unused c: * 0 unused 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 5 页 - - - - - - - - - d: * * unused 我们希望不
7、因为盘序问题导致混乱,因此会用到 geom label 。在本次启动时,我们并不立即创建 ZFS,而只是初始化一个用于启动的 UFS 分区:newfs -L boot /dev/ad0s1a mount -o async /dev/ufs/boot /mnt 下面,从光盘上复制一系列文件到这个分区上:cd /mnt cp -pR /mnt2/*bin /mnt2/boot /mnt2/etc /mnt2/lib* /mnt2/usr /mnt2/var . mkdirdev 接下来进行初步的配置:cd /mnt/boot rmloader.conf mfsroot.gz echo /dev/u
8、fs/boot / ufsrw 0 0 /mnt/etc/fstab echo /dev/ad1s1b none swap sw 0 0 /mnt/etc/fstab echo /dev/ad2s1b none swap sw 0 0 /mnt/etc/fstab echo /dev/ad3s1b none swap sw 0 0 /mnt/etc/fstab echo /dev/ad4s1b none swap sw 0 0 /mnt/etc/fstab touch /etc/rc.conf cd / umount /mnt tunefs -n enable /dev/ufs/boot 现在
9、就可以从硬盘引导系统了。创建 ZFS 从硬盘引导之后,以 root 身份登录。首先,我们为将要加入 zpool 的磁盘指定 GEOM label:glabel label disk0 /dev/ad0s1d glabel label disk1 /dev/ad1s1d glabel label disk2 /dev/ad2s1d glabel label disk3 /dev/ad3s1d glabel label disk4 /dev/ad4s1d glabel label disk5 /dev/ad5s1d 然后,在其上建立 zpool ,我们将这个 zpool 命名为 tank ,将 d
10、isk0-4 作为其raidz1 成员,并使用 disk5 作为热备盘:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 5 页 - - - - - - - - - zpool create tank raidz /dev/label/disk0-4 spare /dev/label/disk5 此时,这个 zpool 会被自动挂接到 /tank 。如果 CPU 比较快,通常启用压缩会改善性能:zfs set compression=on tank 复制文件首先需要为现在我
11、们用来引导的这个 UFS 卷指定一个归宿:mkdir /tank/bootdir 系统引导之后,需要访问某些 /boot 的内容:cd /tank ln -s bootdir/boot boot 复制 / 到 /tank :cd / cp -pR /*bin /etc /lib* /usr /var /tank mtree -deUf /etc/mtree/BSD.root.dist -p /tank mtree -deUf /etc/mtree/BSD.var.dist -p /tank/var chmodu+s,g+s /tank/usr/bin/su 配置以 ZFS作为 / 启动,修改
12、/boot/loader.conf 使其包含:zfs_load=YES vfs.root.mountfrom=zfs:tank 将 zpool 上的 ZFS 挂接方式改为 legacy :zfs set mountpoint=legacy tank 在重启之前,需要修改 /etc/fstab:/dev/ufs/boot /bootdirufsrw 0 0 重新启动系统。此时根目录应该就是 zfs 了,接下来,可以在 /etc 中进行配置。此后,建议使用通常的方式联编系统,以确保文件/ 目录权限的正确性。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
13、 - - - - - 名师精心整理 - - - - - - - 第 4 页,共 5 页 - - - - - - - - - 配置的备份和同步我们前面将 /dev/ad5s1a 留作配置备份卷。这个卷在未来出问题的时候应该是可以帮助你启动的,现在我们来对它进行初始化:newfs -U -L altboot /dev/ad5s1a mkdir -p /altbootdir 接下来我们需要将 /bootdir 的内容复制过去:mount /dev/ufs/altboot /altbootdir cd /bootdir tarcf - * | tar xf - -C /altbootdir 平时将 /altbootdir 卷卸下即可。当对系统的配置进行较大的变动,特别是对zpool 内容进行变动或升级内核之后,应再次重复前面的复制步骤。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 5 页 - - - - - - - - -