Lvm
lvmvdo 不會對我的數據進行重複數據刪除
我正在安裝 lvmvdo con Debian 11.2 來儲存 Proxmox vm 磁碟,執行以下操作:
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。
您不能使用
df
VDO 檢查重複數據刪除和壓縮節省了多少數據。從文件系統的角度來看(也從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 卷。VDO為元數據使用了大量空間,並且元數據大小不會縮小到這樣的大小,對於小於 1 TiB 的捲,它將是 2 到 4 GiB,因此對於幾 GiB 的數據來說它確實沒有用處。
(如果您只是測試 LVM VDO 並確保一切正常,兩者都可以。)