当前位置:   article > 正文

linux高级存储功能

linux高级存储

高级存储功能

1、Stratis管理分层存储

通过Stratis,便捷的使用精简配置(thin provisioning),快照(snapshots)和基于池(pool-based)的管理和监控的等高级存储功能。

(1)简介

Stratis 是一个卷管理文件系统volume-managing filesystem(VMF),类似于 ZFS Btrfs。它使用了存储“池”的核心思想,该思想被各种 VMF 和 形如 LVM 的独立卷管理器采用。

(2)核心思想

Stratis的核心思想是提供一种简单、易用、可靠和灵活的方式来管理Linux系统上的存储。它提供了一个现代化的、灵活的层次结构,可以支持不同类型的存储设备,包括传统硬盘驱动器、闪存驱动器和云存储等。Stratis设计之初就考虑到了对系统管理员的友好性,它采用了类似于传统存储管理工具(例如LVM和MD)的命令行界面,同时也提供了一个可选的图形用户界面(GUI)来简化管理过程。Stratis的设计重点在于简单性、易用性和灵活性,同时也考虑到了数据完整性和安全性等方面的问题。

(3)使用

使用一个或多个硬盘(或分区)创建存储池,然后在存储池中创建卷volume

流程及案例:

  1. 1.将物理硬盘加入存储池中
  2. 2.文件系统是通过<精简配置>构建在池中
  3. 3.文件系统构建在池中,那么文件系统的空间有多大?
  4. <1> 通过精简方式构建
  5. <2> 文件系统大小:数据大小即为使用大小
  6. <3> 意义:动态过程,随着数据量的写入,文件系统使用量随之增大。不像使用LV(LV大小固定,空间不够人为扩容),扩容过程是动态的,写入多少数据就占多少空间。
  7. 例:
  8. 你的pool是100G,你在pool之上构建的文件系统最开始很小<1M>,当你往文件系统写数据的时候,动态的从pool分配空间。文件系统扩容不需要人为的干预了。
  9. 文件系统到100G时,可以在pool中+硬盘
  10. 4.一个池可以创建多个文件系统
  11. 5.stratis是通过元数据来管理,不用人为分区和格式化
  12. 6.对于stratis而言有stratic-cli,还有对应的服务stratisd.service
  13. (stratis-cli通过D-BUS和stratisd.service进行通信)

(4)案例

  • 新增两块5G硬盘

  • 前置配置yum源
  1. [root@localhost ~]# lsblk --- 查看硬盘识别情况
  2. NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
  3. sda 8:0 0 10G 0 disk
  4. sdb 8:16 0 5G 0 disk
  5. sdc 8:32 0 5G 0 disk
  6. [root@localhost yum.repos.d]# more redhat.repo
  7. [BaseOS]
  8. name=BaseOS
  9. baseurl=file:///mnt/BaseOS/
  10. gpgcheck=0
  11. [AppStream]
  12. name=AppStream
  13. baseurl=file:///mnt/AppStream/
  14. gpgcheck=0
  15. [root@localhost yum.repos.d]# df -h --- 查看挂载情况
  16. [root@localhost yum.repos.d]# vim + /etc/fstab --- 实现永久挂载
  17. /dev/sr0 /mnt iso9660 defaults 0 0
  18. [root@localhost yum.repos.d]# mount -a --- 读取文件/etc/fstab中没有挂载的,然后实现挂载
  19. [root@localhost yum.repos.d]# df -h
  20. /dev/sr0 6.7G 6.7G 0 100% /mnt --- 挂载成功
  • 安装软件包以及启动服务
  1. [root@localhost ~]# yum install stratisd stratis-cli --- 下载
  2. [root@localhost ~]# systemctl enable --now stratisd --- 设置下次开机启动和当前启动
  3. [root@localhost ~]# systemctl is-enabled stratisd --- 查看下次开机启动情况
  4. enabled
  5. [root@localhost ~]# systemctl is-active stratisd --- 查看当前启动情况
  6. active
  • 创建池以及在池中创建文件系统
  1. [root@localhost ~]# stratis pool create redhat /dev/sdb --- 创建池,名为redhat,将/dev/sdb硬盘划分进去
  2. [root@localhost ~]# stratis pool list --- 查看创建池情况
  3. Name Total Physical Size Total Physical Used
  4. redhat 5 GiB 52 MiB
  5. [root@localhost ~]# stratis filesystem list redhat --- 列出redhat池的文件系统
  6. [root@localhost ~]# stratis filesystem create redhat rhce --- 在redhat池中创建名为rhce的文件系统
  7. [root@localhost ~]# stratis filesystem list redhat --- 查看创建文件系统情况
  8. Pool Name Name Used Created Device UUID
  9. redhat rhce 546 MiB Apr 11 2023 09:52 /stratis/redhat/rhce d6d30e4fb6f04754ab1107c556e9e42b
  10. [root@localhost ~]# mkdir /media/stratis --- 创建挂载点
  11. [root@localhost ~]# mount /stratis/redhat/rhce /media/stratis/ --- 挂载文件系统,临时挂载
  12. [root@localhost ~]# df -h --- 查看挂载情况
  13. /dev/mapper/stratis-1-d2e05a343b9f4765ba5af5d253aed144-thin-fs-d6d30e4fb6f04754ab1107c556e9e42b 1.0T 7.2G 1017G 1% /media/stratis --- 挂载成功
  14. [root@localhost ~]# echo hello > /media/stratis/hello.txt --- 在挂载文件中创建hello.txt文件,将hello写入
  • 扩容
  1. [root@localhost ~]# stratis pool add-data redhat /dev/sdc --- 对redhat池扩容,将/dev/sdc硬盘添加
  2. [root@localhost ~]# stratis pool list
  3. Name Total Physical Size Total Physical Used
  4. redhat 10 GiB 602 MiB
  • 创建快照
  1. [root@localhost ~]# stratis filesystem snapshot redhat rhce snap01 --- 在redhat池中rhce文件系统中创建快照
  2. [root@localhost ~]# mount /stratis/redhat/snap01 /media/snap/ --- 将快照挂载到/media/snap文件下
  3. [root@localhost ~]# ls /media/snap/ --- 查看快照下的文件
  4. hello.txt
  5. [root@localhost ~]# ls /media/stratis/ --- 查看挂载池的文件
  6. hello.txt
  • 一个池中可以创建多个文件系统
  1. [root@localhost ~]# stratis filesystem create redhat rhcsa --- 在redhat池中创建名为rhcsa的文件系统
  2. [root@localhost ~]# stratis filesystem list redhat --- 查看redhat池中的文件系统
  3. Pool Name Name Used Created Device UUID
  4. redhat rhce 546 MiB Apr 11 2023 09:52 /stratis/redhat/rhce d6d30e4fb6f04754ab1107c556e9e42b
  5. redhat snap01 546 MiB Apr 11 2023 10:06 /stratis/redhat/snap01 04fafc9f9dce4674a43c6ac0e5922d0f
  6. redhat rhcsa 546 MiB Apr 11 2023 10:13 /stratis/redhat/rhcsa 54e5118e7f394778858657a5872cac2e
  • 删除文件系统
  1. [root@localhost ~]# stratis filesystem destroy redhat rhcsa --- 删除未经操作的文件系统
  2. [root@localhost ~]# stratis filesystem list redhat
  3. Pool Name Name Used Created Device UUID
  4. redhat rhce 546 MiB Apr 11 2023 09:52 /stratis/redhat/rhce d6d30e4fb6f04754ab1107c556e9e42b
  5. redhat snap01 546 MiB Apr 11 2023 10:06 /stratis/redhat/snap01 04fafc9f9dce4674a43c6ac0e5922d0f
  • 删除已挂载快照或文件系统时,操作之前应先卸除挂载
  1. [root@localhost ~]# umount /media/snap --- 卸除挂载快照
  2. [root@localhost ~]# umount /media/stratis --- 卸除挂载的文件系统
  3. [root@localhost ~]# stratis filesystem destroy redhat snap01 --- 删除快照
  4. [root@localhost ~]# stratis filesystem destroy redhat rhce --- 删除文件系统
  • 删除池
[root@localhost ~]# stratis pool destroy redhat

2、VDO压缩存储和删除重复数据

VDO(Virtual Optimize --- 虚拟数据优化):通过压缩或删除设备上的数据来优化空间

(压缩和去重是为了更好的提供存储空间的利用率)

  1. VDO(Virtual Data Optimize)是RHEL8/Centos8上新推出的一个存储相关技术(最早在7.5测试版中开始测试),是Redhat收购的Permabit公司的技术。
  2. <1> 作用:VDO的主要作用是节省磁盘空间,比如让1T的磁盘能装下1.5T的数据,从而降低数据中心的成本。
  3. <2> 实现:关键原理主要是重删和压缩,重删就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。类似我们在百度网盘中上传一个大型软件安装包,能实现秒传,其实是之前就有,所以无需再传一遍,也无需再占百度一份空间。另一方面是数据压缩,类似于压缩软件的算法,也可以更加节省磁盘空间。

(1)加载内核模块

  • kvdo:压缩数据
  • uds:优化重复数据

(2)位置

  1. <1> vdo设备位于现有的存储的顶部:比如块设备,LV(逻辑卷)
  2. <2> 不能在stratis管理分层存储上使用VDO
  3. <3> VDO一般使用在重复数据率高的场景下。比如:虚拟化或云平台;KVM

(3)实现过程

  1. 消除0块
  2. 去重
  3. 压缩

 (4)案例

  • 安装komd-kvdo vdo 软件包以及创建vdo卷
  1. [root@localhost ~]# yum install vdo kmod-kvdo
  2. [root@localhost ~]# vdo create --name=vdo1 --device=/dev/sdb --vdoLogicalSize=5G --- 创建vdo卷
  3. Creating VDO vdo1 --- 创建vdo1
  4. Starting VDO vdo1
  5. Starting compression on VDO vdo1 --- 启动vdo1
  6. VDO instance 0 volume is ready at /dev/mapper/vdo1 --- 识别的设备名为/dev/mapper/vdo1
  7. [root@localhost ~]# vdo list --- 查看vdo
  8. vdo1
  9. [root@localhost ~]# vdo status -n vdo1 --- 详细查看
  • 实现挂载
  1. [root@localhost ~]# mkfs.xfs /dev/mapper/vdo1 --- 格式化vdo1
  2. [root@localhost ~]# mount /dev/mapper/vdo1 /data --- 挂载
  3. [root@localhost ~]# df -h --- 查看挂载情况
  4. /dev/mapper/vdo1 5.0G 69M 5.0G 2% /data
  5. [root@localhost ~]# vdostats --human-readable --- 查看卷的初始统计状态和信息
  6. Device Size Used Available Use% Space saving%
  7. /dev/mapper/vdo1 5.0G 3.0G 2.0G 60% 98%
  • 检测去重
  1. [root@localhost ~]# vdo status -n=vdo1 | grep Deduplication --- 查看去重功能是否开启
  2. Deduplication: enabled
  3. root@localhost ~]# cp /mnt/images/install.img /data --- 拷贝文件到挂载目录下
  4. [root@localhost ~]# du -sh /mnt/images/install.img --- 查看拷贝文件大小
  5. 448M /mnt/images/install.img
  6. [root@localhost ~]# vdostats --human-readable --- 查看卷的状态和信息
  7. Device Size Used Available Use% Space saving%
  8. /dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 2%
  9. [root@localhost ~]# cp /mnt/images/install.img /data/install.img1 --- 再次拷贝文件到挂载目录下
  10. [root@localhost ~]# vdostats --human-readable --- 查看是否去重
  11. Device Size Used Available Use% Space saving%
  12. /dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 50% --- 占用内存无变化,去重成功
  • 总结:复制相同文件,文件存在,但是空间不会发生变化
  1. [root@localhost ~]# ll /data
  2. total 917032
  3. -r--r--r--. 1 root root 469520384 Apr 11 11:14 install.img
  4. -r--r--r--. 1 root root 469520384 Apr 11 11:15 install.img1
  5. [root@localhost ~]# vdostats --human-readable
  6. Device Size Used Available Use% Space saving%
  7. /dev/mapper/vdo1 5.0G 3.4G 1.6G 68% 50%
  • 删除vdo(应先卸除挂载)
  1. [root@localhost ~]# umount /data
  2. [root@localhost ~]# vdo remove -n=vdo1
  3. Removing VDO vdo1
  4. Stopping VDO vdo1
  • 开机自动挂载
  1. PS:vdo开机自动挂载,需要添加参数,以下其中一种方法即可
  2. defaults,_netdev --- 网络设备启动好后再挂载
  3. defaults,x-systemd.requires=vdo.service --- vdo.service服务启动后再执行挂载
  4. [root@localhost ~]# vim /etc/fstab
  5. /dev/sr0 /mnt iso9660 defaults 0 0
  6. /dev/mapper/vdo1 /data xfs defaults._netdev 0 0

附:3、存储相关命令

(1)du:显示文件或目录所占用的磁盘空间

参数含义
-a列出所有文件和目录容量,默认仅统计目录下面的文件量而已
-h以人们易读懂的容量格式(G/M)显示

-s

列出总量,不列出每个个别目录占用的容量
-S不包括子目录下的总计,与 -s 不同
-k以KB为容量显示
-m以MB为容量显示

(2)df:列出文件系统的整体磁盘使用量

参数含义
-a列出所有文件系统,包括系统特有的/proc文件系统
-k以KB容量显示各文件系统
-m以MB容量显示各文件系统
-h以人们较易阅读的GB,MB,KB等格式自行显示
-H以M=1000K替代M=1024K的进位方式
-T连同该分区的文件系统名称(例如ext3)也列出
-i不用硬盘容量,而以 inode 的数量来显示

(3)挂载和卸载

  • 挂载命令:mount [-t 文件系统类型] 设备名 挂载点目录
  • 卸载磁盘分区:umount 挂载点目录或存储设备名
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/704643
推荐阅读
相关标签
  

闽ICP备14008679号