Ubuntu20.04でディスク書き込みが多いディレクトリをRAMDISK上にし、HDDへの書き込みを抑制する設定方法です。
また、Raspberry Pi + Ubuntu では、HDDではなくSDカード使用ですが、同様に SDカードへの書き込みを抑制できます。
なお、RAMDISK上の内容は、以下の記事で紹介した folder2ram によって、システム終了時に変更をディスクへ反映させます。
Linuxでディスク上の任意のディレクトリをRAMDISKに移し、システム終了時に変更をディスクへ反映させる: パソコン鳥のブログ
RAMディスク上にするディレクトリ
次の箇所がディスク書き込みが多いので RAMディスク上にします。
/tmp
/var/tmp
/var/log
/var/cache
/var/spool
/var/lib
ただし、上記ディレクトリ下の次の箇所は、ファイルサイズが大きく、RAMディスクにすると必要メモリ量が大きくなるので、RAMディスク上にはせず、実体を HDD上のままにします。
/var/lib/snapd
/var/cache/apt
ディレクトリの事前設定
/var/cache/apt と /var/lib/snapd は、HDD上のディレクトリへのリンクを、RAMディスク上に作成します。
これは、/var/cache と /var/lib はRAMディスク上、そのディレクトリ下の /var/cache/apt と /var/lib/snapd はHDD上にする、といったマウントができないためです。
次のようなリンクを作成します。
(RAMディスク) /var/cache/apt -> (HDD) /var/cache.disk/apt
(RAMディスク) /var/lib/snapd -> (HDD) /var/lib.disk/snapd
RAMディスク上に設定するための事前準備として、次のコマンドを実行してリンクを作成します。
mkdir /var/cache.disk cp -a /var/cache/apt /var/cache.disk/ rm -r /var/cache/apt ln -s /var/cache.disk/apt /var/cache/apt mkdir /var/lib.disk cp -a /var/lib/snapd /var/lib.disk/ rm -r /var/lib/snapd ln -s /var/lib.disk/snapd /var/lib/snapd
/tmp , /var/tmp をRAMディスクにする
fstab で次のように設定します。
size= でRAMディスクのサイズを指定できます。
/etc/fstab
tmpfs /tmp tmpfs defaults,size=256m,noatime,mode=1777 0 0 tmpfs /var/tmp tmpfs defaults,size=512m,noatime
その他のディレクトリをRAMディスクにする(folder2ram の設定)
ディスク上の任意のディレクトリをRAMDISKに移し、システム終了時に変更をディスクへ反映させる、folder2ram を設定します。
次の記事の内容で設定します。
Linuxでディスク上の任意のディレクトリをRAMDISKに移し、システム終了時に変更をディスクへ反映させる: パソコン鳥のブログ
この時、/etc/folder2ram/folder2ram.conf の内容には、次を設定します。
(注:スペースの箇所は(列の区切りは)タブコード2つ以上にしないと認識しません)
tmpfs /var/log size=32m tmpfs /var/cache size=128m tmpfs /var/spool size=32m tmpfs /var/lib size=512m
これで、ディスク書き込みの多いディレクトリが RAMディスク上になります。
書き込み抑制のために
/var/cache/apt
先の手順で、/var/cache/apt の実体は、RAMディスクではなくHDD上の /var/cache.disk/apt にしました。
ここへの書き込みを減らすには、aptの自動アップデートを抑制します。
次のファイルの内容を設定します。
/etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "0"; APT::Periodic::Unattended-Upgrade "0";
sambaのログ
sambaを運用している場合は、/var/log/samba 下にログが増え続けていきます。
/var/log がRAMディスク上でHDDほどサイズを大きくとれないので、ログを出力しなくてもいい場合は、次のようにします。
/etc/samba/smb.conf
log file = /dev/null
ext4のジャーナルログ無効化
ジャーナルログが有効だと、/var/log/journal に結構大きなサイズのログができます。
/var/log がRAMディスク上でHDDほどサイズを大きくとれないので、ジャーナルログ停止でもいい場合は、次のようにします。
/etc/systemd/journald.conf
Storage=none
systemd-journald サービスを再起動して設定を反映させます。
systemctl restart systemd-journald
ジャーナルログ /var/log/journal を削除します。
rm -r /var/log/journal
参考:ディスク書き込みしているファイルを探す
上記で設定したディレクトリ以外に、ディスク書き込みがあるディレクトリが無いか探す場合は、次のようにします。
findコマンドで -cmin -60 オプションと一緒に、ディレクトリを指定すれば、60分以内の書き込みファイルを検索して列挙します。
(/bin、/sbin、/usr は書き込みが無いと思われますので、検索対象には入れていません)
find /snap/ /var/ /etc/ /opt/ /srv/ -cmin -60
コメント