在 CentOS 8 上安装虚拟数据优化器 (VDO)
使用以下命令构建 dnf 缓存。
[root@vdo-storage-01 ~]# dnf makecache CentOS-8 - AppStream 3.0 kB/s | 4.3 kB 00:01 CentOS-8 - Base 2.8 kB/s | 3.9 kB 00:01 CentOS-8 - Extras 730 B/s | 1.5 kB 00:02 Metadata cache created.
更新 CentOS 8 软件包如下。
[root@vdo-storage-01 ~]# dnf update -y
要在 CentOS 8 上设置 Virtual Data Optimizer,我们必须安装以下两个软件包。
- kmod-kvdo - 虚拟数据优化器的内核模块
- vdo - 虚拟数据优化器的管理工具
我们使用单个 dnf 命令安装这两个软件包。
[root@vdo-storage-01 ~]# dnf install -y kmod-kvdo vdo
Virtual Data Optimizer (VDO) 服务由安装程序自动启用和启动。
[root@vdo-storage-01 ~]# systemctl status vdo.service -> vdo.service - VDO volume services Loaded: loaded (/usr/lib/systemd/system/vdo.service; enabled; vendor preset:> Active: active (exited) since Sun 2019-12-22 12:54:27 PKT; 20min ago Main PID: 801 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 5948) Memory: 0B CGroup: /system.slice/vdo.service Dec 22 12:54:12 vdo-storage-01.recipes.com systemd[1]: Starting VDO volume serv> Dec 22 12:54:27 vdo-storage-01.recipes.com systemd[1]: Started VDO volume servi>
虚拟数据优化器 (VDO) 已安装在 CentOS 8 上。
在 CentOS 8 中创建 VDO 卷
我们在 CentOS 8 虚拟机中添加了一个另外的磁盘作为 /dev/sdb。
我们将使用 /dev/sdb 作为 VDO 数据存储并创建 VDO 卷。
当我们尝试创建 VDO 卷时,我们遇到以下错误。
[root@vdo-storage-01 ~]# vdo create --name=vdo1 --device=/dev/sdb --vdoLogicalSize=1T Creating VDO vdo1 vdo: ERROR - Kernel module kvdo not installed vdo: ERROR - modprobe: FATAL: Module kvdo not found in directory /lib/modules/4.18.0-80.el8.x86_64
这是一个已知错误,作为解决方法,我们重新启动了 CentOS 8 服务器。
[root@vdo-storage-01 ~]# systemctl reboot
重新启动后,我们再次尝试创建 VDO 卷,现在它正在工作。
[root@vdo-storage-01 ~]# vdo create --name=vdo1 --device=/dev/sdb --vdoLogicalSize=1T Creating VDO vdo1 Starting VDO vdo1 Starting compression on VDO vdo1 VDO instance 0 volume is ready at /dev/mapper/vdo1
由于我们使用 VDO 卷作为本地文件系统,因此,我们需要在 VDO 卷中创建一个文件系统。
[root@vdo-storage-01 ~]# mkfs.xfs -K /dev/mapper/vdo1 meta-data=/dev/mapper/vdo1 isize=512 agcount=4, agsize=67108864 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=268435456, imaxpct=5 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=131072, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
VDO(Virtual Data Optimizer)是一种存储软件,可用作本地文件系统、iSCSI 或者 Ceph 存储下的添加存储层。
VDO 以重复数据删除、压缩和精简配置的形式为 Linux 提供内联数据缩减。
在本文中,我们将在 CentOS 8 上配置虚拟数据优化器 (VDO),然后我们将创建文件系统并持久地挂载卷。
在 CentOS 8 中持久挂载 VDO 卷
创建一个目录来挂载我们的 VDO 卷。
[root@vdo-storage-01 ~]# mkdir /mnt/vdo1
要持久地挂载我们的 VDO 卷,我们必须在 /etc/fstab 文件中添加一个条目。
[root@vdo-storage-01 ~]# vi /etc/fstab
在此文件中添加以下行。
/dev/mapper/vdo1 /mnt/vdo1 xfs defaults,x-systemd.req=vdo.service,discard 0 0
执行以下命令将 /etc/fstab 文件中的新条目通知 Systemd。
[root@vdo-storage-01 ~]# systemctl daemon-reload
挂载 /etc/fstab 文件中的条目。
[root@vdo-storage-01 ~]# mount -a
检查块设备列表。
[root@vdo-storage-01 ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 0 60G 0 disk ->->sda1 8:1 0 1G 0 part /boot ->->sda2 8:2 0 59G 0 part ->->cl-root 253:0 0 38.2G 0 lvm / ->->cl-swap 253:1 0 2.1G 0 lvm [SWAP] ->->cl-home 253:2 0 18.7G 0 lvm /home sdb 8:16 0 10G 0 disk ->->vdo1 253:3 0 1T 0 vdo /mnt/vdo1 sr0 11:0 1 6.7G 0 rom
检查 VDO 卷的状态。
[root@vdo-storage-01 ~]# vdostats Device 1K-blocks Used Available Use% Space saving% /dev/mapper/vdo1 10485760 4200156 6285604 40% 99%
我们已经在 CentOS 8 上成功配置了 Virtual Data Optimizer (VDO)。
虚拟数据优化器 (VDO) 功能
虚拟数据优化器 (VDO) 的核心功能是:
- 支持本地和远程存储
- 重复数据删除
- 压缩
- 精简配置
虚拟数据优化器 (VDO) 用法
虽然我们可以在各种情况下使用 Virtual Data Optimizer (VDO) 来节省磁盘空间,但 VDO 的两个主要应用是:
- 虚拟机存储
- BLOB 存储后端