源码编译安装zfs
yum -y install gcc gcc-c++ autoconf automake kernel*
yum install kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi libattr-devel
tar zxvf spl-0.7.13.tar.gz cd spl-0.7.13/ ./configure && make all && make install all
tar zxvf zfs-0.7.13.tar.gz cd zfs-0.7.13/ ./configure && make all && make install all
开机加载zfs模块
vim /etc/rc.local
depmod -a modprobe spl modprobe zfs
zpool存储池
一旦创建一个池,从池中可以添加或删除热备件和缓存设备。
从镜像池和替换设备中连接或者分离,但是冗余和raidz设备不能从池中删除。
-f 强制使用vdev,即使它们出现在使用中或指定了冲突复制级别。并非所有设备都能以这种方式被覆盖。
创建raidz存储池:
zpool create -f mydata raidz sdb sdc sdd sde sdf sdg sdh sdi sdj sdk
#raidz镜像池
创建磁盘镜像存储池:
zpool create -f mpool mirror sdc sdd mirror sde sdf
# 每两个磁盘镜像池
存储池添加空闲磁盘:
zpool add mydata spare sdg
存储池删除空闲磁盘:
zpool remove testpool sdf
存储池添加cache磁盘:
zpool add mydata cache sdg
存储池删除cache磁盘:
zpool remove testpool sdf
查看存储池状态:
zpool status
查看存储池列表:
zpool list
销毁存储池:
zpool destroy loongsonpool
检测损坏:
zpool scrub testpool
替换坏盘(sdd替换sdc):
zpool replace testpool sdc sdd
zpool导入导出:
应显式导出存储池,以表明可随时将其迁移。此操作会将任何未写入的数据刷新到磁盘,将数据写入磁盘以表明导出已完成,并从系统中删除有关池的所有信息。如果不显式导出池,而是改为手动删除磁盘,则仍可以在其他系统中导入生成的池。但是,可能会丢失最后几秒的数据事务,并且由于设备不再存在,该池在原始系统中可能会显示为处于故障状态。
缺省情况下,目标系统无法导入未显式导出的池。为防止意外导入包含仍在其他系统中使用的网络连接存储器的活动池,此条件是必要的。
尝试取消挂载池中任何已挂载的文件系统,然后再继续执行。如果无法取消挂载任何文件系统,则可以使用 -f 选项强制取消挂载这些文件系统。执行此命令后,池 tank 在系统中即不再可见。如果在导出时设备不可用,则无法将设备标识为正常导出。如果之后将某个这样的设备附加到不包含任何工作设备的系统中,则该设备的状态会显示为“可能处于活动状态”。如果 ZFS 卷在池中处于使用状态,即使使用 -f 选项,也无法导出池。要导出包含 ZFS 卷的池,请首先确保卷的所有使用者都不再处于活动状态。
存储池强制导出:
zpool export -f mydata
存储池导出:
zpool export mydata
存储池导入:
zpool import mydata
查看可导入的存储池:
zpool import
存储池I/O统计查看:
zpool iostat -v mydata
zfs文件系统
在文件系统创建时尽管没有挂载点,挂载点创建时使用相同的路径关系池。
ZFS创建允许使用-o选项可以指定使用像挂载点,压缩、定额、执行等。
查看zfs所有设置参数:
zfs get all
创建zfs文件系统:
zfs create mydata/students
查看zfs文件系统列表:
zfs list
销毁文件系统:
zfs destroy mydata/students
zfs压缩
压缩和解压缩将以透明模式发生在文件系统上面。
使用lz4算法压缩:
zfs set compression=lz4 mydata/students
查看压缩比:
zfs get compressratio mydata/students
zfs去重
去重会消耗较多内存和CPU,影响系统性能,ZFS默认关闭
开启去重:zfs set dedup=on mydata/students
指定指纹的计算算法:zfs set dedup=fletcher4 mydata/students
配额、预定
配额确保文件系统使用的磁盘空间的数量不超过规定的限度。
预定有助于在实际分配和保证所需的磁盘空间的数量是可用的文件系统。
配额:
zfs set quota=2G mydata/students
预定:
zfs set reservation=2G mydata/students
zfs快照
创建根池的递归快照:
zfs snapshot -r mydata@20190411
zfs文件系统创建快照:
zfs snapshot mydata/students@20190411
zfs文件系统快照路径:
/mydata/students/.zfs/snapshot/20190411
查看zfs快照列表:
zfs list -t snapshot
zfs销毁快照:
zfs destroy mydata/students@20190411
可以使用 zfs rollback 命令放弃自特定快照创建以来对文件系统所做的全部更改。
文件系统恢复到创建快照时的状态。缺省情况下,该命令无法回滚到除最新快照以外的快照。
要回滚到早期快照,必须销毁所有的中间快照。可以通过指定 -r 选项销毁早期的快照。
如果存在任何中间快照的克隆,则还必须指定 -R 选项以销毁克隆
快照恢复:
zfs rollback mydata/students@20190411
快照强制恢复:
zfs rollback -r mydata/students@20190411
恢复部分文件:
进入快照路径,恢复(拷贝出)文件,".zfs"目录隐藏不可见。
挂载zfs文件系统:
zfs set mountpoint=/mydata/students mydata/students
卸载zfs文件系统:
zfs set mountpoint=none mydata/students
umount /mydata/students
nfs共享
在 sharenfs 或 sharesmb 属性设置为 on 之前,不会发布共享。
不需修改配置文件/etc/export设置nfs
创建nfs共享:
zfs set sharenfs=on mypool/students zfs share mypool/students
创建smb共享:
zfs set sharesmb=on mypool/students zfs share mypool/students
客户端挂载zfs文件系统
mount -t nfs 10.100.20.49:/mypool/students /media
网友留言: