lvmvdo 不会对我的数据进行重复数据删除

lvmvdo 不会对我的数据进行重复数据删除

我正在安装 lvmvdo con Debian 11.2 来存储 Proxmox 虚拟机磁盘,执行以下操作:

1) apt install -y build-essential libdevmapper-dev libz-dev uuid-dev git sudo libblkid-dev man vim dwarves dkms lvm2

2)export PATH=$PATH:/usr/sbin

3) git clone https://github.com/dm-vdo/kvdo.git cd kvdo/ make -C /usr/src/linux-eaders-`uname -r` M=`pwd`
cp vdo/kvdo.ko /lib/modules/$(uname -r) && cp uds/uds.ko /lib/modules/$(uname -r)

4)git clone https://github.com/dm-vdo/vdo.git cd vdo/ && make && make install

5)depmod -a update-initramfs -u

6)echo uds >>/etc/modules && echo kvdo >> /etc/modules

7)reboot

8) modprobe kvdo && modprobe uds

9) lsmod |grep vdo
kvdo                  540672  1
uds                   270336  1 kvdo
dm_mod                163840  12 kvdo,dm_thin_pool,dm_bufio

10) pvcreate /dev/sda
vgcreate vgdo /dev/sda
lvcreate --type vdo --name vdolv --size 7G --virtualsize 8G vgdo
mkfs.ext4 -E nodiscard /dev/vgdo/vdolv

11)mount /dev/vgdo/vdolv /mnt/vdo/
df -h
S.ficheros             Tamaño Usados  Disp Uso% Montado en
/dev/mapper/vgdo-vdolv   7,8G    24K  7,4G   1% /mnt/vdo

12)cp /tmp/rhel-8.5-x86_64-kvm.qcow2 /mnt/vdo/ &&df -h
S.ficheros             Tamaño Usados  Disp Uso% Montado en
/dev/mapper/vgdo-vdolv   7,8G   744M  6,7G  10% /mnt/vdo

13)cp /tmp/rhel-8.5-x86_64-kvm.qcow2 /mnt/vdo/rhel-8.5-x86_64-kvm2.qcow2
S.ficheros             Tamaño Usados  Disp Uso% Montado en
/dev/mapper/vgdo-vdolv   7,8G   1,5G  6,0G  20% /mnt/vdo

14)lvs -o+vdo_compression,vdo_deduplication
LV     VG   Attr       LSize Pool   Origin Data%  Meta%  Move Log Cpy%Sync Convert VDOCompression VDODeduplication
vdolv  vgdo vwi-XXv-X- 8,00g vpool0                                                       enabled          enabled

正如您在步骤 12 和 13 中看到的,我正在克隆 qcow2 映像,并且我的数据在没有任何重复数据删除过程的情况下仍在增长,.iso .mkv 和其他测试文件也会发生相同的行为。

我不知道我做错了什么,请任何人帮助我。

我的最终目标是使用全新安装的 Debian 和可用的 VDO 来安装 proxmox。

答案1

您无法使用dfVDO 检查重复数据删除和压缩节省了多少数据。从文件系统的角度来看(也是从df角度来看),设备有 8 GiB(在您的情况下)大,并且不涉及重复数据删除或压缩,因此两个 ~750 MiB 文件将使用 1.5 GiB 的空间。所有节省都发生在块层上——这就是您在创建 LVM VDO 时指定两种大小的原因——较小的“实际”物理大小和较大的虚拟大小。对于虚拟大小,您的意思是“我假设启用重复数据删除和压缩后,我将在此处容纳 X 倍的数据”。您告诉文件系统它有 8 GiB 的空间,块层将以更有效的方式存储数据,而无需告诉文件系统。 (这类似于精简配置,您告诉文件系统它的可用空间比池中实际拥有的空间多。)

如果要查看实际使用了多少空间,应该检查Data%VDO逻辑卷和池的列或使用命令vdostats

例如,使用 1.9 GiB ISO,您将获得:

# cp ~/Downloads/Fedora-Workstation-Live-x86_64-35-1.2.iso /mnt/vdo
# df -h /mnt/vdo
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vdo-VDOLV   49G  1.9G   45G   5% /mnt/vdo
# vdostats --all | grep "data blocks used"
  data blocks used                    : 485743

(块为 1K,因此大约为 474 MiB)。第二次复制ISO后:

# cp ~/Fedora-Workstation-Live-x86_64-35-1.2.iso /mnt/vdo/Fedora-Workstation-Live-x86_64-35-1.2.iso.2 
# df -h /mnt/vdo
Filesystem             Size  Used Avail Use% Mounted on
/dev/mapper/vdo-VDOLV   49G  3.8G   43G   9% /mnt/vdo
# vdostats --all | grep "data blocks used"
  data blocks used                    : 485770

您可以看到df输出现在显示双倍使用的空间,但实际数据使用量仅增长了几个块。

还有两个注意事项给你:

  • 8 GiB 虚拟大小与 7 GiB 物理大小相比较小,您通常将虚拟大小设置为实际尺寸的5至10倍
  • 7 GiB 是一个非常小的 VDO 卷。电压源元数据占用大量空间并且元数据大小不会缩小到这样的大小,对于小于 1 TiB 的卷,它将是 2 到 4 GiB,因此对于几个 GiB 的数据来说它确实没有用。

(如果您只是测试 LVM VDO 并确保一切正常,则两者都可以。)

相关内容