Centos7 安装 ZFS存储池

1.安装ZFS

一.安装源
yum install -y http://download.zfsonlinux.org/epel/zfs-release.el7_6.noarch.rpm

https://github.com/zfsonlinux/zfs/wiki/RHEL-and-CentOS
上面地址查找对应版本。

二.修改为KABI模式。
vi /etc/yum.repos.d/zfs.repo
#dkms 的 enabled 改为 0
[zfs]
name=ZFS on Linux for EL7 - dkms
enabled=0
#kmod 的 enabled 改为 1
[zfs-kmod]
name=ZFS on Linux for EL7 - kmod
enabled=1

ZFS模块可以通过两种方式加载到内核,DKMS和kABI。它们之间的区别在于,如果安装基于DKMS的ZFS模块,然后由于某种原因更新了操作系统的内核,则必须再次重新编译ZFS内核模块。否则它将无法工作。但是基于kABI的ZFS模块的优势在于,如果更新操作系统的内核,则不需要重新编译。

三.安装ZFS
yum install zfs
四.重启生效
reboot
#查看zfs是否随内核启动
lsmod | grep zfs
zfs                  3564425  4 
zunicode              331170  1 zfs
zavl                   15236  1 zfs
icp                   270148  1 zfs
zcommon                73440  1 zfs
znvpair                89131  2 zfs,zcommon
spl                   102412  4 icp,zfs,zcommon,znvpair

# 如果没有 手动添加zfs到内核
modprobe zfs

2.创建ZFS存储池

一.理论知识
Stripe:与RAID0类似,磁盘带条,至少需要一个磁盘;
Mirror:与RAID1类似,磁盘镜像,至少需要两个磁盘;
RAIDZ1:与RAID5类似,一重奇偶校验,至少需要三个磁盘;
RAIDZ2:与RAID6类似,双重奇偶校验,至少需要四个磁盘;
RAIDZ3:ZFS特有的,三重奇偶校验,至少需要五个磁盘;
Log(ZIL):高速写缓存设备,至少需要一个专用设备,建议使用具有停电保护的SSD;
Cache(L2ARC):高速读缓存设备,需要至少一个专用设备,建议使用具有停电保护的SSD;
Spare:热备磁盘,当正在使用的磁盘发生故障后,Spare磁盘将马上代替此故障盘。
二.创建ZFS池
#与RAID0类似
zpool create vol0 /dev/sd{b,c}
#与RAID1类似
zpool create vol0 mirror /dev/sd{b,c}
#与RAID5类似
zpool create vol0 raidz /dev/sd{b,c,d}
#与RAID6类似
zpool create vol0 raidz2 /dev/sd{b,c,d,e}
三.常用命令
#查看当前存储池挂载状态
zfs list
#查看当前存储池状态
zpool status
#使用 sdb、sdc、sdd 这几块硬盘创建一个名为 vol0 的池
zpool create vol0 sdb sdc sdd
#可以使用-f启用强制模式,这个在正常的创建中没有必要,如果碰到你要创建raidz或者mirror类型的池,那么这个可以帮助你忽略由于添加的硬盘容量不相等导致的错误提示
#查看存储池 vol0 的一些信息
zpool get all vol0
#将硬盘 sde 添加到池 vol0 中
zpool add vol0 sde
#使用硬盘 sdf 替换 vol0 池中的 sde
zpool replace vol0 sde sdf
#检测池 vol0 是否存在问题
zpool scrub vol0
#查看池 vol0 的IO使用状况,可以加 -v 来详细到池所拥有的每块磁盘
zpool iostat vol0

详细用法,请看Oracle的文档
zfs命令 ——> https://docs.oracle.com/cd/E26926_01/html/E29115/zfs-1m.html
zpool命令 ——> https://docs.oracle.com/cd/E26926_01/html/E29115/zpool-1m.html

3.模拟损坏修复

一.查看池情况
#zpool status vol0
  pool: vol0
 state: ONLINE
  scan: scrub repaired 0B in 0h0m with 0 errors on Wed Aug 21 17:19:10 2019
config:

        NAME        STATE     READ WRITE CKSUM
        vol0        ONLINE       0     0     0
          raidz1-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0
            sdd     ONLINE       0     0     0

errors: No known data errors
二.损坏一个盘后
#清理并检查池情况
#zpool scrub vol0
#zpool status vol0
  pool: vol0
 state: DEGRADED
status: One or more devices could not be used because the label is missing or
        invalid.  Sufficient replicas exist for the pool to continue
        functioning in a degraded state.
action: Replace the device using 'zpool replace'.
   see: http://zfsonlinux.org/msg/ZFS-8000-4J
  scan: scrub repaired 0B in 0h0m with 0 errors on Wed Aug 21 16:41:03 2019
config:

        NAME                     STATE     READ WRITE CKSUM
        vol0                     DEGRADED     0     0     0
          raidz1-0               DEGRADED     0     0     0
            sdb                  ONLINE       0     0     0
            sdc                  ONLINE       0     0     0
            sdd  				 UNAVAIL      0     0     0  
errors: No known data errors
二.用新盘修复
zpool replace vol0 /dev/sdd /dev/sde
三.添加热备
zpool add vol0 spare /dev/sde
四.添加新raidz盘
zpool add vol0 raidz /dev/sd{e,f,g}
Logo

更多推荐