linux高级存储功能

news2024/11/25 1:33:48

高级存储功能

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.将物理硬盘加入存储池中
2.文件系统是通过<精简配置>构建在池中
3.文件系统构建在池中,那么文件系统的空间有多大?
<1> 通过精简方式构建
<2> 文件系统大小:数据大小即为使用大小
<3> 意义:动态过程,随着数据量的写入,文件系统使用量随之增大。不像使用LV(LV大小固定,空间不够人为扩容),扩容过程是动态的,写入多少数据就占多少空间。

例:
你的pool是100G,你在pool之上构建的文件系统最开始很小<1M>,当你往文件系统写数据的时候,动态的从pool分配空间。文件系统扩容不需要人为的干预了。

文件系统到100G时,可以在pool中+硬盘

4.一个池可以创建多个文件系统
5.stratis是通过元数据来管理,不用人为分区和格式化
6.对于stratis而言有stratic-cli,还有对应的服务stratisd.service
(stratis-cli通过D-BUS和stratisd.service进行通信)

(4)案例

  • 新增两块5G硬盘

  • 前置配置yum源
[root@localhost ~]# lsblk --- 查看硬盘识别情况
NAME          MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda             8:0    0   10G  0 disk
sdb             8:16   0    5G  0 disk
sdc             8:32   0    5G  0 disk
[root@localhost yum.repos.d]# more redhat.repo
[BaseOS]
name=BaseOS
baseurl=file:///mnt/BaseOS/
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///mnt/AppStream/
gpgcheck=0

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

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

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

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

VDO(Virtual Data Optimize)是RHEL8/Centos8上新推出的一个存储相关技术(最早在7.5测试版中开始测试),是Redhat收购的Permabit公司的技术。

<1> 作用:VDO的主要作用是节省磁盘空间,比如让1T的磁盘能装下1.5T的数据,从而降低数据中心的成本。

<2> 实现:关键原理主要是重删和压缩,重删就是硬盘里拷贝来相同的数据,以前要占多份空间,现在只需要1份空间就可以了。类似我们在百度网盘中上传一个大型软件安装包,能实现秒传,其实是之前就有,所以无需再传一遍,也无需再占百度一份空间。另一方面是数据压缩,类似于压缩软件的算法,也可以更加节省磁盘空间。

(1)加载内核模块

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

(2)位置

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

(3)实现过程

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

 (4)案例

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425180.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

加拿大亚马逊FBA海运收费标准有哪些

众所周知&#xff0c;加拿大亚马逊的海运物流费用一般有头程运费、尾端派送费和仓储费等其他费用。那么&#xff0c;加拿大亚马逊FBA海运收费标准有哪些呢?接下来一起来了解下加拿大亚马逊FBA海运收费标准和费用。加拿大亚马逊FBA海运收费标准有哪些? 加拿大亚马逊FBA海运收费…

《Java8实战》第6章 用流收集数据

collect 是一个归约操作&#xff0c;就像 reduce 一样可以接受各种做法作为参数&#xff0c;将流中的元素累积成一个汇总结果。具体的做法是通过定义新的Collector 接口来定义的&#xff0c;因此区分 Collection、Collector 和 collect 是很重要的。用 collect 和收集器能够做什…

PADS-微处理器、USB转UART芯片、MINI-USB PCB封装设计

目录 1 微处理器PCB封装设计 2 USB转UART芯片PCB封装设计 3 MINI-USB PCB封装设计 4 添加验证 详细步骤不再文字说明&#xff0c;直接截取关键步骤截图 1 微处理器PCB封装设计 查看芯片手册 器件高度 器件高度1.6 管脚中心点间距0.5&#xff0c;管脚焊盘长1.2、宽0.3&…

[ 云计算 | Azure ] Chapter 04 | 核心体系结构之数据中心、区域与区域对、可用区和地理区域

本章节主要内容进行讲解&#xff1a;Azure云计算的核心体系结构组件中的&#xff1a;Azure物理基础设施&#xff08;Physical infrastructure&#xff09;&#xff0c;区域&#xff08;Regions&#xff09;和区域对&#xff08;Region Pairs&#xff09;、地理数据中心&#xf…

一文解决ethtool 原理介绍和解决网卡丢包排查思路

前言 之前记录过处理因为 LVS 网卡流量负载过高导致软中断发生丢包的问题&#xff0c;RPS 和 RFS 网卡多队列性能调优实践[1]&#xff0c;对一般人来说压力不大的情况下其实碰见的概率并不高。这次想分享的话题是比较常见服务器网卡丢包现象排查思路&#xff0c;如果你是想了解…

UE 简单插件制作

本文主要是提供几个写UE插件的实例&#xff0c;借此来了解在UE里使用C创建自定义插件的做法&#xff1a; 写一个使场景变暗的简单插件写一个自定义窗口&#xff0c;展示项目里所有的动画资产 写一个使场景变暗的简单插件 参考&#xff1a;Unreal Engine 5 - Writing Plugins …

统信UOS专业版系统安装教程 - 手动分区安装UOS系统

全文导读&#xff1a;本文主要介绍了安装UOS系统过程中使用手动分区安装方法&#xff0c;一般没有特殊要求建议使用全盘安装UOS系统。 准备环境 制作好统信UOS专业版启动U盘 一台CPU频率≥2GHz、内存≥4GB、硬盘≥64GB的电脑 安装步骤 一、制作UOS 系统启动盘 制作UOS 系…

自动驾驶TPM技术杂谈 ———— CCRT验收标准(评分标准)

文章目录介绍评价方法指标体系算分方法一级指标二级指标三级指标四级指标五级指标行车辅助能力得分说明跟车能力得分说明前车静止识别与响应得分说明前车低速识别与响应得分说明前车减速识别与响应得分说明前车切入识别与响应得分说明前车切出识别与响应得分说明跟随前车起停得…

数据结构小知识------时间与空间复杂度

本章思维导图&#xff1a; 一&#xff0c;时间复杂度 1.1时间复杂度的概念 &#x1f310;&#xff1a;什么是时间复杂度呢&#xff1f;时间复杂度其实就是一个程序运行时它的指令运行的次数。 在这里&#xff0c;程序默认每条指令的运行时间是一样的。所以时间复杂度就可以理解…

【云原生进阶之容器】第六章容器网络6.4.2--Flannel的安装与部署

1 flannel的安装与部署 见链接一篇文章带你了解Flannel - Flannel - 操作系统 - 深度开源 1.1 部署环境规划 1.2 安装部署 #tar -xf flannel-v0.13.0.tar.gz #mv /apps/svr/flannel-v0.13.0 #ln –svfn /apps/svr/flannel-v0.13.0 /apps/svr/flannel 1.2.1 调整Flannel配置…

设计模式(超详细)

设计模式 原则 什么是SOLID原则&#xff1f; S单一职责SRP Single-Responsibility Principle 一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合,高内聚在面向对象原则的引申,将职责定义为引起变化的原因,以提高内聚性减少引起变化的原因。 比如…

项目资源管理流程:五步专业指南

项目资源管理是描述大多数项目经理的一项关键职能的方式——收集完成工作所需的团队成员、设备和其他材料&#xff08;也称为资源&#xff09;。 以下是项目资源管理的步骤清单&#xff1a; 步骤1&#xff1a;资源规划 为了确定完成项目的资源需求&#xff0c;你首先需要了…

SpringCloud-Gateway实现网关

网关作为流量的入口&#xff0c;常用的功能包括路由转发、权限校验、限流等Spring Cloud 是Spring官方推出的第二代网关框架&#xff0c;由WebFluxNettyReactor实现的响应式的API网关&#xff0c;它不能在传统的servlet容器工作&#xff0c;也不能构建war包。基于Filter的方式提…

个人开发者如何选择阿里云服务器配置CPU内存带宽?

阿里云服务器个人用怎么选择&#xff1f;云服务器吧建议选择ECS共享型s6&#xff0c;不限制CPU性能&#xff0c;选择1核2G或2核4G都可以&#xff0c;云服务器s6处理器采用2.5 GHz主频的Intel Xeon Platinum 8269CY&#xff08;Cascade Lake&#xff09;&#xff0c;睿频3.2 GHz…

【论文阅读--WSOL】Spatial-Aware Token for Weakly Supervised Object Localization

文章目录方法实验Limitation论文&#xff1a;https://arxiv.org/abs/2303.10438代码&#xff1a;https://github.com/wpy1999/SAT/blob/main/Model/SAT.py方法 这篇文章的方法应该属于FAM这一类。 额外添加的一个spatial token&#xff0c;从第10-12层开始&#xff0c;利用其得…

Vue3技术1之Vue3简介、创建Vue3工程、分析工程结构、安装开发者工具与初识setup

Vue3技术1Vue3简介发展提升创建Vue3工程使用vue-cli创建使用vite创建分析工程结构&#xff08;由vue-cli创建的&#xff09;main.jsvue.config.jsApp.vue安装开发者工具初识setupsetup的两种返回值返回一个对象App.vue返回一个函数App.vueVue2与Vue3混合使用App.vue总结Vue3简介…

【致敬未来的攻城狮计划】— 连续打卡第一天:提前对CPK_RA2E1是瑞萨RA系列开发板的初体验,了解一下(文字上的初理解)

系列文章目录 系列文章目录 前言 一、瑞萨MCU&#xff08;CPK_RA2E1是瑞萨RA系列开发板&#xff09;是什么&#xff1f; 首先引入是什么&#xff1f; 他的优势在哪&#xff1f; 瑞萨CPK_RA2E1 对标stm32 相似之处和不同之处&#xff1f; 瑞萨CPK_RA2E1如何开发&#xff…

集成定时器事件

一&#xff0c;定时器事件 1、概述 libevent提供了高性能定时器的功能&#xff0c;方便执行延迟回调逻辑。在添加事件监听的时候&#xff0c;可以不指定fd和监听的事件&#xff0c;指定超时的时间&#xff0c;实现定时器功能。定时器的实现主要依赖下面的数据结构&#xff0c;…

java 多线程基础 万字详解(通俗易懂)

目录 一、前言 二、定义 1.进程 : 2.线程 : 3.单线程与多线程 : 4.并发与并行 : 三、线程的创建 1.创建线程的两种基本方式 : 1 继承Thread类&#xff0c;并重写run方法 1.5 多线程的执行机制(重要) 2 实现Runnable接口&#xff0c;并重写run方法 2. 两种创建线程方式…

【C++】继承---下(子类默认成员函数、虚继承对象模型的详解等)

前言&#xff1a; 上篇文章我们一起初步了解了继承的概念和使用&#xff0c;本章我们回家新一步深入探讨继承更深层次的内容。 前文回顾——>继承---上 目录 &#xff08;一&#xff09;派生类的默认成员函数 &#xff08;1&#xff09;6个默认成员函数 &#xff08;…