"/run" 디렉토리의 크기를 어떻게 조정하나요?

"/run" 디렉토리의 크기를 어떻게 조정하나요?

Nix 사용자 정의 이미지 빌드는 Ubuntu 18.04.4 LTS에서 메시지와 함께 계속 실패하며 이를 사용하여 빌드를 실행하는 동안 이를 추적 No space left on device할 수 있습니다 . watch -n -1 "df -h"범인은 결국 /run마운트 지점(보다 구체적으로 /run/user/1000)이었고 간접적으로는 스왑 공간이었습니다.

이전의 모습은 다음과 같습니다.

Filesystem                   Size  Used Avail Use% Mounted on
...
tmpfs                        785M   28K  785M   1% /run/user/1000
...

답변1

1. /run마운트 지점 크기 조정

~에 따르면 tmpfs문서 ,"tmpfs세 가지 크기의 장착 옵션으로 제공됩니다.”어디 크기

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

즉, 원하는 크기로 설정할 수 있지만 RAM이나 스왑 공간(또는 그 조합)이 충분한지 확인하고 필요한 경우 후자를 조정하십시오(아래 4. 참조).

제 경우는 초심자라 15GB로 설정했는데 그 정도면 충분했습니다.

sudo mount -o remount,size=15G,noatime /run/user/1000

2.스왑 공간 조정

2.1 일시적

사용된이 Askubuntu 답변에 의해:

현재 교환 확인:

$ free -th
              total        used        free      shared  buff/cache   available
Mem:           7.7G        4.6G        253M        985M        2.8G        1.8G
Swap:          975M          0B        975M
Total:         8.6G        4.6G        1.2G

$ sudo swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-2                               partition       999420  3840    -2

스왑 파일을 설정하고 엽니다.

$ sudo touch /temp_swap_15G.img
$ sudo fallocate -l 15G /temp_swap_15G.img
$ sudo mkswap /temp_swap_15G.img

# `-p` is the priority; the default is -2 and anything
# higher will be used first
$ sudo swapon -p 27 /temp_swap_15G.img

검사 결과:

$ sudo swapon -s
Filename                                Type            Size    Used    Priority
/dev/dm-2                               partition       999420  4352    -2
/temp_swap_15G.img                      file            15728636        0       27

2.2 영구

StackExchange 답변(archive.org에서 스냅샷 확인 가능):

LVM의 문제 해결 방법은 다음과 같습니다.


노트: NixOS에서는 위의 단계보다 프로세스가 매우 간단합니다.

  1. services.logind.extraConfig 속성 편집 /etc/nixos/configuration.nix:
  services.logind.extraConfig = ''
    RuntimeDirectorySize=12G
    HandleLidSwitchDocked=ignore
  '';
  1. 구성을 다시 빌드합니다(예: 사용 sudo nixos-rebuild switch).

추가 정보:


무엇인가요 /run?

이것 권위있는 답변이지만 이 Quora 답변 요약하다:

/run 매우 일찍 시작된 시스템 데몬(예: 및 )이 나중에 시작된 데몬(예: Apache) 에서 사용할 PID 파일 및 통신 소켓 끝점과 같은 임시 런타임 파일을 저장한다는 /var/run점에서 "얼리 버드"와 동일합니다 .systemdudev/var/runsshd

Traditional /var/run은 디스크의 실제 디렉터리입니다. 즉, 기본 파일 시스템이 아직 마운트되지 않았을 수 systemd있으며 다른 사람이 콘텐츠를 작성해야 함을 의미합니다. tmpfs(즉, RAM 기반) 파일 시스템을 만들면 /run 이 문제가 깔끔하게 해결되고 다음 부팅 시 정리할 필요가 없어집니다.

물론 두 개의 런타임 임시 디렉토리를 갖는 것은 많은 사람들에게 다소 부담스럽기 때문에 많은 최신 Linux 배포판 /var/run 에서는 /run.

무엇인가요 tmpfs?

kernel.org/doc/Documentation/filesystems/tmpfs.txt:

하드 드라이브에 파일이 생성되지 않기 때문에 tmpfs의 모든 것은 일시적입니다. tmpfs 인스턴스를 마운트 해제하면 인스턴스에 저장된 모든 콘텐츠가 손실됩니다.

tmpfs는 모든 것을 커널의 내부 캐시에 저장하고, 포함된 파일을 수용하기 위해 확장 및 축소하며, 원치 않는 페이지를 스왑 공간으로 교체하는 기능을 제공합니다. 최대 크기 제한이 있으며 다음을 통해 동적으로 조정할 수 있습니다.mount -o remount ...

반품, "tmpfs는 전적으로 페이지 캐싱 및 스와핑에 존재합니다.".

관련 정보