lvmvdoは私のデータを重複排除しません。

lvmvdoは私のデータを重複排除しません。

Proxmox 仮想マシンディスクを保存するには、Debian 11.2 に lvmvdo をインストールし、次の手順を実行します。

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)では、デバイスのサイズは8GiB(あなたの場合)であり、重複や圧縮が含まれていないため、2つの〜750MiBファイルは1.5GiBのスペースを使用します。すべての節約はブロックレベルで行われます。したがって、LVM VDOを作成するときは、より小さい「実際の」物理サイズとより大きな仮想サイズという2つのサイズを指定します。仮想サイズとは、「重複排除と圧縮を有効にすると、ここにデータのX倍を入れることができると仮定します」を意味します。ファイルシステムに8GiBのスペースがあることを知らせると、ブロックレイヤはファイルシステムに知らせず、より効率的な方法でデータを保存します。 (これは、プールに実際にあるよりも多くの空き容量があることをファイルシステムに通知するシンプロビジョニングに似ています。)

実際にどのくらいのスペースが使用されているかを確認するには、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なので約474MiBです。)ISOを2回目にコピーした後:

# 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これで、出力に使用されたスペースは2倍になりますが、実際のデータ使用量は数ブロックだけ増加したことがわかります。

2つの追加注:

  • 8GiBの仮想サイズは7GiBの物理サイズと比較して小さい。通常、仮想サイズを次に設定します。実寸の5~10倍
  • 7GiBは非常に小さなVDOボリュームです。パワーメタデータは多くのスペースを占めています。そして、メタデータのサイズはこれらのサイズに縮小されません。 1TiBより小さいボリュームの場合は2~4GiBになるので、数GiBのデータには実際に役に立たない。

(LVM VDOをテストし、すべてが機能していることを確認する場合はどちらもOKです。)

おすすめ記事