在linux上如何运用虚拟数据优化器VDO

本章主要介绍虚拟化数据优化器。
  • 什么是虚拟数据优化器VDO
  • 创建VDO设备以节约硬盘空间

16.1 了解什么是VDO

VDO全称是Virtual Data Optimize(虚拟数据优化),主要是为了节省硬盘空间。
现在假设有两个文件file1和 file2,大小都是10G。file1和 file2中包含了8G的相同数据,
如图16-1中的灰色部分。这个相同数据在硬盘中存储了两份,所以这两个文件占用的硬盘空
间是20G。
如果采用了VDO,效果如图16-2所示。
file1和 file2大小都是10G,两个文件中都有8G的相同数据。那么,这个相同数据在硬盘
中只存储一份,让filel和 file2共同使用。所以,最终在硬盘上占用的空间是12G,这样一个
20G大小的硬盘,完全可以存储大于20G的文件,主要看这些文件中到底有多少相同数据。
所以,VDO实现的效果是,多个文件中有相同数据,这个相同数据只存储一份,从而实现
节省硬盘空间的目的。
16.2 配置VDO
首先要安装VDO相关软件包(关于软件包的管理在第23章和第24章中有详细讲解),步骤
如下。
步骤①:挂载光盘,命令如下。
[root@pp ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@pp ~]# 
这里准备把光盘作为yum 源。
步骤②:编写repo文件,命令如下。
[root@pp ~]# cat /etc/yum.repos.d/aa.repo 
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
[root@pp ~]# 
步骤③:安装VDO,命令如下。
[root@pp ~]# yum -y install vdo kmod-kvdo
查看 VDO设备,命令如下。
[root@pp ~]# vdo list [root@pp ~]# 
没有任何输出,说明现在还没有任何VDO设备。
因为相同数据只存储一份,大大地节省了存储空间,所以本来20G的磁盘空间现在存储
30G、40G、50G的数据是完全有可能的。
下面创建一个名称为vdo1、底层设备为/dev/sdc的VDO设备,逻辑大小为50G,命令如
下。
[root@pp ~]# vdo create --name vdo1 --device /dev/nvme0n2 --vdoLogicalSize 50G
Creating VDO vdo1The VDO volume can address 46 GB in 23 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 vdo1
Starting compression on VDO vdo1
VDO instance 0 volume is ready at /dev/mapper/vdo1
[root@pp ~]# 
上面提示的一堆信息不用管,最终能看到的是vdo1已经创建好了,可以通
过/dev/mapper/vdo1来使用。 再次查看有多少VDO设备,命令如下。
[root@pp ~]# vdo list
vdo1
[root@pp ~]# 
格式化这个VDO设备,命令如下。
[root@pp ~]# mkfs.xfs -K /dev/mapper/vdo1 
meta-data=/dev/mapper/vdo1       isize=512    agcount=4, agsize=3276800 blks=                       sectsz=4096  attr=2, projid32bit=1=                       crc=1        finobt=1, sparse=1, rmapbt=0=                       reflink=1
data     =                       bsize=4096   blocks=13107200, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=6400, version=2=                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@pp ~]# 
这里-K(大写)的意思类似于Windows中的快速格式化。
把这个 VDO设备挂载到/vdo1目录上,命令如下。
[root@pp ~]# mkdir /vdo1
[root@pp ~]# mount /dev/mapper/vdo1 /vdo1/
[root@pp ~]# 
如果希望能永久挂载,需要写入/etc/fstab中,命令如下。
[root@pp ~]# grep vdo /etc/fstab 
/dev/mapper/vdo1 /vdo1   xfs  defaults,_netdev 0 0
[root@pp ~]# 
需要注意的是,这里一定要有_netdev选项,否则重启系统时,系统是启动不起来的。
查看vdo1的空间使用情况,命令如下。
[root@pp ~]# vdostats --hu
Device                    Size      Used Available Use% Space saving%
/dev/mapper/vdo1         50.0G      4.0G     46.0G   8%           99%
[root@pp ~]# 
这里自身就消耗了4G空间(Used那列),因为这里不存在文件,所以空间节省率为99%
(Space saving%那列)。

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

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

相关文章

Windows 安全基础——Windows WPAD篇

Windows 安全基础——Windows WPAD篇 WPAD全称Web Proxy Auto-Discovery Protocol, 也就是Web代理自动发现协议。(这里的代理就是我们在渗透中使用BURP的时候修改的代理设置。)它的作用是让局域网浏览器自动发现内网中的代理服务器&#xff…

高效利用内存资源之动态内存管理详解

目录 一、为什么存在动态内存分配 二、动态内存函数的介绍 2.1malloc 2.2free 2.3calloc 2.4realloc 三、常见的动态内存错误 3.1对NULL指针的解引用操作 3.2对动态开辟空间的越界访问 3.3对非动态开辟内存使用free释放 3.4使用free释放一块动态开辟内存的一部分 3.…

RocketMq集成SpringBoot(待完善)

环境 jdk1.8, springboot2.7.3 Maven依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.3</version><relativePath/> <!-- lookup parent from…

读书笔记:《股票量化交易的七个策略》

从长远来看&#xff0c;基本面最重要&#xff1b;从短期来看&#xff0c;价格和情绪最重要。在别人贪婪时恐惧&#xff0c;在别人恐惧时贪婪。 相对强弱指数策略【趋势反转】 相对强弱指数&#xff08;Relative Strength Index&#xff0c;RSI&#xff09; RSI的取值范围在0到…

机器学习基本概念介绍 2023

笔记来源于&#xff1a; https://www.youtube.com/watch?vphQK8xZpgoU&t172s https://www.youtube.com/watch?vXLyPFnephpY&t645s Machine/Deep Learning 机器学习概况来说&#xff0c;让机器具备自动找函式的能力 &#xff08;Machine Learning 约等于 Looking …

[足式机器人]Part2 Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-数学基础Ch0-6复数Complex Number x 2 − 2 x 2 0 ⇒ x 1 i x^2-2x20\Rightarrow x1\pm i x2−2x20⇒x1i 代数表达&#xff1a; z a b i , R e ( z ) a , I m ( z ) b zabi,\mathrm{Re}…

Vue脚手架 生命周期 组件化开发

Vue脚手架 & 生命周期 & 组件化开发 一、今日目标 1.生命周期 生命周期介绍生命周期的四个阶段生命周期钩子声明周期案例 2.综合案例-小黑记账清单 列表渲染添加/删除饼图渲染 3.工程化开发入门 工程化开发和脚手架项目运行流程组件化组件注册 4.综合案例-小兔…

计算机网络之IP篇

来源自小林Coding博客&#xff0c;阅读后部分精简笔记 目录 一、IP 的基本认识 二、DNS 三、ARP 四、DHCP 五、NAT 六、ICMP 七、IGMP 七、ping 的工作原理 ping-----查询报文的使用 traceroute —— 差错报文类型的使用 八、断网了还能 ping 通 127.0.0.1 吗&…

十一、了解分布式计算

1、什么是&#xff08;数据&#xff09;计算&#xff1f; 2、分布式(数据)计算 &#xff08;1&#xff09;概念 顾名思义&#xff0c;分布式计算&#xff0c;即以分布式的形式完成数据的统计&#xff0c;得到需要的结果。 分布式数据计算&#xff0c;顾名思义&#xff0c;就是…

基于PLC的锅炉燃烧控制系统设计 (论文+源码)

1.系统设计 由图3.1可以看出&#xff0c;煤炭进入煤炭输送装置&#xff0c;直接落入缓慢移动的炉排中的燃烧室。对流烟道被烟雾隔离。对流烟道设置有加热表面&#xff0c;例如对流管束。对流管是连接到上部和下部气缸的一束管。管道中的水吸收烟道中的热量并加热。在上鼓中加热…

VINS-MONO代码解读5----vins_estimator(marginalization部分)

文章目录 0. 前言1.1 Marginalization Pipiline 1. marg factor构建1.1 变量及维度理解1.2 IMUFactor1.3 ProjectionTdFactor(ProjectionFactor)1.4 MarginalizationFactor( e p e_p ep​推导更新&#xff0c;FEJ解决的问题)1.4.1 先验残差的更新1.4.2 先验Jacobian的更新 2. R…

Java网络通信-第21章

Java网络通信-第21章 1.网络程序设计基础 网络程序设计基础涵盖了许多方面&#xff0c;包括网络协议、Web开发、数据库连接、安全性等。 1.1局域网与互联网 局域网&#xff08;LAN&#xff09;与互联网&#xff08;Internet&#xff09;是两个不同的概念&#xff0c;它们分…

Redis Reactor事件驱动模型源码

前置学习&#xff1a;Redis server启动源码-CSDN博客 Redis采用单线程Reactor模型 三个关键角色&#xff0c;即 reactor、acceptor、handler 三类处理事件&#xff0c;即连接事件、写事件、读事件。 建立连接&#xff08;Acceptor&#xff09;、监听accept、read、write事件…

测试命题 cuda kernel 和 cudaMemcpy 是异步执行

前置命题&#xff0c;保序的命题&#xff1a; 同一个任意的stream中的gpu操作&#xff08;memcpy和kernel&#xff09;&#xff0c;在gpu内部都是严格保序的&#xff0c;即&#xff0c;前一个gpu任务结束后才会执行下一个任务。 测试两个命题&#xff1a; 1&#xff0c;cuda …

python画动漫形象(魔法少女小圆晓美焰,super beautiful)

1.源代码 import turtle as te import time WriteStep 15 # 贝塞尔函数的取样次数 Speed 5 Width 600 # 界面宽度 Height 500 # 界面高度 Xh 0 # 记录前一个贝塞尔函数的手柄 Yh 0 def Bezier(p1, p2, t): # 一阶贝塞尔函数 return p1 * (1 - t) p2 * t def Bezier_2(x1…

JVM 性能调优及监控诊断工具 jps、jstack、jmap、jhat、jstat、hprof 使用详解

目录 一. 前言 二. jps&#xff08;Java Virtual Machine Process Status Tool&#xff09; 三. jstack 四. jmap&#xff08;Memory Map&#xff09;和 jhat&#xff08;Java Heap Analysis Tool&#xff09; 五. jstat&#xff08;JVM统计监测工具&#xff09; 六. hpro…

MySQL系列(一):索引篇

为什么是B树&#xff1f; 我们推导下&#xff0c;首先看下用哈希表做索引&#xff0c;是否可以满足需求。如果我们用哈希建了索引&#xff0c;那么对于如下这种SQL&#xff0c;通过哈希&#xff0c;可以快速检索出数据&#xff1a; select * from t_user_info where id1;但是这…

logback日志框架使用

依赖引入 <dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.1.7</version> </dependency> 使用logback日志框架只需要引入以上即可&#xff0c;(我们平时使用较多的Slf4j…

Python爬虫-实现批量抓取王者荣耀皮肤图片并保存到本地

前言 本文是该专栏的第12篇,后面会持续分享python爬虫案例干货,记得关注。 本文以王者荣耀的英雄皮肤为例,用python实现批量抓取“全部英雄”的皮肤图片,并将图片“批量保存”到本地。具体实现思路和详细逻辑,笔者将在正文结合完整代码进行详细介绍。注意,这里抓取的图片…

SpringMVC修炼之旅(3)REST风格与拦截器

一、概述 1.1简介 Restful就是一个资源定位及资源操作的风格。不是标准也不是协议&#xff0c;只是一种风格。基于这个风格设计的软件可以更简洁&#xff0c;更有层次&#xff0c;更易于实现缓存等机制。 1.2功能 资源&#xff1a;互联网所有的事物都可以被抽象为资源 资源操作…