df는 디스크가 꽉 찼지만 그렇지 않다고 말합니다.


58

Ubuntu 10.04를 실행하는 가상화 된 서버에서 df는 다음을보고합니다.

# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             7.4G  7.0G     0 100% /
none                  498M  160K  498M   1% /dev
none                  500M     0  500M   0% /dev/shm
none                  500M   92K  500M   1% /var/run
none                  500M     0  500M   0% /var/lock
none                  500M     0  500M   0% /lib/init/rw
/dev/sda3             917G  305G  566G  36% /home

1.) df에 따르면 / dev / sda1은 /에 마운트 된 / dev / sda1의 용량이 7.4 기가 바이트이며이 중 7.0 기가 바이트 만 사용하고 있지만 100 %가 가득 찼습니다. 그리고 2.) /에 파일을 만들 수 있으므로 공간이 명확하게 남아 있습니다.

/ www 디렉토리는 다른 파티션 (/ home에 마운트 된 / dev / sda3)에있는 / home / www에 대한 심볼릭 링크 일 수 있습니다.

누구나 여기서 무슨 일이 일어나고 있는지 제안 할 수 있습니까? 서버가 문제없이 작동하는 것처럼 보이지만 파티션 테이블, 파일 시스템 또는 나중에 파열 (또는 폭발)을 초래할 수있는 다른 문제가 없는지 확인하고 싶습니다.


유용한 답변에 감사드립니다. 일반 사용자로 파일을 만들 수 없으므로 재앙을 막는 5 % 버퍼 인 것으로 보입니다. 이제 디스크가 가득 찬 이유를 알아 내야합니다 (로그 파일이 많은 공간을 차지하지 않고 소프트웨어가 많지 않고 간단한 LAMP 서버가 없기 때문에 악의적 인 일이 발생할 수 있습니다.) ...
Chris

3
첫 번째 장소는 / tmp입니다. 다른 가능성은 실행중인 프로그램이 보유하고있는 삭제 된 파일이 있다는 것입니다. 나는 당신이 'lsof | grep deleted '를 루트로 삭제하십시오.
Scott

답변:


103

프로세스가 삭제 된 이후에 큰 파일을 열었을 수 있습니다. 공간을 확보하려면 해당 프로세스를 종료해야합니다. lsof를 사용하여 프로세스를 식별 할 수 있습니다. Linux에서 삭제 된 아직 열린 파일은 lsof로 알려져 있으며 lsof의 출력에서 ​​(삭제됨)으로 표시됩니다.

당신은 이것을 확인할 수 있습니다 sudo lsof +L1


8
그것은 나를 위해 미스터리를 해결했습니다. 서비스를 다시 시작하지 않고 uwsgi에서 큰 로그 파일을 제거했습니다. 쿼리 할 때 df -ah디스크가 가득 차 있지만 du -sh /여유 공간이 있어야한다고 알려줍니다. retart uwsgi 후 나는 많은 여유 공간을 얻었다!
Fabio Montefuscolo

나는 40G 상당의 로그가 림보에 갇혀 있었고 lsof + L1은 나에게 x-ray 비전을 주었다.
PJ Brunet

46

파일 시스템의 5 % (기본적으로)는 심각한 문제를 방지하기 위해 파일 시스템이 가득 찬 경우에 예약되어 있습니다. 파일 시스템이 가득 찼습니다. 5 % 버퍼로 인해 치명적인 것은 발생하지 않습니다. 루트는 해당 안전 버퍼를 사용할 수 있으며 설정에서 루트가 아닌 사용자는 해당 파일 시스템에 쓸 이유가 없습니다.

루트가 아닌 사용자로 실행되지만 해당 파일 시스템에서 파일을 관리해야하는 데몬이 있으면 문제가 발생합니다. 이러한 데몬 중 하나는 named입니다. 다른 하나는 ntpd입니다.


1
디스크가 꽉 차 있는지에 대한 질문으로 , 7G는 실제로 그렇게 많은 공간이 아닙니다. 또한 모든 것이 하나의 파티션 / 파일 시스템 ( /)에 덤프 된 것으로 보입니다 . 이것은 일반적으로 나쁜 일로 여겨지지만 (무엇이 건초 /가 가득 차고 세상이 끝나기 때문에) Linux 배포판은 여전히 ​​더 단순하기 때문에 계속 작동합니다. 거대한 로그 파일을 찾기 위해 /var(esp. /var/log) 부터 시작하겠습니다 . du -hs /(루트로)는 가장 큰 디렉토리를 찾고 정리가 필요한 부분을 알려줍니다.
voretaq7


17

대부분의 Linux 파일 시스템은 루트 사용자 만 사용할 수 있도록 5 %의 공간을 확보합니다.

예를 들어 이것을 볼 수 있습니다

dumpe2fs /dev/sda1 | grep -i reserved

다음을 사용하여 예약 금액을 변경할 수 있습니다.

tune2fs -m 0 /dev/sda1

모든 프로세스가 '루트'로 실행되는 경우 대부분의 경우 서버는 계속 정상적으로 작동하는 것으로 보입니다.


8

나는이 문제가 있었고 다양한 대형 파일을 삭제해도 어쨌든 몇 가지 단서에 따라 상황이 개선되지 않았다 (5 % 버퍼에 대해 몰랐다)는 사실에 당황했다.

루트에서 다음을 반복적으로 수행하여 가장 큰 디렉토리를 찾았습니다.

du -sh */ 

절대적으로 거대한 로그가있는 웹 서버 로그 파일의 디렉토리가 나올 때까지

내가 잘린

:>lighttpd.error.log

갑자기 df -h는 사용 된 48 %로 떨어졌습니다!


14
"...로 끝나야합니다. 그러면 로그 회전을 설정합니다."
hayalci

hayalci : logrotation이 잘못된 디렉토리를 가리키고 있음을 발견했습니다.
zzapper

8

이미 제안 된 원인과 더불어 다음과 같은 경우도 있습니다.

  • 다른 디스크가 데이터로 가득 찬 기존 폴더 위에 "마운트"되어 있습니다.
  • du는 마운트 된 디스크의 소비 크기를 계산하고 df는 실제로 소비 된 것으로 표시합니다
  • 해결 방법 : (가능한 경우) 모든 비 루트 디스크를 마운트 해제하고 크기를 du -md 1다시 확인 하십시오. 숨겨진 폴더를 다른 장소로 옮기거나 다른 장소에 마운트하여 상황을 해결하십시오 .

df 이외의 마운트 지점을 어떻게 찾습니까?
호건

@Hogan : "mount"또는 "cat / etc / fstab"를 호출하면 도움이 될까요?
Robert Lujo

5

df -h값을 반올림합니다. 백분율도 반올림됩니다. 를 생략하면 -h세밀한 차이가 나타납니다.

오. 그리고 ext3과 파생물은 정확히이 문제가있는 별자리에 대해 파일 시스템에 대한 백분율 (기본값 5 %)을 예약합니다. 루트 파일 시스템이 실제로 가득 차면 (0 바이트 남음) 시스템을 부팅 할 수 없습니다. 따라서 예약 된 부분이이를 방지합니다.


그는 무료 inode가 부족했을 수도 있습니다. inode 사용을 얻으려면 'df -i'를 실행하십시오.
Andrew Case

그는 디스크 꽉 찼다 정보를 제공하지 않았습니다 . 그는 디스크가 가득 찼다 고 생각 합니다. 오류없이 100 % 사용 된 공간은 "가상적으로 가득"입니다.
mailq

1

여러 라이브러리를 크게 업데이트했으며 불필요한 라이브러리와 임시 파일이 많았으므로 다음을 사용하여 "/"폴더의 공간을 비 웁니다.

apt-get install -f
sudo apt-get clean

휴지통 비우기


이것은 디스크 사용을 줄이는 데 대한 일반적인 일반적인 조언이지만 df에 디스크가 가득 찼을 때 디스크가 가득 찬 이유에 대한 질문은 다루지 않습니다.
앤드류 Schulman

0

/ lost + found를 확인하십시오. 시스템 (centos 7)이 있고 / lost + found의 일부 파일이 모든 공간을 차지했습니다.


0

파티션이 btrfs 인 경우 하위 볼륨에 공간이 필요할 수 있습니다. btrfs 파일 시스템에는 많은 하위 볼륨이있을 수 있으며 그 중 하나만 마운트됩니다. btrfs subvolume list <dir>모든 하위 볼륨을 나열 btrfs subvolume delete <dir>/<subvolume>하고 삭제 하는 데 사용할 수 있습니다 . 기본적으로 마운트 된 것을 삭제하지 마십시오.

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