그래서 오늘 나는 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/1000
a는 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가 허용되며 재설치 시 변경될 수 있습니다.