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的基本构建块,从这里将存储空间分配给数据集。 |
Datasets | ZFS文件系统的组件即文件系统、克隆、快照和卷被称为数据集。 |
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/
Comments | NOTHING