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에서 스냅샷 확인 가능):
- https://askubuntu.com/questions/178712/how-to-increase-swap-space
- https://askubuntu.com/questions/226520/how-can-i-modify-the-size-of-swap-with-lvm-partitions
LVM의 문제 해결 방법은 다음과 같습니다.
노트: NixOS에서는 위의 단계보다 프로세스가 매우 간단합니다.
services.logind.extraConfig
속성 편집/etc/nixos/configuration.nix
:
services.logind.extraConfig = ''
RuntimeDirectorySize=12G
HandleLidSwitchDocked=ignore
'';
- 구성을 다시 빌드합니다(예: 사용
sudo nixos-rebuild switch
).
추가 정보:
무엇인가요 /run
?
이것 권위있는 답변이지만 이 Quora 답변 요약하다:
/run
매우 일찍 시작된 시스템 데몬(예: 및 )이 나중에 시작된 데몬(예: Apache) 에서 사용할 PID 파일 및 통신 소켓 끝점과 같은 임시 런타임 파일을 저장한다는/var/run
점에서 "얼리 버드"와 동일합니다 .systemd
udev
/var/run
sshd
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는 전적으로 페이지 캐싱 및 스와핑에 존재합니다.".