网站搜索

如何在 RHEL 8 上的存储设备上创建 VDO 卷


VDOVirtual Date Optimizer 的缩写,由 RedHatRHEL 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 卷。我们后来继续演示了如何创建更多卷并从这些卷创建文件系统。