재부팅 후에도 크기가 작고 여유 공간이 없습니다.

재부팅 후에도 크기가 작고 여유 공간이 없습니다.

어젯밤에 예상했던 것보다 더 많은 출력 데이터를 생성하는 일부 프로그램을 실행했는데 결국 루트 ext4 파티션이 채워졌습니다. 문제가 되는 프로세스를 종료하고 더 이상 필요하지 않은 외부 데이터를 삭제하기 시작했는데 다음과 같은 결과가 나타났습니다.

$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            3.4G     0  3.4G   0% /dev
tmpfs           690M   11M  680M   2% /run
/dev/sda4       810G  806G     0 100% /
tmpfs           3.4G     0  3.4G   0% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           3.4G     0  3.4G   0% /sys/fs/cgroup
/dev/sda1       476M   26M  450M   6% /boot/efi
tmpfs           690M     0  690M   0% /run/user/1000

보시다시피 "Used"가 "Size"보다 4GB 적음에도 불구하고 여유 공간이 없습니다. 이것이 일부 프로세스에 의해 열린 삭제된 파일이라고 가정하고 lsof를 사용하여 가장 큰 파일이 64MB /memfd:pulseaudio임을 확인했습니다.

혼란스러워서 시스템을 재부팅했는데 문제가 해결될 것이라고 거의 확신했습니다. 그러나 df의 출력은 변경되지 않습니다.

어떻게 이럴 수있어? 어떻게 해결할 수 있나요?

$ uname -a
Linux ... 4.16.0-1-amd64 #1 SMP Debian 4.16.5-1 (2018-04-29) x86_64 GNU/Linux
$ cat /etc/issue
Debian GNU/Linux buster/sid \n \l

답변1

ext4루트로 실행되는 프로세스에 의해서만 채워질 수 있는 "예약된 블록"이라는 개념이 있습니다. 출력에서는 df이를 고려할 수 있습니다.

예를 들어, 한 시스템에서는 다음과 같이 df표시됩니다.

Filesystem          1K-blocks      Used Available Use% Mounted on
/dev/sda1            30626752  14557916  14490036  51% /

여기서 30626752 - 14557916 - 14490036은 1578800과 동일하며 이는 예약된 블록의 기본 개수인 전체의 약 5%에 해당합니다. 예약된 블록 비율을 0으로 변경2fs 조정( tune2fs -m 0 /dev/sda1) 표시된 숫자가 변경되었습니다 df.

Filesystem          1K-blocks      Used Available Use% Mounted on
/dev/sda1            30626752  14557924  16052444  48% /

(숫자는 여전히 정확히 일치하지 않습니다. 16384개의 1k 블록이 계산되지 않았지만 이는 어떤 이유로든 "사용된" 것으로 계산되지 않는 일부 내부 파일 시스템 구조 때문이라고 생각합니다.)

관련 정보