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 및 기타 테스트 파일에서도 동일한 동작이 발생합니다.
내가 뭘 잘못하고 있는지 모르겠습니다. 누구든지 도와주세요.
나의 궁극적인 목표는 데비안을 새로 설치하고 작동하는 VDO를 사용하여 proxmox를 설치하는 것입니다.
답변1
df
VDO를 사용하여 중복 제거 및 압축을 통해 얼마나 많은 데이터가 저장되었는지 확인할 수 없습니다 . 파일 시스템 관점(또한 관점 df
)에서 장치의 크기는 8GiB(귀하의 경우)이고 중복 제거나 압축이 포함되지 않으므로 2개의 ~750MiB 파일이 1.5GiB의 공간을 사용합니다. 모든 절감은 블록 수준에서 발생합니다. 따라서 LVM VDO를 생성할 때 더 작은 "실제" 물리적 크기와 더 큰 가상 크기라는 두 가지 크기를 지정합니다. 가상 크기란 "중복 제거 및 압축을 활성화하면 여기에 데이터의 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를 두 번째로 복사한 후:
# 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
이제 출력에 사용된 공간이 두 배로 표시되지만 실제 데이터 사용량은 몇 블록만 증가한 것을 볼 수 있습니다 .
두 가지 추가 참고사항:
- 8GiB 가상 크기는 7GiB 물리적 크기에 비해 작습니다. 일반적으로 가상 크기를 다음으로 설정합니다.실제 크기의 5~10배.
- 7GiB는 매우 작은 VDO 볼륨입니다. 전원메타데이터는 많은 공간을 차지합니다.그리고 메타데이터 크기는 이러한 크기로 줄어들지 않습니다. 1TiB보다 작은 볼륨의 경우 2~4GiB가 되므로 몇 GiB의 데이터에는 실제로 쓸모가 없습니다.
(LVM VDO를 테스트하고 모든 것이 작동하는지 확인하는 경우 둘 다 괜찮습니다.)