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
3つのサイズの取り付けオプションがあります。」どこ
サイズはい
この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
この問題はきちんと解決され、次回の起動時にクリーンアップする必要がなくなります。もちろん、2つのランタイム一時ディレクトリを持つことは多くの人にとって多少負担になるので、多くの最新のLinuxディストリビューション
/var/run
では/run
。
何ですか tmpfs
?
kernel.org/doc/Documentation/filesystems/tmpfs.txt:
ハードドライブにファイルが作成されないため、tmpfsのすべては一時的です。 tmpfs インスタンスをアンマウントすると、インスタンスに保存されているすべてのコンテンツが失われます。
tmpfsはカーネルの内部キャッシュにすべてを格納し、埋め込みファイルを収容するために拡張および縮小し、不要なページをスワップ領域に置き換える機能を提供します。最大サイズ制限があり、次のように動的に調整できます。
mount -o remount ...
返品、」tmpfs は完全にページキャッシュとスワッピングに存在します。」。