CentOS7.6 安装ZFS并创建Raid

ZFS是一个128位的文件系统,支持逻辑卷,Raid,快照和其他高级文件系统功能。

在linux下zfs的模块有两种加载到内核的方式dkms和kabi。

它们区别在于如果安装了基于dkms的zfs模块,以后如果更新了系统内核,则必须重新编译zfs内核模块,否则无法使用。

如果基于kabi的zfs模块则具有优势,因为更新了操作系统的内核,它并不需要重新编译。


系统为五盘20G环境sdb、sdc、sdd、sde、sdf

CentOS7.6 安装ZFS并创建Raid


确定系统版本

cat /etc/redhat-release


安装对应系统版本的ZFS源

yum install http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm


编辑ZFS源,启用kabi

#zfs源默认是启用基于dkms,需要禁用dkms并启用kabi

vi /etc/yum.repos.d/zfs.repo
找到[zfs]节点,将enabled=1改为enabled=0,禁用了dkms
找打[zfs-kmod]节点,将enabled=0改为enabled=1,开启kABI

CentOS7.6 安装ZFS并创建Raid


安装ZFS

yum install -y zfs
reboot

CentOS7.6 安装ZFS并创建Raid


加载ZFS模块

lsmod | grep zfs
#如果输出结果为空,则zfs内核模块没有被系统加载,需要手动加载zfs内核模块
modprobe zfs

CentOS7.6 安装ZFS并创建Raid


创建ZFS Strip存储池

Stripe(RAID0)磁盘带条,至少需要一个磁盘

zpool create ZFS /dev/sdb /dev/sdc  /dev/sdd /dev/sde /dev/sdf
zpool list

CentOS7.6 安装ZFS并创建Raid

df -h

CentOS7.6 安装ZFS并创建Raid

zpool status

CentOS7.6 安装ZFS并创建Raid

创建了一个名字为ZFS的存储池,容量大小97G的空间,并挂载在/ZFS下


创建ZFS 2-way Mirror 存储池

Mirror(RAID1)磁盘镜像,至少需要两个磁盘

zpool create ZFS1 mirror sdb sdc mirror sdd sde

CentOS7.6 安装ZFS并创建Raid


创建ZFS 3-Way  Mirror 存储池

Mirror(RAID1)磁盘镜像,至少需要两个磁盘

 zpool create ZFS31 mirror sdb sdc sdd

CentOS7.6 安装ZFS并创建Raid


创建ZFS RaidZ1 存储池

RAIDZ1(RAID5)一重奇偶校验,至少需要三个磁盘

zpool create ZFS2 raidz sdb sdc sdd sde sdf

CentOS7.6 安装ZFS并创建Raid


创建ZFS RaidZ2 存储池

RAIDZ2(RAID6)双重奇偶校验,至少需要四个磁盘

zpool create ZFS22 raidz2 sdb sdc sdd sde sdf

CentOS7.6 安装ZFS并创建Raid


创建ZFS RaidZ3 存储池

RAIDZ3(ZFS特有)三重奇偶校验,至少需要五个磁盘

 zpool create ZFS23 raidz3 sdb sdc sdd sde sdf

CentOS7.6 安装ZFS并创建Raid


其他操作

1. 更改ZFS存储池使用权限

groupadd vmos_group
useradd -g vmos_group vmos_user
su - vmos
mkdir /ZFS/test
#系统提示mkdir: cannot create directory ‘/ZFS/test’: Permission denied
#原因是默认情况下zfs存储池只允许root用户写入,如果普通用户需要写入zfs存储池,则必须更改zfs存储池权限
#chown -Rfv USERNAME:GROUPNAME /POOL_NAME

chown -Rfv vmos_user:vmos_group /ZFS
#系统提示changed ownership of ‘/ZFS’ from root:root to vmos_user:vmos_group


2. 删除zfs存储池

zpool destroy ZFS
#如果系统提示umount: /ZFS: target is busy.
#       (In some cases useful info about processes that use
#       the device is found by lsof(8) or fuser(1))
# cannot unmount '/ZFS': umount failed
# could not destroy 'ZFS': could not unmount datasets

CentOS7.6 安装ZFS并创建Raid

yum install -y  psmisc
fuser -cu /ZFS 
fuser -ck /ZFS
再次执行销毁zfs命令

CentOS7.6 安装ZFS并创建Raid


3. ZFS模拟故障

三块盘2G盘环境,sdb、sdc、sde,先创建一个2盘的mirror存储池,并不加入热备盘

zpool create TEST mirror sdb sdc


对sdc写满数据

dd if=/dev/zero of=/dev/sdc

CentOS7.6 安装ZFS并创建Raid


对存储池进行查错

zpool scrub TEST
zpool status

CentOS7.6 安装ZFS并创建Raid


将sdd更换掉池中的故障sdc

zpool replace TEST sdc sdd; zpool status

CentOS7.6 安装ZFS并创建Raid

过一会

CentOS7.6 安装ZFS并创建Raid

存储池恢复正常


4. ZFS创建和删除文件系统

zfs create TEST/123
zfs create TEST/456

zfs destroy TEST/123
zfs destroy TEST/456

CentOS7.6 安装ZFS并创建Raid

文件系统创建后,文件挂载点会自动挂上


5. ZFS文件系统压缩

zfs set compression=lz4 TEST/123
zfs get compressratio TEST/123

CentOS7.6 安装ZFS并创建Raid


6. ZFS文件系统配额

zfs set quota=1000M TEST/123
zfs set reservation=1000M TEST/123
zfs list

CentOS7.6 安装ZFS并创建Raid


7. ZFS存储池设备管理

先创建一个名为POOL的Strip两盘存储池

zpool create POOL sdb sdc

CentOS7.6 安装ZFS并创建Raid


再向存储池中添加一块盘

zpool add POOL sdd

CentOS7.6 安装ZFS并创建Raid


删除刚加入存储池的sdd

zpool remove POOL sdd
#系统提示cannot remove sdd: only inactive hot spares, cache, or log devices can be removed
因为只有热备盘和缓存盘或者日志设备,才可以被这样移除


向存储池中添加一块热备盘

zpool add POOL spare sde
zpool autoreplace=on POOL
#加入热备盘后,可以在存储池中使用autoreplace特性 (zfs attribute)

CentOS7.6 安装ZFS并创建Raid

存储池中删除刚添加的热备盘

zpool remove POOL sde


8. ZFS存储池io统计

zpool iostat -v

CentOS7.6 安装ZFS并创建Raid


9. ZFS快照

原目录文件夹有三个

CentOS7.6 安装ZFS并创建Raid


对此文件夹打快照并查看快照表

zfs snapshot TEST/456@2019-0220 
zfs snapshot TEST/456@2019-02201
zfs list -t snapshot

CentOS7.6 安装ZFS并创建Raid


删除一个文件夹aix,然后进入快照目录

rm -rf aix
cd .zfs
cd snapshot/
ls

CentOS7.6 安装ZFS并创建Raid

原文件夹还在


删除快照

zfs destroy TEST/456@2019-02201



更新日期: 2019年02月20日
文章标签: Linux
文章链接: https://www.vos.cn/storage/267.html  
版权说明:如非注明,本站文章均为vOS原创,转载请注明出处和附带本文链接。