如何在 RHEL 8 上的存储设备上创建 VDO 卷
VDO 是 Virtual Date Optimizer 的缩写,由 RedHat 在 RHEL 7.5 及更高版本中引入,是一种块虚拟化技术,可提供块设备级别的内联重复数据删除和数据压缩。
重复数据删除的想法非常简单:删除重复数据的副本,只保留一份副本。当在块设备上添加相同的文件时,它会被标记为重复文件,并会引用原始文件。这样做时,VDO 有助于节省块卷的空间。
在本教程中,您将了解如何在 RHEL 8 系统的存储设备上创建 VDO 卷。
步骤 1:在 RHEL 8 中安装 VDO
首先,登录到您的服务器并使用 dnf 命令更新您的 RHEL。
sudo dnf update -y
软件包和内核更新完成后,继续使用命令安装 VDO 内核模块和依赖项。
sudo dnf install kmod-kvdo vdo
- vdo – 这是 Virtual Data Optimizer 的一组管理工具。
- kmod-kvdo – 这是一组虚拟数据优化器的内核模块。
成功安装后,启动、启用并验证vdo守护进程。
sudo systemctl start vdo
sudo systemctl enable vdo
sudo systemctl status vdo
步骤 2:在 RHEL 8 中创建 VDO 卷
在创建 vdo 卷之前,请确保您的系统上有额外的硬盘驱动器。在本教程中,我们附加了一个额外的卷 xvdb
。这可以通过运行下面的 lsblk 命令来演示。
lsblk
从输出中,您可以清楚地看到第二个磁盘的容量为100GB。
现在,我们将在 /dev/xvdb
磁盘上创建一个空的 VDO 卷。
sudo vdo create --name=vdo1 --device=/dev/xvdb --vdoLogicalSize=300G
您将遇到所示的错误。
这是一个常见的错误,解决方法是简单地重新启动服务器。
sudo reboot
在第二次试验中,将执行该命令,在设备 /dev/xvdb
上创建一个空的 VDO 卷。
sudo vdo create --name=vdo1 --device=/dev/xvdb --vdoLogicalSize=300G
让我们分解一下命令并看看使用的选项:
- 创建 – 这将启动 VDO 卷的创建。
- –name=vdo1 – 这为卷提供了一个名为 vdo1 的标签。请随意分配您选择的任何名称。
- –device=/dev/xvdb – 设备选项指定将在其上创建卷的磁盘。
- –vdoLogicalSize=300G – 这表示操作系统要使用的有效卷容量,在本例中为300G。
步骤 3:探测新的 VDO 卷
新的 VDO 卷已根据我们在上一步中看到的输出在 /dev/mapper/vdo1
创建。我们可以使用所示的 ls 命令来调查文件权限和所有权。
ls -l /dev/mapper/vdo1
要获取更深入的信息,请使用 vdostats 命令检索有关卷的大小和使用情况的统计信息。
vdostats --hu
--hu
标志以人类可读的格式显示信息,即更容易阅读和轻松破译的格式。我们可以查看诸如设备名称、附加磁盘大小、已用空间和可用空间等属性,如 %
使用情况。
仔细观察,%
节省被指示为不适用(N/A)。
另请注意,我们已经有一些卷使用量 4.1G,这意味着 4%,但我们尚未在该卷上写入任何内容。这是为什么?这是因为通用重复数据删除已经被写入磁盘,并且它使重复数据删除成为可能。
vdostats 命令可以与 --verbose
标志一起使用来检索更详细的信息,如下所示:
sudo vdostats --verbose /dev/mapper/vdo1 | grep -B6 ‘saving percent’
您可以看到与前面的示例基本相同的数据,但格式不同。
步骤 4:对 VDO 卷进行分区
从卷中获得足够的信息后,我们需要对其进行分区,然后创建一个文件系统,以便它可以用作普通磁盘。
让我们创建一个物理卷和卷组,如图所示,运行以下命令。
sudo pvcreate /dev/mapper/vdo1
sudo vgcreate vdo1vg /dev/mapper/vdo1
要显示卷组的统计信息,请运行:
sudo vgdisplay vdo1vg
现在,我们将创建 2 个大小相同的逻辑卷,每个逻辑卷的容量为 50G。
sudo lvcreate -n vdo1v01 -L 50G vdo1vg
sudo lvcreate -n vdo1v02 -L 50G vdo1vg
您稍后可以通过运行命令查看新创建的卷的统计信息。
sudo lvs
步骤 4:格式化并挂载文件系统
通常,当创建文件系统时,会对设备执行修剪操作。对于VDO来说,这是不希望出现的情况。使用mkfs命令格式化时,使用-K
选项指示命令在创建文件系统期间不要丢弃块。
sudo mkfs.xfs -K /dev/vdo1vg/vdo1v01
sudo mkfs.xfs -K /dev/vdo1vg/vdo1v02
如果您使用EXT$文件系统,请使用“-E nodiscard”选项。
创建用于安装卷的安装点:
sudo mkdir /data/v01
sudo mkdir /data/v02
现在将文件系统安装到其安装点,如图所示。
sudo mount -o discard /dev/vdo1vg/vdo1v01 /data/v01
sudo mount -o discard /dev/vdo1vg/vdo1v02 /data/v02
现在,当您检查 VDO 音量时,您会注意到 %
节省已更改为 99%,这非常令人印象深刻。这意味着重复数据删除正在按预期工作。
sudo vdostats --hu
您可以使用 df -Th 命令进一步调查。在底部,您将看到文件系统分别安装在 /data/v01
和 /data/v02
上。
df -hT
在本教程中,我们演示了如何从 RHEL 8 上的附加存储设备创建 VDO 卷。我们后来继续演示了如何创建更多卷并从这些卷创建文件系统。