RHEL8_Linux虚拟数据优化器VDO

本章主要介绍虚拟化数据优化器

  • 什么是虚拟数据优化器VDO
  • 创建VDO设备以节约硬盘空间

1.了解什么是VDO

        VDO全称是Virtual Data Optimize(虚拟数据优化),主要是为了节省硬盘空间。

        现在假设有两个文件file1和 file2,大小都是10G。file1和 file2中包含了8G的相同数据, 如图中的灰色部分。这个相同数据在硬盘中存储了两份,所以这两个文件占用的硬盘空间是20G。

如果采用了VDO,效果如图

        file1和 file2大小都是10G,两个文件中都有8G的相同数据。那么,这个相同数据在硬盘中只存储一份,让filel和 file2共同使用。所以,最终在硬盘上占用的空间是12G,这样一个20G大小的硬盘,完全可以存储大于20G的文件,主要看这些文件中到底有多少相同数据。
        所以,VDO实现的效果是,多个文件中有相同数据,这个相同数据只存储一份,从而实现节省硬盘空间的目的。

2.配置VDO

        首先要安装VDO相关软件包,步骤如下。
1)挂载光盘,命令如下。
[root@node01 /]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@node01 /]
这里准备把光盘作为yum 源。
2)编写repo文件,命令如下
[root@node01 /]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=///mnt/BaseOS
enabled=1
gpgcheck=0
[root@node01 /]# 
3)安装VDO,命令如下。
[root@node01 /]# yum -y install vdo kmod-kvdo
4)查看 VDO设备,命令如下。
[root@node01 /]# vdo list [root@node01 /]# 
        没有任何输出,说明现在还没有任何VDO设备。
        因为相同数据只存储一份,大大地节省了存储空间,所以本来20G的磁盘空间现在存储 30G、40G、50G的数据是完全有可能的。

    

5)面创建一个名称为vdo1、底层设备为/dev/sdc的VDO设备,逻辑大小为50G,命令如下。
[root@node01 ~]# vdo create --name vdo01 --device /dev/sdc --vdoLogicalSize 30G
Creating VDO vdo01The VDO volume can address 26 GB in 13 data slabs, each 2 GB.It can grow to address at most 16 TB of physical storage in 8192 slabs.If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo01
Starting compression on VDO vdo01
VDO instance 0 volume is ready at /dev/mapper/vdo01
[root@node01 ~]#
        上面提示的一堆信息不用管,最终能看到的是vdo1已经创建好了,可以通 过/dev/mapper/vdo1来使用。
6)再次查看有多少VDO设备,命令如下。
[root@node01 ~]# vdo list 
vdo01
[root@node01 ~]# 
7)格式化这个VDO设备,命令如下。
[root@node01 ~]# mkfs.xfs -K /dev/mapper/vdo01 
meta-data=/dev/mapper/vdo01      isize=512    agcount=4, agsize=1966080 blks=                       sectsz=4096  attr=2, projid32bit=1=                       crc=1        finobt=1, sparse=1, rmapbt=0=                       reflink=1
data     =                       bsize=4096   blocks=7864320, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2=                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@node01 ~]# 
注意:这里-K(大写)的意思类似于Windows中的快速格式化。
8)把这个 VDO设备挂载到/vdo1目录上,命令如下。
[root@node01 ~]# mkdir /vdo01
[root@node01 ~]# mount /dev/mapper/vdo01 /vdo01/
[root@node01 ~]# 
9)如果希望能永久挂载,需要写入/etc/fstab中,命令如下。
[root@node01 ~]# grep vdo /etc/fstab 
/dev/mapper/vdo01	/vdo01	xfs	defaults	0 0
[root@node01 ~]# 
10)需要注意的是,这里一定要有_netdev选项,否则重启系统时,系统是启动不起来的。 查看vdo1的空间使用情况,命令如下。
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      4.0G     26.0G  13%           98%
[root@node01 ~]#
        这里自身就消耗了4G空间(Used那列),因为这里不存在文件,所以空间节省率为98%
(Space saving%那列)。

3.测试VDO

1)往 node01上传一个比较大的文件,这里上传的是一个centos7的软件包,命令如下。
 wget https://mirrors.aliyun.com/centos/7/isos/x86_64/CentOS-7-x86_64-DVD-2009.iso?spm=a2c6h.25603864.0.0.41be2d1cNwXIGn

这个软件包大小是11M

2)下面开始第一次把 CentOS-7拷贝到/vdo01中并命名为centos7,命令如下。
[root@node01 ~]# cp /root/CenOS-7 /vdo01/centos7
3)可以看到,现在消耗空间是8G,因为只有一个文件不存在相同数据,所以空间节省率 为3%。
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      8.0G     22.0G  26%            3%
[root@node01 ~]# 
4)下面开始第二次把CenOS-7拷贝到/vdo01中并命名为centos02,命令如下。
[root@node01 ~]# cp /root/CenOS-7 /vdo01/centos02
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      8.0G     22.0G  26%           51%
[root@node01 ~]# 
        因为是从同一个文件拷贝的,所以 file2的内容和filel的内容是完全相同的,这里磁盘使用量仍然是8G。
        因为实际写入了两个8G的文件,本来应该消耗16G的空间,但是这两个文件是相同的,所以实际消耗还是8G的空间,节省率在50%左右。
5)下面开始第三次把CentOS-7拷贝到/vdo01中并命名为centos03,命令如下。
[root@node01 ~]# cp /root/CenOS-7 /vdo01/centos03
[root@node01 ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo01        30.0G      8.0G     22.0G  26%           67%
[root@node01 ~]# 
        因为是从同一个文件拷贝的,所以 centos7、centos02、centos03三个文件的内容是完全相同的,这里磁盘使用量仍然是8G。
        因为实际写入了三个4G的文件,本来应该消耗12G的空间,但是这三个文件是相同的,所以实际消耗还是8G的空间,节省率在67%左右
6)要删除VDO设备,命令如下
[root@node01 ~]# vdo remove -n vdo01     //移除vdo01
[root@node01 ~]# vdo list        //查看是否删除

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

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

相关文章

.NET 材料检测系统崩溃分析

Windbg 分析 1. 到底是哪里的崩溃 一直跟踪我这个系列的朋友应该知道分析崩溃第一个命令就是 !analyze -v ,让windbg帮我们自动化异常分析。 0:033> !analyze -v CONTEXT: (.ecxr) rax00000039cccff2d7 rbx00000039c85fc2b0 rcx00000039cccff2d8 rdx000000000…

洛谷P3807 Lucas定理

传送门: P3807 【模板】卢卡斯定理/Lucas 定理 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)https://www.luogu.com.cn/problem/P3807题干: 给定整数n,m,p 的值,求出C(nm,n)​mod p 的值。 输入数据保证…

5分钟搞懂K8S Pod Terminating/Unknown故障排查

Kubernetes集群中的Pod有时候会进入Terminating或Unknown状态,本文列举了6种可能的原因,帮助我们排查这种现象。原文: K8s Troubleshooting — Pod in Terminating or Unknown Status 有时我们会看到K8S集群中的pod进入"Terminating"或"U…

每日一练【查找总价格为目标值的两个商品】

一、题目描述 题目链接 购物车内的商品价格按照升序记录于数组 price。请在购物车中找到两个商品的价格总和刚好是 target。若存在多种情况,返回任一结果即可。 示例 1: 输入:price [3, 9, 12, 15], target 18 输出:[3,15] …

成都工业学院Web技术基础(WEB)实验一:HTML5排版标签使用

写在前面 1、基于2022级计算机大类实验指导书 2、代码仅提供参考,前端变化比较大,按照要求,只能做到像,不能做到一模一样 3、图片和文字仅为示例,需要自行替换 4、如果代码不满足你的要求,请寻求其他的…

Gemini与GPT-4的巅峰对决:AI界的双壁之战

随着人工智能技术的飞速发展,AI领域的竞争越来越激烈。在这个充满挑战与机遇的时代,两个备受瞩目的AI巨头——Gemini Pro和GPT-4,成为了人们关注的焦点。这两者都以其强大的功能和卓越的性能,引领着AI领域的发展潮流。本文将详细介…

MyBatisX插件

MyBatisX插件 MyBatis-Plus为我们提供了强大的mapper和service模板,能够大大的提高开发效率。 但是在真正开发过程中,MyBatis-Plus并不能为我们解决所有问题,例如一些复杂的SQL,多表联查,我们就需要自己去编写代码和SQ…

connection error;reply-code=503;unknown exchange type ‘x-delayed-message‘

错误原因 这个错误表明你的 RabbitMQ 服务器不认识交换机类型 “x-delayed-message”,这通常是因为你的 RabbitMQ 服务器没有启用 rabbitmq_delayed_message_exchange 插件,或者插件版本与你的 RabbitMQ 服务器不兼容。 解决方法 启用 RabbitMQ 延迟队…

JAVA安全之Spring参数绑定漏洞CVE-2022-22965

前言 在介绍这个漏洞前,介绍下在spring下的参数绑定 在Spring框架中,参数绑定是一种常见的操作,用于将HTTP请求的参数值绑定到Controller方法的参数上。下面是一些示例,展示了如何在Spring中进行参数绑定: 示例1&am…

2024年C语言基础知识入门来了,一文搞定C语言基础知识!

一、C语言基础知识入门 c语言基础知识入门一经出现就以其功能丰富、表达能力强、灵活方便、应用面广等特点迅速在全世界普及和推广。C语言不但执行效率高而且可移植性好,可以用来开发应用软件、驱动、操作系统等,2024年C语言基础知识入门大全。C语言基础…

Spring boot 使用Redis 消息发布订阅

Spring boot 使用Redis 消息发布订阅 文章目录 Spring boot 使用Redis 消息发布订阅Redis 消息发布订阅Redis 发布订阅 命令 Spring boot 实现消息发布订阅发布消息消息监听主题订阅 Spring boot 监听 Key 过期事件消息监听主题订阅 最近在做请求风控的时候,在网上搜…

全套的外贸出口业务流程,赶紧收藏起来吧

很多做外贸的小伙伴入行遇到的第一个问题就是对外贸业务流程的不熟悉,今天小易给大家整理了一份外贸业务全流程,从开发客户到售后服务一整套流程,一起来看看吧! 目前做外贸开发客户的渠道一般有以下几种: 1、自建站、外…

如何在 Windows 中恢复已删除的 Excel 文件?– 8 个有效方法!

如何恢复已删除的Excel文件?如果您不小心删除了 Excel 文件或该文件已损坏,您无需担心会丢失宝贵的数据。MiniTool 分区向导的这篇文章提供了 8 种有效的方法来帮助您恢复它们。 Microsoft Excel 是 Microsoft 为 Windows、macOS、Android、iOS 和 iPad…

【lesson4】数据类型之数值类型

文章目录 数据分类数值类型tinyint类型有符号类型测试无符号类型测试 bit类型测试 float类型有符号测试无符号测试 decimal类型测试 数据分类 数值类型 tinyint类型 说明:tinyint 有符号能存储的范围是-128-127,无符号能存储的范围是0~255 有符号类型…

蓝桥杯-动态规划专题-子数组系列,双指针

目录 一、单词拆分 二、环绕字符串中唯一的子字符串 双指针-三数之和 ArrayList(Arrays.asList(array)) 四、四数之和(思路和三数之和一样,只是多了一层循环) 一、单词拆分 1.状态表示 dp[i]:到达i位置结尾,能否被dict拆分 …

Terraform实战(二)-terraform创建阿里云资源

1 初始化环境 1.1 创建初始文件夹 $ cd /data $ mkdir terraform $ mkdir aliyun terraform作为terraform的配置文件夹,内部的每一个.tf,.tfvars文件都会被加载。 1.2 配置provider 创建providers.tf文件,配置provider依赖。 provider…

想学编程,但不知道从哪里学起,应该怎么办?

怎样学习任何一种编程语言 我将教你怎样学习任何一种你将来可能要学习的编程语言。本书的章节是基于我和很多程序员学习编程的经历组织的,下面是我通常遵循的流程。 1.找到关于这种编程语言的书或介绍性读物。 2.通读这本书,把…

基于Java Swing泡泡龙游戏(Java毕业设计)

大家好,我是DeBug,很高兴你能来阅读!作为一名热爱编程的程序员,我希望通过这些教学笔记与大家分享我的编程经验和知识。在这里,我将会结合实际项目经验,分享编程技巧、最佳实践以及解决问题的方法。无论你是…

AP9111手电筒专用集成电路芯片 单节干电池 LED手电筒IC

概述 AP9111 是 LED 手电筒专用集成电路芯片 ,是一款采用大规模集成电路技术,专门针对单节干电池的 LED 手电筒设计的一款专用集成电路。外加 1 个电感元件,即可构成 LED 手电筒驱动电路板。AP 9111 性能优越、可靠性高、使用简单、生产一致…

六级高频词汇3

目录 单词 参考链接 单词 400. nonsense n. 胡说,冒失的行动 401. nuclear a. 核子的,核能的 402. nucleus n. 核 403. retail n. /v. /ad. 零售 404. retain vt. 保留,保持 405. restrict vt. 限制,约束 406. sponsor n. …