tmpfs /run/user/1000에 inode가 부족하지만 파일이 30개만 있습니다.

tmpfs /run/user/1000에 inode가 부족하지만 파일이 30개만 있습니다.

그래서 오늘 나는 GUI 프로그램이 오류 메시지를 생성한 것을 발견했습니다:

(FreeFileSync:21930): dconf-CRITICAL **: 11:46:39.475: unable to create file '/run/user/1000/dconf/user': No space left on device.  dconf will not work properly.

여기서 /run/user/1000a는 tmpfs사용자의 run폴더입니다. 문제는 위에 여유 공간이 충분하다는 것입니다.

$ df -h /run/user/1000
Filesystem      Size  Used Avail Use% Mounted on
tmpfs           1.6G  120K  1.6G   1% /run/user/1000

왜? 그러다가 0무료 inode 가 남아 있다는 것을 발견했습니다 .

$ df -i /run/user/1000
Filesystem      Inodes   IUsed IFree IUse% Mounted on
tmpfs          2027420 2027420     0  100% /run/user/1000

매우 좋은. 하지만 문제는 이유를 전혀 찾을 수 없다는 것입니다. 있기 때문에이 드라이브에는 파일이 거의 없습니다., 다음과 같습니다.

$ echo $PWD ; find . | wc -l
/run/user/1000
30

……그 외에도열려 있는 프로그램 중 삭제된 파일을 여전히 유지하는 프로그램은 거의 없습니다.

$ sudo lsof $PWD | grep deleted
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/1000/gvfs
      Output information may be incomplete.
albert    17684   id   72u   REG   0,69     1026  1200359 /run/user/1000/#1200359 (deleted)

Albert만 해당됩니다. Albert가 종료된 후에도 사용된 INodes 수(100%!)는 변경되지 않습니다.

우분투 18.10. 시스템이 오랫동안 재부팅되지 않고 실행되었습니다. 아직 다시 시작하지 않았습니다. 곧 그렇게 될 것입니다. 오류를 지울 수 있는지 확인하세요.

[편집하다]

du그런데 다음은 df보고된 사용된 inode 수와 관련된 명령 간의 출력 차이를 보여주는 링크입니다.

https://gist.github.com/dreamcat4/6740c40bb313c1a016d35a0c00a8ab92

그들은 서로 상충되는 것 같습니다!

답변1

어떤 경우에는 docker-container가 이러한 inode 소비를 유발할 수 있음을 발견했습니다.

sudo find /run/docker/libcontainerd -xdev -printf '%h\n' |
  sort | uniq -c | sort -k 1 -n | awk '$1 > 100'

  26170 ./130663143dafaf23866942e29a72742d4f869edb0dfc40331e0e1782f4b14a3a
  30472 ./5a7a4c88324c1a42a2e1ad835058347fab523d75481d2047ffabd4546c908873
  30472 ./fc2a4628f61d1607861f3de9f1ce312fb662e57ffaa1205c2e616ff7aa54c67a

각 컨테이너를 다시 시작하면 이러한 값이 합리적인 수준으로 재설정됩니다.

답변2

재설치 중에 사용 가능한 inode 수를 늘릴 수 있습니다. ~에서커널 문서:

tmpfs에는 크기 조정을 위한 세 가지 마운트 옵션이 있습니다.

size: 이 tmpfs 인스턴스에 할당된 바이트 수에 대한 제한입니다. 기본값은 물리적 RAM의 절반이며 스왑이 없습니다. tmpfs 인스턴스가 너무 크면 OOM 핸들러가 메모리를 해제할 수 없기 때문에 시스템이 교착 상태에 빠지게 됩니다.

nr_blocks: 크기와 동일하지만 PAGE_SIZE 단위입니다.

nr_inodes: 이 인스턴스의 최대 inode 수입니다. 기본값은 물리적 RAM 페이지 수의 절반 또는 (highmem이 있는 시스템에서) lowmem RAM 페이지 수의 절반 중 더 작은 값입니다.

이러한 매개변수에는 킬로, 메가, 기가비트에 대한 접미사 k, m 또는 g가 허용되며 재설치 시 변경될 수 있습니다.

관련 정보