dd 명령은 파일 설명자에서 열린 파일을 처리하는 동안 많은 디스크 공간을 소비합니다.

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 명령을 사용하여 열린 설명자를 복사할 때 많은 공간을 차지한다는 것입니다. "처리한 후 프로세스를 종료하여 설명자가 삭제되고 복사된 파일만 존재하므로 저장 공간이 동일해야 하기 때문에 공간을 차지해서는 안 됩니다." 나는 다른 프로세스에서 동일한 답변을 시도했습니다. 하지만 dd 대신 cp 명령을 사용하고 있습니다. 프로세스를 종료한 후에는 공간을 차지하지 않습니다. 이제 내 공간이 어디로 갔는지 궁금합니다. dd 명령을 사용하여 20개가 넘는 프로세스를 재개했는데 이제 디스크가 가득 차서 나머지 프로세스를 재개할 수 없습니다. dd 명령이 차지한 공간을 확보하고 싶고 dd보다 나에게 더 잘 작동하고 공간을 차지하지 않기 때문에 나머지 프로세스에 cp를 사용할 것입니다.

답변1

원본 파일이 희소 파일일 수도 있습니다. 즉, X 공간을 차지하는 것으로 표시되지만 실제로는 X보다 작습니다. 그러나 fd에서 복사하면 희소성이 사라지고 전체 X 크기를 복사하게 됩니다.

관련 정보