Virtual-Machine
dd 命令在從文件描述符處理打開文件時佔用了大量磁碟空間
我用不同的圖像打開了 30 多個 qemu-kvm 程序。他們的圖像被意外刪除。我搜尋了一下,發現文件仍然在程序中打開。它仍然可以恢復。所以我遵循了這個https://unix.stackexchange.com/questions/297475/accidentally-removed-a-libvirt-image-file-can-i-recreate-it。我停止了這個過程。使用 dd 命令複製文件 /proc/pid/fd/19。
問題從這裡開始。
我複制了文件並恢復了它,然後重新啟動了該過程,現在我恢復了文件。整個問題是,當我使用 dd 命令複製打開的描述符時,它會佔用大量空間。“它不應該佔用任何空間,因為在處理它之後,我終止了程序,所以描述符被刪除,只有複製的文件存在,所以儲存應該是相同的”。我在不同的過程中嘗試了相同的公認答案。但我使用 cp 命令而不是 dd。殺死程序後它沒有佔用任何空間。現在我想知道我的空間去了哪裡。我使用 dd 命令恢復了 20 多個程序,現在我的磁碟已滿,我無法為其餘程序執行此操作。我想釋放 dd 命令佔用的空間,我將 cp 與其餘程序一起使用,因為它比 dd 更適合我,並且不佔用任何空間。
可能原來是一個稀疏文件,也就是說,它被標記為佔用X空間,而實際上它小於X。但是當你從fd複製它時,稀疏性消失了,你複製了完整的X大小.