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