너무 많은 인덱스 노드가 사용되었습니다.

너무 많은 인덱스 노드가 사용되었습니다.

저는 Ubuntu 14.x를 사용하고 있으며 최근에 일종의 디스크 가득 참 메시지로 인해 파일 생성에 실패했습니다.

공간이 2GB 이상 있는데 이게 안되는데, 아이노드가 꽉 차면 발생할 수 있다고 들었습니다.

저는 숙련된 Linux 사용자가 아니기 때문에 이를 제거하는 방법을 모르겠습니다. 먼저 위 명령을 루트로 입력하여 얼마나 많은 inode가 사용되는지 확인했습니다.

$ df -i -h
Filesystem     Inodes IUsed IFree IUse% Mounted on
udev             248K   414  248K    1% /dev
tmpfs            250K   467  250K    1% /run
/dev/xvda1       512K  512K     0  100% /

예, 100%입니다. 그런 다음 현재 시스템에서 사용되는 inode 수를 표시하는 명령을 찾았습니다.

#  for i in /*; do echo $i; find $i |wc -l; done

다음과 같이 인쇄됩니다.

/bin
172
/boot
353
/dev
416
/etc
1971
/home
21808
/lib
17720
/proc
43272
/sys
36453
/tmp
5134
/usr
423458
/var
10117
...

그래서 /home/dev에서 일부 파일을 삭제하고 일부 무료 inode를 얻었지만 많지는 않았습니다.

Filesystem     Inodes IUsed IFree IUse% Mounted on
/dev/xvda1       512K  464K   49K   91% /

또한 필요한 파일을 다시 설치하면 inode를 다시 차지하므로 실제로 문제가 해결되지는 않습니다.

/usr 디렉토리가 거의 inode(423458)를 차지하는 것을 볼 수 있지만 다른 시스템이나 프로그램에 영향을 주지 않고 삭제할 수 있는 파일이 무엇인지는 알 수 없습니다.

삭제할 "불필요한" inode를 찾는 방법은 무엇입니까? 어떤 조언이라도 대단히 감사하겠습니다.

답변1

내 시스템에 비해 파일이 많기 /usr때문에 거기서 계속 검색하는 것이 좋습니다. 명령에서 로 변경하면 모든 디렉터리에서 작동합니다 /*. *숫자를 비교할 대상이 없으면 어려울 수 있습니다. 내 하위 디렉터리에 있는 파일 수는 다음과 같습니다 /usr.

bin 2397
games 32
include 4607
lib 27379
local 34
sbin 271
share 1
src 22971

(으로 만들어짐 for i in *; do echo -n "$i "; find $i |wc -l; done)

관련 정보