图像上的LVM非常慢

创build一个lvm

 dd if = / dev / zero of = 1.img bs = 1M count = 16384
 dd if = / dev / zero of = 2.img bs = 1M count = 16384
 losetup / dev / loop1 1.img
 losetup / dev / loop2 2.img
 pvcreate / dev / loop1
 pvcreate / dev / loop2
 vgcreate LVM1 / dev / loop1 / dev / loop2
 vgchange -an LVM1

我分配10G卷并格式化它

 lvcreate -L10240 -n lv_34179984_0 LVM1
 mkfs.xfs / dev / LVM1 / lv_34179984_0
 mount -t xfs / dev / LVM1 / lv_34179984_0 / home / test / image

当我尝试将8G文件复制到/ home / test / image时,它在复制215M之后会被阻止,iostat会给我

 avg-cpu:%user%nice%system%iowait%steal%idle
            0.00 0.00 0.00 29.82 0.00 70.18

设备:rrqm / s wrqm / sr / sw / s rsec / s wsec / s avgrq-sz avgqu -sz await svctm%util
 sda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
 sda1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
 sda2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
 sda3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
 dm-0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 1.00 0.00 0.00 100.20

如何解决这个问题?

您可以通过不在磁盘上的文件系统(可能位于卷组中)之前的卷组上创build文件系统来解决此问题。 为了使用Inception参考,你已经深入我的朋友。

每当您尝试在/home/test/image上执行某些操作时,系统都必须执行以下步骤:

  • /home/test/image上的文件系统操作
    • 卷组操作
    • 虚拟磁盘(循环设备)在loop1运行
      • 文件系统操作1.img
        • 在任何地方1.img生活的磁盘操作
    • 虚拟磁盘(loop device)在loop2运行
      • 文件系统操作2.img
        • 磁盘操作在任何地方2.img生活

当启动磁盘I / O(物理磁盘或循环设备)时,这仍然会在内核中发生一系列中间步骤。 简单地说,你要求你的系统做这么多的工作,性能会很差。

通过将1.img2.img放在不同的物理磁盘上,可以稍微提高性能,但这不可能带来实质性的好处。 体面性能的唯一真正select是在物理磁盘上创build卷组。