首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >lvmvdo不重复我的数据

lvmvdo不重复我的数据
EN

Unix & Linux用户
提问于 2022-01-15 13:09:56
回答 1查看 682关注 0票数 0

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

代码语言:javascript
复制
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。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2022-01-15 14:20:34

您不能使用df来检查通过VDO的去重复和压缩保存了多少数据。从文件系统的角度来看(从df的角度看也是如此),设备很大(在您的例子中)是8 GiB,不需要重复或压缩,所以两个~750个MiB文件将占用1.5 GiB的空间。所有节省都发生在块层上--这就是为什么在创建LVM时指定两个大小--更小的“真实”物理大小和更大的虚拟大小。使用虚拟大小,您会说“我假设在启用了去重复和压缩功能之后,这里的数据将增加X倍”。您正在告诉文件系统它有8 GiB的空间,块层将负责以更有效的方式存储数据,而无需告诉文件系统。(这类似于瘦配置,在这种情况下,您告诉文件系统它有比池中实际空间更多的可用空间。)

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

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

代码语言:javascript
复制
# 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之后:

代码语言:javascript
复制
# 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,因此对于很少的GiBs值的数据来说,它实际上是没有用的。

(如果您只是测试LVM并确保所有工作正常,那么两者都可以。)

票数 3
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/686472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档