손실된 드라이브 공간을 진단하고 복구하는 방법은 무엇입니까?

손실된 드라이브 공간을 진단하고 복구하는 방법은 무엇입니까?

내 2T 드라이브에 작은 ext3 파티션이 있는데 /사용 가능한 공간에 차이가 있는 것 같습니다. 이 문제의 원인과 해결 방법을 어떻게 확인할 수 있습니까?

제가 생각할 수 있는 모든 것을 시도한 후에 부팅 시 fsck를 강제로 실행했지만 아무런 효과가 없었습니다.

동일한 구성을 가진 다른 시스템이 있는데 이런 일이 발생하지 않습니다.

# df -h /
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             9.7G  8.9G  318M  97% /

# du -shx --max-depth 1 /
5.2G    /

# lsof | awk 'BEGIN {t=0} /(deleted)/ {t+=$7} END {print t}'
0

# tune4fs -l /dev/sda1 | grep -E 'state|Free|Reserve|size|Inode'
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery sparse_super large_file
Filesystem state:         clean
Inode count:              2621440
Reserved block count:     131029
Free blocks:              212317
Free inodes:              2487281
Block size:               4096
Fragment size:            4096
Reserved GDT blocks:      639
Inodes per group:         32768
Inode blocks per group:   1024
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
Inode size:               128

편집하다:

fsck파티션이 2% 불연속임을 나타냅니다.

위와 비교 du(희소성):

# du -hxs --apparent-size /
4.9G    /

답변1

마음에 떠오르는 한 가지 설명은 마운트 지점 뒤에 du.

Linux에서는 다른 마운트 지점에서 모든 것을 볼 수 있도록 루트 파일 시스템을 바인드 마운트할 수 있습니다. 그런 다음 원본 보기에서 마운트 지점이 무엇을 숨기고 있는지 자세히 살펴보세요.

mkdir /root/root-rebound
mount -o bind / /root/root-rebound
du -sc $(df -P | awk 'NR>2 {print "/root/root-rebound" $6}')

답변2

단편화(fragmentation)를 본 적이 있나요? 내가 아는 du와 df가 일관성이 없을 수 있는 유일한 방법은(제외한 삭제된 부분 외에) 오버헤드와 일반적으로 여러 조각난 파일에서 발생하는 것입니다(du는 소량을 보고하지만 범위 수로 인해 이러한 경우). df에 표시된 것처럼 파일이 디스크에서 정말 큽니다.

이 도구는 ext3 파일이 얼마나 조각화되어 있는지 보여줄 수 있습니다.

http://vleu.net/shake/

관련 정보