Qemu

qcow2 實際尺寸

  • April 14, 2022

我對 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?

該文件是稀疏的,這意味著它包含一個或多個“洞”。當從孔中讀取數據時,會返回零,但這些零不會儲存在磁碟上,而是由文件系統生成。

當儲存大部分為零的大文件時,此功能可節省實際硬碟空間。該ls實用程序將報告文件的外觀大小,但du會顯示文件的外觀大小減去文件中的孔大小(即文件在磁碟上使用的空間量)。

當您複製文件時,cp不會保留文件的備用性,並且零會填補漏洞。

在 GNU 系統上,您可以在復製文件時使用--sparse=autoor--sparse=always標誌cp來保持稀疏性,因為這些孔足夠大。在某些 BSD 系統(至少是 OpenBSD)上,cp預設情況下會嘗試保留稀疏文件中的漏洞。

您也可以使用rsync( --sparse)-S選項來複製文件。

請注意,即使這些孔被零(全部或部分)填充,生成的文件在功能上與原始文件相同,但會使用更多的實際磁碟空間。

另請參閱:最初稀疏然後擴展的文件可以再次變得稀疏嗎?

引用自:https://unix.stackexchange.com/questions/435499