#4 ZFS简易入门
ZFS特性简介
真正实现了RIAD的承诺(廉价磁盘冗余阵列),在raidz1,2,3模式下,分别允许掉盘1块,2块,3块而不丢失任何数据。并且重建过程只应用于新盘,恢复数据比硬raid安全很多。 需要大内存支持,因为zfs需要内存为其文件系统做map缓存,一般比例为1TB对应1GB内存。 需要留一定的存储空间,不得低于90%,否则性能急剧下降。 无法动态升级存储池,需要提前确定好raid级别。raidz1需要至少(2+1),raidz2需要至少(3+2),raidz3需要至少(5+3)。
ZFS安装指南
sudo apt install zfsutils-linux -y验证zfs安装
which zfsZFS简单上手
我们以组raidz为例进行演示,1块系统盘+4块从盘。
备注:由于Ubuntu 20.10已经支持zfs了,所以zfs的安装就此跳过。
列出所有磁盘驱动器
msmn-2010@msmn2010-vm:~$ lsblk -S
NAME HCTL TYPE VENDOR MODEL REV SERIAL TRAN
sda 32:0:0:0 disk VMware, VMware_Virtual_S 1.0 spi
sdb 32:0:1:0 disk VMware, VMware_Virtual_S 1.0 spi
sdc 32:0:2:0 disk VMware, VMware_Virtual_S 1.0 spi
sdd 32:0:3:0 disk VMware, VMware_Virtual_S 1.0 spi
sde 32:0:4:0 disk VMware, VMware_Virtual_S 1.0 spi
sr0 3:0:0:0 rom NECVMWar VMware_Virtual_SATA_CDRW_Drive 1.00 01000000000000000001 satasd[x]为SCSI设备标识,我们有 a,b,c,d,e 五块硬盘,其中sda已经用作了系统盘了。接下来将 b,c,d,e 四块盘组一个raidz
sudo zpool create [储存池名称] [raid级别] [硬盘1] [硬盘2] [硬盘3] [...]
示例
创建完成后使用 zpool status 来查看池状态
其中bpool(引导池)和rpool(根池)是安装ubuntu20.10时建立的zfs池,可以用zfs list查看。
bpool挂载 /boot,rpool挂载/
zfs-storage 就是我们那四块从盘建立的zfs存储池。为了验证后面存储池掉盘后不丢数据的效果,先找一个大文件,检验MD5并记录。
拔掉存储池中的一块硬盘,模拟硬盘物理损坏掉盘的效果。 并且再次下载一些文件到zfs-storage目录中。此时,查看存储池状态就会发现里面有错误了。显示一块硬盘FAULTED。
这只是raid级别降级了,需要尽快使用新硬盘顶替。为了验证数据没有丢,我们可以重新使用 md5sum 命令来验证下文件完整性。
这时候插入新的硬盘并且使用重建命令
zpool replace [储存池名称] [旧设备名称] [新设备名称]
示例
然后查看状态可以发现硬盘全部ONLINE了
ZFS性能测试
ZFS压缩
为节省空间,开启ZFS压缩,当然也可以用lz4
开启lz4 压缩(性能测试有待跟进)
ZFS Raidz Performance, Capacity and Integrity https://calomel.org/zfs_raid_speed_capacity.html
ZFS参考文档
Ubuntu Kernel Team ZFS Reference Guide https://wiki.ubuntu.com/Kernel/Reference/ZFS
最終更新
役に立ちましたか?