简介
ZFS是一个拥有逻辑卷管理功能的文件系统,最早源自于Oracle为Solaris操作系统开发的文件系统。ZFS具有可扩展性,并且包括大量保护措施防止数据损坏,支持高存储容量、高效数据压缩、集成文件系统、卷管理、快照和写时复制、连续完整性检查与自动修复、RAID-Z、原生NFSv4 ACL等功能,并且能被精确配置。
安装
zfs有两种方式安装,rpm、deb包或者源码。建议使用rpm、deb包安装。
centos
下载对应版本的rpm包,centos7支持zfs版本较低,但是不影响实际使用。
yum install zfs-release.XXX.rpm
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux
yum install -y epel-release kernel-devel zfs -y
ubuntu的源自带zfs,可以直接安装
sudo apt install zfs
源码安装请参考官方链接:https://openzfs.github.io/openzfs-docs/Developer%20Resources/Building%20ZFS.html
使用
zfs支持raid0、1、5、6、50、60等,也支持缓存加速。
创建
创建zfs的时候,默认创建的是资源池,即raid。pool name必须以字母开头,可以使用下划线(_)、连字符(-)、点(.)等。
需要特别注意,zfs创建完成后,会自动挂载,挂载点为/pool_name,所以pool_name为空或者不存在。可以使用参数-m mountpoint指定挂载点。
zpool create -f pool_name /dev/sdb /dev/sdc #raid0
zpool create -f pool_name mirror /dev/sdb /dev/sdc #raid1
zpool create -f pool_name raidz1 /dev/sdb /dev/sdc /dev/sdd #raid5
zpool create -f pool_name raidz1 /dev/sdb /dev/sdc /dev/sdd /dev/sde #raid6
zpool create -f pool_name raidz1 /dev/sdb /dev/sdc /dev/sdd /dev/sde raidz1 /dev/sdf /dev/sdg /dev/sdh /dev/sdi #raid60
zpool create -f pool_name /dev/sdb /dev/sdc cache /dev/sdd #raid0,设置缓存加速盘为sdd,一般使用SSD或者nvme。
查询
zfs可查询创建后的资源池状态、硬盘状态、raid状态等。
zpool list -v #列出详细信息
zpool status pool_name #pool_name的状态,主要查看硬盘状态、raid状态
zpool iostat pool_name #主要查看容量使用情况、读写、带宽等
管理
可对现有的pool进行增加硬盘、替换硬盘、更改挂载点、设置ID启动等。
zpool add pool_name /dev/sdj #对pool_name增加一块硬盘
zpool replace -f pool_name /dev/sdb /dev/sdj #将pool_name中的/dev/sdb替换为/dev/sdj
zpool export pool_name
zpool import -d /dev/disk/by-id pool_name #使用id来自动挂载pool,类似使用UUID挂载硬盘
zpool import #查询未导入/挂载的pool
zpool import pool_name #导入/挂载pool_name
zfs set acltype=posixacl pool_name #开启ACL权限,默认没有ACL权限
zfs set mountpoint=/pool_dir2 pool_name #修改pool_name的挂载点为/pool_dir2
zpool destroy pool_name #删除pool_name,数据也会被一起删除,请谨慎执行该命令
常用的zfs功能主要就是这些,后期再补充更多功能。