파일 삭제 후 ext4 디스크 공간이 회수되지 않음

파일 삭제 후 ext4 디스크 공간이 회수되지 않음

최근 2TB 외부 ext4 드라이브에서 "장치 가득 참" 경고를 받았습니다. 약 90-100GB의 오래된 시스템 백업 파일을 삭제했고 모든 휴지통을 비우고 싶지 않았기 때문에 드라이브에서 휴지통 폴더를 삭제했습니다. 그러나 디스크 공간이 해제되지 않으며 90-100Gb를 삭제한 후에도 여전히 약 5Gb의 여유 공간만 표시됩니다.

어떤 이유로 파일이 계속 열려 있지 않은지 확인하기 위해 먼저 재부팅을 시도했습니다. 실행을 시도했지만 이들 중 어느 것도 디스크 공간을 표시하지 않습니다 sudo e2fsck -fp /dev/sde1. sudo e2fsck -f -D -C0 -E discard /dev/sde1inode 사용량을 확인해 보니 전체의 0.3% 정도가 사용되고 있습니다. 실행하면 sudo xdiskusageinode가 93GB를 사용했다고 나옵니다. man은 이것이 파일 시스템 사용에 따른 오버헤드라고 말합니다. 93GB는 오버헤드가 많은 것 같고 같은 수의 파일을 삭제하면 디스크 공간이 확보되지 않습니다. trah 폴더를 삭제할 때 뭔가 엉망이 된 것 같습니다. 파일을 삭제하면 얻을 수 있는 공간을 다시 확보할 수 있는 방법이 있나요?

답변1

여기에는 두 가지 가능성이 있는 것 같습니다.

  1. df루트 예약 공간의 (분명히 혼란스러운) 동작에 대해 혼란스럽습니다.
  2. 파일에 대한 하드 링크를 제거(링크 해제)했으며 더 많은 링크가 있었습니다.

개인적으로 나는 당신이 # 1을보고 있다고 생각합니다. 세부 사항은 몇 가지 결론과 함께 이어집니다.

혼란스러운 df행동

루트가 아닌 사용자로 파일 시스템을 완전히 채우면 다음과 같이 표시됩니다.

Filesystem      Size  Used Avail Use% Mounted on
/dev/md10       248M  236M  1.0K 100% /boot

그러나 루트를 위해 예약된 공간이 있는데 일반적으로 5%입니다. 루트가 이를 채운 경우 다음과 같을 것입니다 df(이 작은 파일 시스템의 경우 13MB).

Filesystem      Size  Used Avail Use% Mounted on
/dev/md10       248M  248M     0 100% /boot

100% 사용에서 100% 사용까지 진행된다는 점에 유의하세요. 실제로는 5%가 사용됩니다. 필드는 Used예상대로 올라가지만 avail필드는 1K에서 0으로 이동합니다.

처음 13MB의 데이터를 삭제하면 어떻게 되나요? 좋습니다. 첫 번째 출력으로 돌아왔습니다. 5%를 확보했지만 여전히 100% 사용된 상태이므로 거의 사용할 수 없습니다.

결론: 실제로 얼마나 많은 공간이 해제되었는지 확인하려면 이 Used열을 살펴보십시오. - Avail, not Use%.

마지막 하드 링크가 아님

rm실제로는 그렇지 않다삭제문서. 링크를 해제합니다. 즉, 하드 링크를 제거합니다. 기본적으로 모든 하드 링크는 파일 이름을 지정합니다. 파일에 링크가 없고 열려 있지 않은 경우에만 파일이 실제로 삭제됩니다.

실제로 파일은 이름 수에 관계없이 파일 시스템에서 inode 번호로 고유하게 식별됩니다. 이러한 파일의 inode 번호를 알고 있다면 이를 사용하여 find -inum모든 하드 링크를 찾을 수 있지만 그렇지 않을 수도 있습니다. 정리해야 할 관련 파일이 있는 경우 .을 사용하여 해당 파일에 대한 모든 하드 링크(방금 계산한 이름 포함)를 찾을 stat수 있습니다 . find /path/to/mount -inum NUMBER또한 파일이 실제로 삭제되면 inode 번호를 재사용할 수 있습니다.

기억하세요: inode 번호는파일 시스템당. 그래서 두다른파일은 서로 다른 두 파일 시스템의 inode 42일 수 있습니다. 동일한 파일 시스템에서만 inode 42가 항상 동일한 파일임을 보장할 수 있습니다. 또한 inode 번호는 네트워크 파일 시스템이나 Unix가 아닌 파일 시스템에 항상 적용되는 것은 아닙니다. 하지만 ext4를 사용하고 있다면 이는 확실히 가능합니다.

그 외에는 일반적인 방법으로 삭제하려면 다른 이름을 찾으면 됩니다(예: xdiskusage이미 하고 있는 것처럼 큰 항목을 찾는 방법).

일반 지침

휴지통 폴더는 단지 디렉토리일 뿐입니다. 삭제할 수 없는 정크로 가득 차 있으면 에 표시됩니다 xdiskusage.

오래된 백업을 더 효율적으로 삭제하는 백업 시스템을 고려해야 합니다. 수동으로 삭제하면 오류가 발생하기 쉽습니다. 더 나쁜 것은 잊어버리고 백업이 실패하고 자주 복원될 수도 있다는 것입니다.최근의데이터(예: 우발적인 삭제, 파일 손상, 디스크 오류)가 아닌 오래된 데이터("아, 그래, 작년에 삭제한 내용이 필요해...")가 아니므로 "디스크 전체 백업 실패"는 실제로 삭제하고 있음을 의미합니다. 이것가장 가치있는보관할 데이터(새 백업)가치가 가장 낮은 데이터(2년 전 백업).

관련 정보