디스크가 느리게 채워지지만 눈에 띄는 파일 크기 변경은 없습니다


16

df

 Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       30830588 22454332   6787120  77% /
none                   4        0         4   0% /sys/fs/cgroup
udev             1014124        4   1014120   1% /dev
tmpfs             204996      336    204660   1% /run
none                5120        0      5120   0% /run/lock
none             1024976        0   1024976   0% /run/shm
none              102400        0    102400   0% /run/user

그 77 %는 어제 60 %에 불과했으며 며칠 안에 최대 100 %까지 채울 것입니다.

나는 한동안 파일 크기를 모니터링 해왔다.

sudo du -sch /*


9.6M    /bin
65M     /boot
224K    /build
4.0K    /dev
6.5M    /etc
111M    /home
0       /initrd.img
0       /initrd.img.old
483M    /lib
4.0K    /lib64
16K     /lost+found
8.0K    /media
4.0K    /mnt
4.0K    /opt
du: cannot access ‘/proc/21705/task/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/task/21705/fdinfo/4’: No such file or directory
du: cannot access ‘/proc/21705/fd/4’: No such file or directory
du: cannot access ‘/proc/21705/fdinfo/4’: No such file or directory
0       /proc
21M     /root
336K    /run
12M     /sbin
8.0K    /srv
4.1G    /swapfile
0       /sys
4.0K    /tmp
1.1G    /usr
7.4G    /var
0       /vmlinuz
0       /vmlinuz.old
14G     total

매일 같은 숫자를주고 있습니다. 총 14G는 디스크 크기의 절반보다 작습니다. 나머지는 어디로 가고 있습니까?

내 리눅스 지식은 더 깊이 들어 가지 않습니다.

파일이 여기에 표시되지 않을 수 있습니까? 다른 방법으로 공간을 할당 할 수 있습니까?


1
당신의 7.4 G는 /var나에게 비정상적으로 큰 파업. 로그 파일이 빨리 가득 찬 것 같습니다.
— Jos

4
삭제 된 파일이 있습니까? 무엇을 lsof -b 2>/dev//null | grep deleted(출력은 좋아 보인다 오히려 큰, 반복적으로 폐기 항목 수 있습니다)
— muru

@muru 예, 많은 파일이 그런 식으로 나타납니다. 무슨 뜻인가요? 그들은 어디에 있습니까? 어떻게 청소합니까?
— nizzle

2
재부팅은 많은 것들을 정리해야합니다. 그것들은 다양한 프로세스에 의해 열린 파일 일 뿐이며 삭제되었습니다. 일부는 정상이지만 그중 하나가 너무 커지면을 사용하여 쉽게 찾을 수 없습니다 du.
— muru

1
logrotate.conf에 문제가있는 것에 대한 두 번째 질문을 할 수도 있습니다. 아파치 (logaate)는 logration 등이 발생할 때 파일을 닫도록 구성해야합니다. 문제는 주기적으로 발생하며 매주 재부팅해야하는 것은 슬픔입니다. 이 반복 않을 경우 서비스 아파치를 다시 시작 (또는 다시로드)를 다시 일시적으로 문제가 완화 경우 [내가 보는 게 좋을 것
— 푼

답변:


28

디스크 공간이 눈에 띄게 증가하면 파일을 삭제하는 원인이 될 수 있습니다. Windows에서 무언가에 의해 열린 파일을 삭제하려고하면 오류가 발생합니다. Linux에서는 파일이 삭제 된 것으로 표시되지만 응용 프로그램이 이동할 때까지 데이터가 유지됩니다. 경우에 따라, 이것은 자신을 정리하는 깔끔한 방법 으로 사용될 수 있습니다 응용 프로그램 충돌로 인해 임시 파일을 정리하지 못할 수도 있습니다.

삭제 된 여전히 사용중인 파일을 보려면

lsof -b 2>/dev/null | grep deleted

많은 수의 삭제 된 파일이있을 수 있습니다. 그 자체로는 문제가되지 않습니다. 삭제 된 단일 파일이 커지는 것은 문제입니다.

재부팅하면이 문제가 해결되지만 재부팅하지 않으려면 관련된 응용 프로그램을 확인하십시오 (첫 번째 열 lsof 출력의 )을 확인하고 합리적인 것으로 보이는 다시 시작하거나 닫습니다.

다음과 같은 것을 본 적이 있다면 :

zsh   1724   muru   txt   REG   8,17   771448   1591515  /usr/bin/zsh (deleted)

응용 프로그램과 삭제 된 파일이 동일한 경우 응용 프로그램이 업그레이드되었음을 의미합니다. 디스크 사용량이 많은 소스는 무시해도됩니다 (하지만 버그 수정이 적용되도록 프로그램을 다시 시작해야합니다).

파일 /dev/shm은 공유 메모리 객체이며 디스크의 많은 공간을 차지하지 않습니다 (최대 inode 번호). 또한 무시해도됩니다. 이름 vteXXXXXX이 지정된 파일은 VTE 기반 터미널 에뮬레이터 (GNOME 터미널, 터미네이터 등)의 로그 파일입니다. 이들은 수 당신이 터미널 창에 열려있는 경우, 클 수 많은 (그리고 나는 평균 많은 물건 인 출력을).


1
OP 시스템에서 전체 / dev는 udev 마운트 지점이므로 기본 파일 시스템의 공간을 차지하는 공간은 없습니다. 또한 / dev / shm은 일반적으로 어쨌든 마운트 지점 인 tmpfs로 구현되므로 그 아래의 개별 파일은 디렉토리 입력 공간을 차지하지 않습니다.
— 케빈

3

muru의 훌륭한 답변을 추가하려면 :

  • df는 디스크의 크기를 보여줍니다.
  • du는 파일 내용의 전체 크기를 보여줍니다.

아마도 du로 보지 못하는 것은 많은 작은 파일의 모습 일 것입니다. df -i 볼 경우 아이 노드 (즉, 파일) 초과 너무 많이 증가의 수)

예를 들어, 1'000'000 (1 백만) 개의 작은 1 바이트 파일이 있으면 du 이 있으면 총 1,000,000 바이트로 계산합니다. 1Mb라고 말합시다 (순교자, 울부 짖지 마십시오).

그러나 디스크에서 각 파일은 다음 두 가지로 구성됩니다.

  • 1 inode (파일의 데이터를 가리킴)이며 inode 자체는 16kb (!) 일 수 있습니다.
  • 그리고 각 파일의 데이터 (= 파일의 내용)는 디스크 블록에 저장되며 해당 블록은 여러 파일의 데이터 (일반적으로 ...)를 포함 할 수 없으므로 1 바이트의 데이터는 적어도 1 블록을 차지합니다

따라서 1 바이트 파일 1 백만 개 파일 1'000'000'000 * size_of_a_block은 데이터의 전체 공간 1'000'000'000 * size_of_an_inode과 inode 크기 를 차지 합니다. 1 백만 "1 바이트"파일의 디스크 사용량은 몇 Gb에 달할 수 있습니다.

1024 바이트 블록과 또 다른 256 바이트의 inode 크기가있는 경우, 1'000'000 파일은 대략 1Mb로보고 du되지만 디스크에서 대략 1.25Gb로 계산됩니다 (로 df표시됨)! (또는 각 inode가 하나의 전용 디스크 블록에 있어야하는 경우 2Gb조차도 ... 그 경우인지 모르겠습니다)


1
파일의 겉보기 크기를 표시하도록 지시 하는 옵션 ( -b또는 --apparent-size)을 명시 적으로 사용하지 않으면 실제로 파일의 디스크 크기 (사용 된 총 블록 수에 블록 크기를 곱한 크기)가 항상 표시됩니다. 실제로 이것은 파일의 겉보기 크기보다 크거나 (일반적인 경우) 더 작거나 (드문 드문 파일의 경우) 작을 수 있습니다. dudu
— Jonathan Callen

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.