/ tmp에 쓸 때 "디스크 할당량을 초과했습니다."그러나 충분한 공간 (Linux)


9

VPS가 있습니다. 악명 높은 병렬 플레 스크로 관리됩니다.

오늘 나는 "디스크 할당량을 초과했습니다."

user@machine:~$ echo aaa > /tmp/aaa
-bash: /tmp/aaa: Disk quota exceeded

그러나 머신에는 많은 공간이 있고 파티션은 1 개뿐입니다.

user@machine:~$ df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/vzfs             100G   24G   77G  24% /

/ tmp / *에서 모든 파일을 삭제했지만 여전히.

나는 "vzfs"에 대해 전혀 모른다. 아마도 범인일지도 모른다.

무엇이 잘못되었을 수 있습니까? 어떻게 고칠 수 있습니까?

해결책!

(Parallels Plesk를 사용하지 않으면 @Adalee의 답변을 참조하십시오)

필자의 경우와 같이 Parallel 시스템과 관련된 @deltik 솔루션을 참조하십시오.

df -i는 즉시 워드 프레스 웹 사이트에 미쳤던 18,446,744,069,620,218,961의 엄청나게 많은 inode를 주었다.

Qmail의 대기열에 inode가 가득 찼습니다 (내 컴퓨터를 스팸으로 사용하고 응답하지 않는 해커의 attemtp가 가득 함).

큐메일을 수정하는 것은 여기서 관련이 없지만 내 해결 방법은 관련이 있습니다.

  1. 큐메일 서비스 중지
  2. 나는 견적 시스템에 qmhandle 을 다운로드 할 수 없었기 때문에
  3. 스크립트를 추출하여 다른 웹 사이트에 업로드
  4. 이 명령으로 대기열을 삭제하십시오.
  5. perl <(wget -O- http : //link.to.my/script.pl ) -D

이런 식으로 스크립트가 웹에서 직접 실행되고 (안전하지는 않지만 스크립트를 직접 입력했습니다) 명령 행 옵션이 있습니다.

이 특별한 설정을 알고 즉시 인식하고 추가 진단을위한 수단을 제공 한 @deltik에게 감사합니다 !!!


Linux에는 사용자 또는 그룹 기반 디스크 할당량 할당 설정이 있습니다. 뿐만 아니라 그들을 확인 UNIX / Linux의 설치 사용자 및 그룹 디스크 할당량 5 단계
DavidPostill

1
vzfs(OpenVZ "가상"파일 시스템)가 원인 일 수 있습니다. 저렴한 서버를 판매하지만 그 서버에 대해 어리석은 한계를 설정하는 많은 OpenVZ 제공 업체를 보았습니다.
user1686

솔루션이있는 경우 특정하더라도 답변으로 게시하십시오. 당신은 항상 다른 사람의 대답을 받아 들일 수 있습니다.
Daniel B

답변:


15

VZFS 파일 시스템이 있습니다. 즉, VPS는 Parallels Virtuozzo 가상 머신입니다. Virtuozzo에서 호스팅 제공 업체는 VZFS를 통한 할당을 포함하여 많은 매개 변수에 대한 제한을 설정할 수 있습니다.

원인 : Inode가 부족함 (가장 일반적)

충분한 여유 공간이있는 것처럼 보이지만 파일을 만들 수없는 문제를 겪은 수백 명의 Virtuozzo VPS 고객과 수년간 작업 한 후 대다수의 파일이 inode 제한에 도달했습니다. 이 명령을 실행하여 inode 할당 ( Inodes), 사용한 inode ( IUsed), 남은 inode ( IFree) 및 사용한 inode 비율 ( IUse%)을 확인하십시오.

df -i

100 % inode 사용이 많이 발생합니다. 내 경험의 일반적인 원인 :

  • 스팸 이메일 반송
  • 대기중인 발신 스팸 이메일
  • 많은 인바운드 이메일이 저장되었습니다.
  • 일부 사용자가 PHP 세션 가비지 수집 ( session.gc_maxlifetime)을 백년 이상으로 설정
  • 너무 많은 일반 캐시 파일
  • WordPress 플러그인 W3 Total Cache에서 활성화 된 객체 캐시
  • 마 젠토 오류 로그 (모든 오류에 대해 새 파일이 생성됨)
  • 잘못 구성되거나 잘못 설계된 다른 프로그램 / 스크립트는 많은 파일을 만들어 삭제하는 것을 잊어 버립니다.

문제 해결

inode가 낮거나 부족하지만 대부분의 위치를 ​​모르는 경우 현재 디렉토리를 검색하고 inode를 1 폴더 깊이로 계산하는 Bash one-liner가 있습니다.

for i in $(find $(pwd) -maxdepth 1 -type d | sort); do echo -e "$(find "$i" | wc -l)\t: $(readlink -f "$i")"; done | sort -nr

/inode 할당을 사용하여 범인을 찾을 때까지 현재 작업 디렉토리를 계속 변경할 수 있습니다 .

설명

VPS는 Parallels Virtuozzo의 일부인 VZFS 파일 시스템에 있습니다 (OpenVZ는 유사하지 않고 동일한 기술을 기반으로하지만 OpenVZ는 VZFS를 사용하지 않습니다).

Virtuozzo가 VZFS에 파일을 저장하는 방식으로 인해 inode는 종종 ext4 또는 XFS와 같은 다른 파일 시스템에 비해 제한됩니다. 호스트는 이러한 모든 파일을 추적하므로 단일 VPS가 수억 개의 inode를 차지하지 않도록 호스팅 공급자에게 유리합니다. 결과적으로 호스팅 공급자는 inode 제한을 1,000,000 inode와 같이 낮게 설정할 수 있습니다.

Virtuozzo에 대한 inode 할당을 소진 한 수백 명의 고객과 수년간 협력 한 후에도 이러한 "신비한"디스크 할당량 문제는 더 이상 나를 놀라게하지 않습니다.

원인 : 기타 Virtuozzo 제한

내가 작업 한 Virtuozzo VPS 고객 중 아주 적은 비율이 다른 한계에 부딪 쳤기 때문에 파일 시스템 문제가있었습니다. 이 명령으로 일부 한계를 볼 수 있습니다 (모두는 아님).

cat /proc/user_beancounters

문제 해결

경우 failcnt열이 0보다 큰 값의 이상을 가지고 또는 held열 값이 대응하는 동일 limit가치, 당신은 한도에 도달했다.

OpenVZ의 위키에서 각 매개 변수가 무엇인지 찾을 수 있습니다 . 매개 변수는 "1 차", "2 차"또는 "보조"일 수 있습니다.

heldVPS에 도달 한 한도에 대한 수를 줄일 수없는 경우 호스팅 제공 업체에 추가 지원을 요청해야합니다 .

다른 제한에 도달하면 다른 증상이 발생하기 때문에 어떤 콩이 최대화되었는지에 따라이 답변을 크게 확장 할 수 있습니다.

원인 : 적중 후 한계가 감소했습니다.

/proc/user_beancounters또는 df -i에 관해 Virtuozzo 시스템 관리자는 limit매개 변수 held값을 아래로 줄일 수 있습니다 .

예를 들어, diskinodes매개 변수 의 원래 한계 가 1,500,000이고 한계에 도달 한 경우 호스팅 제공 업체의 누군가가 inode 한계를 1,000,000으로 설정하면 기괴한 inode 보고서가 df -i의미가 없습니다.

결국 18,446,744,069,620,218,961과 같이 불합리하게 큰 숫자를 볼 수 있습니다 .

Virtuozzo / OpenVZ에 경험이없는 수퍼 유저에 대한 지식과 반대되는 가치가 있기 때문에 호스팅 제공 업체의 불쾌한 행동이라고 생각합니다. 조언 ( , 다른 예 ).

문제 해결

호스팅 제공 업체에 문의하십시오. 당신이 찾은 것을 보여주고 그들과 협력하여 보류 된 콩을 한도 아래로 가져옵니다.

그들이 당신을 도와주지 않으면, 호스팅 제공 업체를 버리고 Virtuozzo / OpenVZ 가상화를 사용하지 않는 다른 공급 업체를 찾으십시오. KVM 가상화, VMware 가상화, Xen 가상화 또는 베어 메탈 서버에는 Virtuozzo / OpenVZ보다 훨씬 적은 제한이 적용됩니다.

설명

호스팅 제공 업체가 경고를 감사하거나 응답했을 때 VPS가 너무 많은 특정 리소스를 사용하고 있음을 발견했습니다 (거의 항상 inodes 제한 ( diskinodes최종 매개 변수)).

호스팅 제공 업체의 경험이없는 Virtuozzo 관리자는 실제 리소스 사용량보다 낮은 수준으로 제한을 줄임으로써 문제를 해결할 수 있다고 생각합니다. inode의 경우 실제 현재 사용량이 1,500,000과 같이 더 높더라도 1,000,000과 같이 할당량이 적을 수 있습니다.

제어판의 Virtuozzo 관리자는 실제 사용량과 새로운 한계를 볼 수 있지만 Virtuozzo가 가상화하는 방식으로 인해 불합리하게 높은 가짜 숫자를 볼 수 있습니다.

부주의 한 Virtuozzo 관리자는이 변경 사항을 알리지 않으므로 호스팅 업체에 연락해야합니다.


18,446,744,069,620,218,961이 워드 프레스를 실행하는 사이트에 허용되는 inode 수인지는
모르겠습니다

@BerryTsakala : 사용 된 inode 수 또는 파일 시스템이 지원하는 총 inode 수입니까? 명령의 전체 출력을 제공 할 수 있다면 확실합니다. 지금까지 작성한 내용에 따라 호스트에 inode 제한이 설정되어 있지 않아서 내가 잘못했을 것입니다. Virtuozzo 한도를 더 자세히 살펴 보는 업데이트 된 답변을 드리겠습니다.
Deltik

@BerryTsakala : 방금 호스트가 불길한 일을하고 있고 눈치 채지 않기를 바랐습니다. 자세한 내용은 곧 답변을 업데이트하겠습니다.
Deltik

감사합니다! 이미 중복 파일 삭제를 시작했습니다. 또한 스패머가 시스템을 악용하고 이메일이 큐메일 큐를 채우고 있음을 발견했습니다.
Berry Tsakala

BTW, inode가 요약되지 않습니다. df -i는 find ... 명령을 통해 반환 된 tje sum보다 100 조 배 더 큽니다. 불일치를 찾는 방법을 알고 있습니까?
Berry Tsakala

4

"디스크 할당량 초과"는 디스크에 사용 가능한 공간이 없지만 너무 많은 공간을 사용할 수 없음을 의미합니다.

일반적으로 할당량은 관리자가 설정할 수있는 한계입니다. 실행할 수있는 최대 프로세스 수, 차지할 수있는 공간, 보유 할 수있는 파일 수 등. 디스크 할당량은 최대 inode 및 디스크 블록 수에 대해 설정할 수 있습니다.

달리기 ( quotaquota -g달리 달리기 repquota -urepqouta -g)를 수행 하여 사용자가 이러한 방식과 방법으로 제한되는지 확인하십시오. 그렇다면 할당량을 편집 edquota하거나 quotaoff명령으로 해제 할 수 있습니다 . 설정에 따라이를 위해 루트로 로그인해야 할 수도 있습니다.

이 사이트 는 할당량 작업 방법에 대한 몇 가지 예를 다루고 유용한 명령에 대한 매뉴얼 페이지 링크도 포함합니다.

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