centos7安装使用 ZFS


CentOS7 安装使用 ZFS

参考链接:

https://www.jianshu.com/p/5b73c9d0372e

https://www.linuxprobe.com/centos7-install-use-zfs.html

ZFS简介

ZFS文件系统的英文名称为ZettabyteFileSystem,也叫动态文件系统(DynamicFileSystem),是第一个128位文件系统。最初是由Sun公司为Solaris10操作系统开发的文件系统。作为OpenSolaris开源计划的一部分,ZFS于2005年11月发布,被Sun称为是终极文件系统,经历了10年的活跃开发,而最新的开发将全面开放,并重新命名为OpenZFS。

ZFS 与 openZFS

甲骨文收购Sun后不久,OpenSolaris成为了密切的来源。 ZFS的所有进一步开发也成为封闭源。 ZFS的许多开发人员对此感到不满。由于这一决定,三分之二的核心ZFS开发者,包括Ahrens和Bonwick,离开了Oracle。他们与其他公司一起在2013年9月创建了OpenZFS项目。该项目率先开展了ZFS的开源开发。

让我们回到上面提到的许可证问题。由于OpenZFS项目与Oracle是分开的,因此有些人可能想知道为什么他们不会将许可证更改为与GPL兼容的东西,因此它可以包含在Linux内核中。根据OpenZFS网站的说法,更改许可证将涉及将任何贡献代码的人联系到当前的OpenZFS实施(包括初始的,常见的ZFS代码,直到OpenSolaris)并获得他们更改许可证的许可。由于这项工作几乎不可能(因为一些贡献者可能已经死亡或很难找到),他们决定保留他们拥有的许可证。

特性

ZFS是一种先进的、高度可扩展的文件系统,最初是由Sun公司开发的,现在OpenZFS是项目的一部分。不同于其它文件系统,它不仅是一个文件系统逻辑卷管理器。ZFS使其受欢迎的特性是:

  • 数据完整性——数据一致性和完整性通过即写即拷和校验技术保证。
  • 存储空间池——可用存储驱动器一起放入称为zpool的单个池。
  • 软件RAID ——像发出一个命令一样,建立一个raidz数组。
  • 内置的卷管理器——ZFS充当卷管理器。
  • Snapshots、克隆、压缩——这些都是一些ZFS提供的高级功能。
  • 最大单个文件大小为 16 EB(1 EB = 1024 PB)
  • 最大 256 千万亿(256*1015 )的 ZB(1 ZB = 1024 EB)的存储

专业术语

在我们继续之前,让我们了解一些ZFS的常用术语。

术语解析
Pool存储驱动器的逻辑分组,它是ZFS的基本构建块,从这里将存储空间分配给数据集。
DatasetsZFS文件系统的组件即文件系统、克隆、快照和卷被称为数据集。
Mirror一个虚拟设备存储相同的两个或两个以上的磁盘上的数据副本,在一个磁盘失败的情况下,相同的数据是可以用其他磁盘上的镜子。
Resilvering在恢复设备时将数据从一个磁盘复制到另一个磁盘的过程。
Scrub擦除用于一致性检验在ZFS像在其他文件系统如何使用fsck。

ZFS安装

添加epel源

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

安装内核开发包

#/* 先升级kernel*/
yum update kernel

#/* 安装kernel开发包*/
yum install kernel-devel

reboot

更新内核后,最好重启系统。

安装zfs源

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

安装zfs

yum install zfs -y

验证zfs模块插入到内核使用的lsmod命令,如果没有,使用‘modprobe命令手动插入它。

[root@c7-zfs ~]# lsmod | grep zfs
[root@c7-zfs ~]# modprobe zfs
[root@c7-zfs ~]# lsmod | grep zfs
zfs                  3564425  0
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的命令

[root@c7-zfs ~]# zfs list
no datasets available

ZFS使用

详细用法,请看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

ZFS mirror升降级、硬盘替换和在线/离线扩容 ——>https://www.jianshu.com/p/80ac8c666227

在线扩容

如何才能在线扩容呢?需要首先detach到非mirror,replace实现在线扩容,然后在attach到mirror

#查看池状态
[root@c7-zfs ~]# zpool status -v
  pool: zp1
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zp1         ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdb     ONLINE       0     0     0
            sdc     ONLINE       0     0     0

errors: No known data errors
[root@c7-zfs ~]# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zp1   4.97G  4.17G   816M         -    15%    83%  1.00x  ONLINE  -
[root@c7-zfs ~]# cd /zp1/
[root@c7-zfs zp1]# ll
total 4376758
-rw-r--r--. 1 root root 4478906368 Jun  9 22:41 cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso

#扩容前对池里的文件进行md5校验
[root@c7-zfs zp1]# md5sum cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso
0d98f58465929ee524ce3aec0832a58b  cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso

[root@c7-zfs ~]# lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda      8:0    0   16G  0 disk
└─sda1   8:1    0   16G  0 part /
sdb      8:16   0    5G  0 disk
├─sdb1   8:17   0    5G  0 part
└─sdb9   8:25   0    8M  0 part
sdc      8:32   0    5G  0 disk
├─sdc1   8:33   0    5G  0 part
└─sdc9   8:41   0    8M  0 part
sdd      8:48   0   10G  0 disk
sde      8:64   0   10G  0 disk
sr0     11:0    1 1024M  0 rom

#detach一盘磁盘
[root@c7-zfs ~]# zpool detach zp1 /dev/sdc
[root@c7-zfs ~]# zpool status -v
  pool: zp1
 state: ONLINE
  scan: none requested
config:

        NAME        STATE     READ WRITE CKSUM
        zp1         ONLINE       0     0     0
          sdb       ONLINE       0     0     0

errors: No known data errors

#对剩下的磁盘进行replace操作
[root@c7-zfs ~]# zpool replace zp1 /dev/sdb /dev/sdd
[root@c7-zfs ~]# zpool status -v
  pool: zp1
 state: ONLINE
  scan: resilvered 4.17G in 0h0m with 0 errors on Wed Jun  9 22:49:22 2021
config:

        NAME        STATE     READ WRITE CKSUM
        zp1         ONLINE       0     0     0
          sdd       ONLINE       0     0     0

errors: No known data errors

#替换后,池的容量没有增加
[root@c7-zfs ~]# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zp1   4.97G  4.17G   813M        5G    15%    84%  1.00x  ONLINE  -
[root@c7-zfs ~]# cd /zp1/

#对磁盘进行online操作,磁盘容量增加了。
[root@c7-zfs zp1]# zpool online -e zp1 /dev/sdd
[root@c7-zfs zp1]# zpool list
NAME   SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
zp1   9.97G  4.17G  5.79G         -     7%    41%  1.00x  ONLINE  -

#增加一块磁盘,恢复为mirror状态
[root@c7-zfs zp1]# zpool attach zp1 /dev/sdd /dev/sde
[root@c7-zfs zp1]# zpool status -v
  pool: zp1
 state: ONLINE
  scan: resilvered 4.17G in 0h0m with 0 errors on Wed Jun  9 22:52:10 2021
config:

        NAME        STATE     READ WRITE CKSUM
        zp1         ONLINE       0     0     0
          mirror-0  ONLINE       0     0     0
            sdd     ONLINE       0     0     0
            sde     ONLINE       0     0     0
#校验数据
[root@c7-zfs zp1]# md5sum cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso
0d98f58465929ee524ce3aec0832a58b  cn_windows_10_enterprise_ltsc_2019_x64_dvd_9c09ff24.iso
#zpool online -e zp1 /dev/sdd
#在线扩容后,需要online下,使容量更新。
#参考链接:https://blog.cavelab.dev/2021/01/zfs-replace-disk-expand-pool/

声明:鹅石壳儿|版权所有,违者必究|如未注明,均为原创|本网站采用BY-NC-SA协议进行授权

转载:转载请注明原文链接 - centos7安装使用 ZFS


Carpe Diem and Do what I like