1、什么是zfs文件系统,为什么要使用
- ZFS(Zettabyte File System)文件系统也叫动态文件系统(Dynamic File System),是第一个128位文件系统。ZFS 强健、可伸缩,且易于管理。
- ZFS 使用存储池的概念来管理物理存储。ZFS 将设备聚集到存储池中,而不是强制要求创建虚拟卷。
- 存储池描述了存储的物理特征(设备布局、数据冗余等),并充当可以从其创建文件系统的任意数据存储库。文件系统不再受限于单个设备,允许它们与池中的所有文件系统共享磁盘空间。
2、常用命令
2.1、RAID0 想必大家都知道,它只是将所有磁盘驱动器集成到一个巨大的存储空间而已。它可以提高驱动器读写速度,但无数据容错能力,只要有其中一块磁盘坏掉,就会有数据丢失。
创建raid0命令如下
创建了一个名为 tank 的新池,该池由磁盘 /dev/sdc 和/dev/sdd组成sudo zpool create tank /dev/sdc /dev/sdd
2.2、使用 mirror 关键字就可以实现 ZFS 的 RAID1 功能,RAID1 不用多介绍了吧,就是创建硬盘的 1 对 1 副本。这样不仅可以有数据的完整备份副本,同时还可以提高读写性能。当然,物理磁盘的总存储空间量也会减半。
创建raid1命令如下
sudo zpool create tank mirror /dev/sdc /dev/sdd
2.3、RAID5(RAIDZ1)
ZFS 将 RAID5 功能实现为 RAIDZ1。RAID5 要求驱动器的倍数为 3 , 其中 1/3 的空间用于写入奇偶校验数据,并保留 2/3 的数据存储空间。如果其中一个驱动器出现故障, 阵列将保持联机状态, 但应尽快更换故障磁盘。
创建raid5命令如下
sudo zpool create tank raidz1 /dev/sdc /dev/sdd /dev/sde
2.4、RAID6(RAIDZ2)
RAID6 与 RAID5 类似,但它的工作原理是磁盘数量的 4 倍,而非 3 倍。 它使用 2 倍的奇偶校验数据,允许最多 2 个驱动器故障。
创建raid6命令如下
sudo zpool create tank raidz2 /dev/sdc /dev/sdd /dev/sde /dev/sdf
2.5、RAID10
RAID10 旨在读写速度提升和数据冗余与条带化,需要至少 4 块磁盘的倍数,而且只有一半的数据存储空间,可通过创建两个镜像的方式来创建 RAID10。
创建raid10命令如下
sudo zpool create tank mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf
2.6、其它常用命令
1、查看存储池状态
sudo zpool status
2、查看存储池列表
sudo zpool list
3、向存储池添加设备
sudo zpool add tank c2t1d0
向存储池tank中添加设备
4、销毁存储池
sudo zpool destroy zpoolname
5、查看 ZFS 存储池的 I/O 统计信息
sudo zpool iostat
6、恢复zpool
sudo zpool import
3、安装
- 安装zfs文件系统
sudo apt install zfsutils-linux -y
- 创建存储池,我这里有4个硬盘所以创建raid10 ,创建一个名为tank的池
sudo zpool create tank mirror /dev/sdc /dev/sdd mirror /dev/sde /dev/sdf
- 创建L2ARC/Zil 缓存,我创建了一个raid1做zil缓存,
zfs set sync=always tank
zpool add tank log mirror /dev/sdd /dev/sde
创建L2ARC
zpool add tank cache /dev/sdx