hello大家好😊
什么是 VDO ❓
VDO(Virtual Data Optimizer 即 虚拟数据优化器) 是一种用于数据存储的技术,它提供了块级别的数据去重(deduplication)、压缩和快照功能,以帮助节省存储空间并提高存储性能。VDO通常用于 Linux 系统中,特别是在虚拟化环境或需要高效利用存储资源的场景中
VDO 的主要功能包括:
- 数据去重(Deduplication):VDO 可以识别和消除重复的数据块,以节省存储空间。当多个文件或块包含相同的数据内容时,VDO 只会存储一份副本,并在需要时进行引用。
- 数据压缩:VDO 可以对数据块进行压缩,从而减少存储占用。压缩可以显著减少存储需求,特别是对于重复性高的数据。
- 快照:VDO 具有创建快照的能力,允许你在不中断正在运行的系统的情况下捕获文件系统或卷的状态。这些快照可以用于备份、恢复或测试等目的。
描述VDO:
-
VDO 是一个 Linux 设备映射器驱动程序,它可以减少块设备上的磁盘空间使用,同时最大限度减少数据重复,从而节省磁盘空间,甚至提高数据吞吐量
-
VDO 包括两个内核模块:kvdo 模块用于以透明的方式控制数据压缩,uds 则可用于重复数据删除
-
VDO 层位于块存储设备的顶部,而存储层(如 LVM 逻辑卷和文件系统)位于 VDO 设备之上
-
VDO 按以下顺序对数据实施三个阶段的处理,以减少空间占用:
1).零块消除将过滤掉仅包含 0 的数据块,且仅在元数据中记录这些块的信息。非零数据块随即被传递到下一个处理阶段
2). 重复数据删除。在这个阶段,VDO 会检查传递到该阶段的数据块,如果发现数据块与之前已存储的某个数据块完全相同(重复),那么就不会实际存储这个重复的数据块,而是更新元数据来指向已存在的数据块。这样就避免了在存储中创建冗余数据,有效减少存储需求
3). 压缩。在最后一个阶段,VDO 使用 LZ4 压缩算法对数据块进行压缩。这会将数据块的大小降低,从而减少存储空间占用。被压缩的数据块以 4 KB 块进行分组,以便进行高效的压缩。压缩后的数据保持在存储中,以供之后的访问和读取
实施VDO
利用VDO 创建的逻辑设备被称为 VDO 卷。VDO 卷与磁盘分区类似,我们可以将这些卷格式化为所需的文件系统类型,并像常规文件系统那样进行挂载。此外,我们还可以将 VDO 卷用作 LVM 物理卷。
安装VDO
在开始之前,首先确保你的系统中已经安装了 VDO 相关的软件包。可以使用以下命令确认是否已安装VDO软件包,这个命令将会显示所有已经安装的与 VDO 相关的软件包及其版本信息。如果已经安装了 VDO 软件包,它们将在输出中列出。如果没有安装 VDO 软件包,将不会有任何输出:
yum list installed vdo
示例:
若没有安装,在大多数 Linux 发行版中,你可以使用以下命令来安装 VDO:
sudo yum install vdo # 对于基于 Red Hat 的发行版
创建VDO卷
使用vdo create
命令创建VDO卷。注意如果省略逻辑大小,则生成的VDO卷将与其物理设备的大小相同。
比如我们根据如下要求创建新的VDO卷:
- 使用未分区的磁盘
- 该卷的名称为 vdotest
- 该卷的逻辑大小是 50G
- 该卷使用 xfs 文件系统格式化
- 该卷在系统启动时挂载到 /mnt/vdotest 下
vdo create --name=vdotest --device=/dev/vdc --vdoLogicalSize=50G
上面的命令中 ,--name
选项用于指定该VDO卷的名称,--device
选项用于指定未分区的磁盘,--vdoLogicalSize
选项用于指定VDO卷的逻辑大小。
udevadm settle
上面这个命令是等待 udev 完成对 VDO 卷设备的初始化和映射操作。
mkfs.xfs -K /dev/mapper/vdotest
上面这个命令是使用 xfs 文件系统对 VDO 卷进行格式化。-K
这个选项表示在创建文件系统时不要执行块设备的初始化。这在创建大型文件系统时可以提高速度。
mkdir /mnt/vdotest
echo "/dev/mapper/vdotest /mnt/vdotest xfs defaults,x-systemd.requires=vdo.service 0 0" >> /etc/fstab
上面这个命令是创建用于挂载的目录 /mnt/vdotest,并且将 VDO 卷配置添加到 /etc/fstab 文件中,以便在系统启动时自动挂载。使用 x-systemd.requires
确保 VDO 服务在挂载之前启动。
mount -a
上面这个命令是手动挂载 VDO 卷。
完成上面这些步骤,我们就成功创建了一个名为 vdotest 的 VDO 卷,并将其格式化为 xfs 文件系统。此卷将在系统启动时自动挂载到 /mnt/vdotest 目录下。我们可以通过 df -h
命令查看其磁盘空间使用情况。
分析VDO卷
运行vdo status
命令。此命令将以YAML格式显示有关VDO系统的报告以及VDO 卷的状态。此外,它还显示VDO 卷的属性。使用 -name=
选项可指定特定卷的名称。如果省略特定卷的名称,vdo status 命令的输出中将显示所有 VDO 卷的状态。
示例:
vdo list
命令显示当前启动的VDO 卷的列表。
我们还可以分别使用 vdo start
和 vdo stop
命令来启动和停止VDO 卷。
感谢 💖
好啦,这次的分享就到这里,感谢大家看到这里🤞