🏆 高级存储
⭐️ Stratis
架构
Stratis是一个卷管理文件系统volume-managing filesystem(VMF),架构是将磁盘放置于一个精简配置的共享池中,也就是存储池,使用一个或者多个硬盘创建存储池,然后在存储池中创建卷volume,存储池中的卷分布无需用户指定,也就是说用户无法指卷的大小,每个文件系统的大小取决于使用大小。
Stratis将磁盘设备放置于一个精简配置的共享池中,stratis文件系统没有固定的大小,也不会预分配未使用的块空间一个共享池中可以创建多个文件系统,文件系统类型为xfs,因为Stratis基于xfs创建默认就是xfs
将磁盘整合成一个池,在这个池中创建文件系统,且文件系统不需要指定大小
⭐️ Stratis
实验
下载 statis软件包,(需要配置好yum源)
[root@abc ~]# yum install -y stratis-cli stratisd
启动 stratis
[root@abc ~]# systemctl start stratisd
创建存储池 --- 如果发生报错就重启主机
[root@abc ~]# stratis pool create pool01 /dev/sda
[root@abc ~]# stratis pool list
Name Total Physical Size Total Physical Used
pool01 20 GiB 52 MiB
查看创建存储池中的硬盘
[root@abc ~]# stratis blockdev list pool01
Pool Name Device Node Physical Size State Tier
pool01 /dev/sda 20 GiB In-use Data
如果需要后续在添加
stratis pool add-data [存储池名] [磁盘]
创建文件系统
[root@abc ~]# stratis filesystem create pool01 one
[root@abc ~]# stratis filesystem list
Pool Name Name Used Created Device UUID
pool01 one 546 MiB Sep 20 2022 03:09 /stratis/pool01/one 08b307aacf154a6ebbfaf64360cfa1f7
文件系统创建完成后就可以直接挂载,不需要格式化文件系统
[root@abc ~]# mount /stratis/pool01/one /opt/one/
[root@abc ~]# df -Th | grep one
/dev/mapper/stratis-1-78f54b883e714bdda191dce7eba746c3-thin-fs-08b307aacf154a6ebbfaf64360cfa1f7 xfs 1.0T 7.2G 1017G 1% /opt/one
创建快照,创建快照前需要将取消文件系统的挂载
[root@abc ~]# stratis filesystem snapshot pool01 one snapone001
[root@abc ~]# stratis filesystem list pool01
Pool Name Name Used Created Device UUID
pool01 one 19.54 GiB Sep 20 2022 03:09 /stratis/pool01/one 08b307aacf154a6ebbfaf64360cfa1f7
pool01 snapone001 19.54 GiB Sep 20 2022 03:17 /stratis/pool01/snapone001 d448944bfdd7434298cae32385fd8cf8
创建快照完成把原有的文件系统删除
[root@abc ~]# stratis filesystem destroy pool01 one
恢复快照
[root@abc ~]# stratis filesystem snapshot pool01 snapone001 one
[root@abc ~]# stratis filesystem list
Pool Name Name Used Created Device UUID
pool01 snapone001 19.54 GiB Sep 20 2022 03:17 /stratis/pool01/snapone001 d448944bfdd7434298cae32385fd8cf8
pool01 one 19.54 GiB Sep 20 2022 03:24 /stratis/pool01/one 2e79b6c560284c54aafa00d6f6510367
⭐️ VDO存储
VDO可以优化块设备上数据空寂占用问题,它可以减少块设备上的磁盘使用空间,同时最大限度减少数据重复,从而节省磁盘空间。
Vdo包含两个吗模块: KVvdo用于控制数据亚述,uds用于重复数据删除。
vdo层位于块设备之上,但是在文件系统之下
vdo特性说明:
1.利用vdo创建的逻辑设备成为vdo卷,vdo卷于磁盘类似,可以将这些卷格式华为所需
2.在创建vdo卷时, 可以指定块设备,以及vdo向用户显示的逻辑设备的名称。也可以指定vdo卷的逻辑大小,vdo卷的逻辑大小可以大于实际块设备的物理大小。
3.如果未指定逻辑大小, 则vdo会将实际物理大小视为卷的逻辑大小,这种方式有利于提高性能,但是会降低存储空间的使用效率,应视情况而定。
4.由于vdo卷采用了精简配置,因此用户只能看到正在使用的逻辑空间,而无法了解实际可用的物理空间。
4.vdo卷的逻辑大小超过实际物理大小, 应使用vdostatus -verbose命令查看实际使用情况
VDO按以下顺序将三个阶段应用于数据,减少存储设备上的占用空间
零区块的排除:
在初始化阶段,整块为0的会被元数据记录下来,这个可以用水杯里面的水和沙子混合的例子来解释,使用滤纸(零块排除),把沙子(非零空间)给过滤出来,然后就是下一个阶段的处理;
重复数据删除:
在第二阶段,输入的数据会判断是不是冗余数据(在写入之前就判断),这个部分的数据通过UDS内核模块来判断(U niversal D eduplication S ervice),被判断为重复数据的部分不会被写入,然后对元数据进行更新,直接指向原始已经存储的数据块即可;
压缩数据:
一旦消零和重删完成,LZ4压缩会对每个单独的数据块进行处理,然后压缩好的数据块会以固定大小4KB的数据块存储在介质上,由于一个物理块可以包含很多的压缩块,这个也可以加速读取的性能。-
⭐️ Vdo
实验
下载vdo,红帽8默认已经安装了
[root@abc ~]# yum install -y vdo kmod-kvdo
直接可以创建vdo卷 --vdoLogicalSize设置逻辑大小
[root@abc ~]# vdo create --nam=vdo01 --device=/dev/sda --vdoLogicalSize=30G
查看 vdo 卷
[root@abc ~]# vdo list
vdo01
查看vdo卷的状态
[root@abc ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo01 20.0G 4.0G 16.0G 20% 0%
格式化vdo卷
[root@abc ~]# mkfs.xfs /dev/mapper/vdo01
挂载vdo卷,可以看到挂载显示的是30G而非20G
[root@abc ~]# mount /dev/mapper/vdo01 /opt/one/
[root@abc ~]# df -Th /opt/one/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vdo01 xfs 30G 247M 30G 1% /opt/one
测速去重压缩技术,传递一个文件进去查看vdo使用状体
[root@abc ~]# cp /opt/rhel-8.0-x86_64-dvd.iso /opt/one/
[root@abc ~]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo01 20.0G 10.5G 9.5G 52% 2%
将刚刚传递的文件复制一个在原有目录,可以看到大小并没有变
[root@abc ~]# cd /opt/one/
[root@abc one]# ls
rhel-8.0-x86_64-dvd.iso
[root@abc one]# cp rhel-8.0-x86_64-dvd.iso rhel-8.0.iso
[root@abc one]# ls
rhel-8.0.iso rhel-8.0-x86_64-dvd.iso
[root@abc one]# vdostats --human-readable
Device Size Used Available Use% Space saving%
/dev/mapper/vdo01 20.0G 10.5G 9.5G 52% 51%
vdo start/stop -n [卷名] 启动和停止vdo卷,停止后此卷就会被停止挂载
vdo remove -n [vod卷名] 删除vdo卷
配置永久挂载 x-systemd.requires=vdo.service 配置vdo延迟挂载
UUID=12abf261-ac4e-44e7-ad69-38e1df8740dc /opt/one xfs defaults,x-systemd.requires=vdo.service 0 0