🏆 高级存储

⭐️ Stratis架构

Stratis是一个卷管理文件系统volume-managing filesystem(VMF),架构是将磁盘放置于一个精简配置的共享池中,也就是存储池,使用一个或者多个硬盘创建存储池,然后在存储池中创建卷volume,存储池中的卷分布无需用户指定,也就是说用户无法指卷的大小,每个文件系统的大小取决于使用大小。
Stratis将磁盘设备放置于一个精简配置的共享池中,stratis文件系统没有固定的大小,也不会预分配未使用的块空间一个共享池中可以创建多个文件系统,文件系统类型为xfs,因为Stratis基于xfs创建默认就是xfs
将磁盘整合成一个池,在这个池中创建文件系统,且文件系统不需要指定大小

image-20240919220240281

⭐️ 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层位于块设备之上,但是在文件系统之下

image-20240919220341633

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