Loading

stratis和vdo高级存储

Stratis

stratis将磁盘设备放置于一个精简配置的共享池中,stratis文件系统没有固定大小,也不会预分配未使用的块空间。一个共享池中可以创建多个文件系统,文件系统类型为xfs。

安装配置

  1. 安装软件包stratisd和stratis-cli

    [root@localhost ~]# yum install -y stratisd stratis-cli
    
  2. 激活stratisd服务

    [root@localhost ~]# systemctl enable --now stratisd
    
  3. 创建精简池

    [root@localhost ~]# stratis pool create pool01 /dev/sda
    

    如果磁盘之前使用过可能会报错,该错误是由于磁盘中存在分区表导致不能加入存储池

    [root@localhost ~]# stratis pool create pool01 /dev/sda
    Execution failure caused by:
    ERROR: Device /dev/sda has an existing signature ID_PART_TABLE_TYPE=gpt ID_PART_TABLE_UUID=1d02d7ab-54c5-42ce-8608-1d3bbd5bf118
    

    解决方式,将该磁盘的分区表擦除

    [root@localhost ~]# dd if=/dev/zero of=/dev/sda bs=512 count=1
    
  4. 查看精简池信息

    [root@localhost ~]# stratis pool list 
    Name      Total Physical Size  Total Physical Used
    pool01                 10 GiB               52 MiB
    [root@localhost ~]# stratis blockdev list 
    Pool Name  Device Node    Physical Size   State  Tier
    pool01     /dev/sda              10 GiB  In-use  Data
    
  5. 创建文件系统

    [root@localhost ~]# stratis filesystem create pool01 fs01
    [root@localhost ~]# stratis filesystem list 
    Pool Name  Name  Used     Created            Device                UUID                              
    pool01     fs01  546 MiB  Dec 17 2020 16:53  /stratis/pool01/fs01  ee4c21f61c674101a41b28b0d770af38 
    
  6. 查看文件系统的UUID

    [root@localhost ~]# lsblk --output=UUID /stratis/pool01/fs01
    UUID
    ee4c21f6-1c67-4101-a41b-28b0d770af38
    
  7. 设置开机自动挂载

    UUID=46929bbaaf4147798aef5a891eff7c67 /data xfs defaults,x-systemd.requires=stratisd.service 0 0
    

    挂载选项x-systemd.requires=stratisd.service可延迟挂载文件系统,直到stratisd.service启动为止

  8. 向精简池中添加块设备

    [root@localhost ~]# stratis pool add-data  pool01 /dev/sdb
    [root@localhost ~]# stratis blockdev list 
    Pool Name  Device Node    Physical Size   State  Tier
    pool01     /dev/sda              10 GiB  In-use  Data
    pool01     /dev/sdb              10 GiB  In-use  Data
    
  9. 创建快照

    [root@localhost ~]# stratis filesystem snapshot pool01 fs01 sn
    ap01
    [root@localhost ~]# ll  /stratis/pool01
    total 0
    lrwxrwxrwx. 1 root root 9 Dec 17 16:53 fs01 -> /dev/dm-7	#文件系统
    lrwxrwxrwx. 1 root root 9 Dec 17 17:07 snap01 -> /dev/dm-8	#快照
    
  10. 恢复快照

    [root@localhost ~]# umount /stratis/pool01/fs01		#卸载源文件系统
    [root@localhost ~]# stratis filesystem destroy pool01 fs01	#删除原文件系统
    [root@localhost ~]# stratis filesystem snapshot pool01 snap01 fs01	#根据快照创建出原文件系统
    

    创建的快照可以独立存在因此可以删除原文件系统

  11. 删除配置

    [root@localhost ~]# stratis filesystem destroy pool01 fs01	#删除文件系统
    [root@localhost ~]# stratis pool destroy pool01	#删除精简池
    
  12. 查看帮助

    # stratis --help 查看stratis命令帮助
    # stratis pool --help 查看stratis关于存储池命令帮助
    # stratis filesystem --help 查看stratis关于文件系统命令帮助
    # stratis filesystem snapshot --help 查看stratis关于快照命令帮助
    

Vdo

vdo功能可以优化块设备上数据空间占用问题,它可以减少块设备上的磁盘使用空间,同时最大限度减小数据重复,从而节省磁盘空间。vdo包含两个模块:kvdo用于控制数据压缩,uds用于重复数据删除。

vdo层位于现在块设备(RAID或者本地磁盘)之上,存储层(如LVM和文件系统)位于vdo之上。

下图显示了KVM虚拟机架构中,vdo所处的位置

vdo特性

  • 利用vdo创建的逻辑设备成为vdo卷,vdo卷与磁盘类似,可以将这些卷格式化为所需要的文件系统类型。此外,还可以将vdo卷用作LVM物理卷。
  • 在创建vdo卷时,可以指定块设备,以及vdo向用户显示的逻辑设备的名称。也可以指定vdo卷的逻辑大小,vdo卷的逻辑大小可以大于实际块设备的物理大小。
  • 如果未指定逻辑大小,则vdo会将实际物理大小试为卷的逻辑大小,这种方式有利于提高性能,但是会降低存储空间的使用效率,应视情况而定。
  • 由于vdo卷采用了精简配置,因此用户只能看到正在使用的逻辑空间,而无法了解实际可用的物理空间。
  • vdo卷的逻辑大小超过实际物理大小,应使用vdostatus -verbose命令查看实际使用情况。

配置

  1. 安装软件包

    [root@localhost ~]# yum -y install vdo kmod-kvdo
    
  2. 创建vdo卷

    [root@localhost ~]# vdo create --name=vdo0 --device=/dev/sda --vdoLogicalSize=10T
    
  3. 查看vdo卷

    [root@localhost ~]# vdo status --name=vdo0
    [root@localhost ~]# vdo list	#查看vdo卷列表
    vdo0
    [root@localhost ~]# vdo start|stop -n vdo0	#启动和停止vdo卷
    
  4. 查看卷的状态

    [root@localhost ~]# vdostats --human-readable
    Device                    Size      Used Available Use% Space saving%
    /dev/mapper/vdo0         10.0G      4.0G      6.0G  40%            0%
    
  5. 格式化vdo卷

    [root@localhost ~]# mkfs.xfs /dev/mapper/vdo0
    
  6. 挂载vdo卷

    /dev/mapper/vdo0 /data xfs defaults,x-systemd.requires=vdo.service 0 0
    

    挂载选项x-systemd.requires=vdo.service延迟挂载文件系统,直到vdo.service启动

  7. 删除vdo卷

    [root@localhost ~]# vdo remove -n vdo0
    Removing VDO vdo0
    Stopping VDO vdo0
    
posted @ 2020-12-17 14:27  北兢王  阅读(437)  评论(0)    收藏  举报