qcow2实际尺寸

qcow2实际尺寸

我对 qcow2 文件的实际大小有点困惑。

ls -alh VMs/ubuntu-mini.qcow2
-rw------- 1 root root 21G mar 31 23:15 VMs/ubuntu-mini.qcow2
du -h VMs/ubuntu-mini.qcow2
2,7G    VMs/ubuntu-mini.qcow2

我想将该文件复制到不同的分区(ext4)。看起来这个命令实际上被复制了21G不仅2,7G我期望。现在在新位置,这两个命令(du 和 ls)向我显示了相同的大小 - 21G。

du -h /media/HDD0/VMs/ubuntu-mini.qcow2
21G     /media/HDD0/VMs/ubuntu-mini.qcow2
ls -alh /media/HDD0/VMs/ubuntu-mini.qcow2
-rw------- 1 root root 21G mar 31 23:15 /media/HDD0/VMs/ubuntu-mini.qcow2

复制 qcow2 文件的正确方法是什么? “cp”命令中是否有开关使其只能复制 2,7G?

答案1

该文件是,这意味着它包含一个或多个“洞”。当从洞内读取数据时,会返回零,但这些零不会存储在磁盘上,而是由文件系统生成。

当存储大部分为零的大文件时,此功能可以节省实际的硬盘空间。该ls实用程序将报告表观文件大小,但du会显示文件的表观大小减去文件中的孔的大小(即文件在磁盘上使用的空间大小)。

当您复制文件时,cp不会保留文件的空闲部分,并且会用零填充漏洞。

在 GNU 系统上,如果孔足够大,则在复制文件时可以使用--sparse=auto--sparse=always标志来保持稀疏性。cp在某些 BSD 系统(至少是 OpenBSD)上,cp默认情况下会尝试保留稀疏文件中的漏洞。

您还可以使用( )rsync选项来复制文件。--sparse-S

请注意,即使这些孔被零(全部或部分)填充,生成的文件在功能上也将与原始文件相同,但会使用更多的实际磁盘空间。

也可以看看:一个原本稀疏的文件,后来扩展了,能否再次变得稀疏呢?

相关内容