メモリの一部分を利用して/tmpフォルダが作成されている場合に、ストレージの/tmpフォルダへ変更する手順のメモ
メモリが少なめの場合、大きなファイルの操作や、ブラウザでたくさんタブを開くなどの操作など、メモリ不足になりがちな操作で重たくなる環境の場合、改善する場合があります。
(またパフォーマンスが多少落ちたとしても、高負荷時の動作が安定するかもしれません。)
Btrfsの場合
Rootパーティションのストレージの確認
mount|awk '{if ($3=="/") print $1}'
/dev/sda3
uuidを確認する。
/dev/sda3が@
,@home
などのサブボリュームが作成されているストレージの場合
lsblk -l -f -n -p | awk '{if ($1=="/dev/sda3") print $0}'
lsblk -l -f -n -p | awk '{if ($1=="/dev/sda3") print $3}'
/mntに一旦マウントしてから、サブボリューム@tmp
を作成する
@サブボリューム
を/
にマウントした状態で、sudo btrfs subvolume create /@tmp
を実行すると、@サブボリュームの下の@/@tmp
に作成されるので、ルートパーティションをsubvolumeオプションを指定しない
で/mntにマウントしておいて、そこでサブボリュームを追加作成します。
sudo mount /dev/sda3 /mnt
cd /mnt
sudo btrfs subvolume create @tmp
cd
sudo umount /mnt
fstab
上で確認しておいたUUIDとともに、/tmpの記述を追加します。
UUID=<your-btrfs-UUID> /tmp btrfs subvol=/@tmp,defaults,noatime 0 0
tmpfiles.dの設定
/etc/tmpfiles.d/tmp-directory.confを作成しておきます。
# /tmpディレクトリの所有権、パーミッション、クリーンアップルールを設定
d /tmp 1777 root root 10d
# /tmp内の古いファイルを削除(10日以上経過したファイル)
r! /tmp 10d
# 特定のファイルやディレクトリを保護(例:/tmp/.X11-unix)
x /tmp/.X11-unix
設定の反映
sudo systemd-tmpfiles --create --remove
再起動して確認
reboot
sudo btrfs subvolume list /
mount | grep "/tmp"
ls -ld /tmp
ls -la /tmp
lsblk -e7 -e253 -o NAME,FSTYPE,FSVER,UUID,SIZE,MOUNTPOINTS -P| awk '
BEGIN {
print "NAME\tFSTYPE\tFSVER\tUUID\tSIZE\tMOUNTPOINTS"
}
{
name = gensub(/.*NAME="([^"]*)".*/, "\\1", 1)
fstype = gensub(/.*FSTYPE="([^"]*)".*/, "\\1", 1)
fsver = gensub(/.*FSVER="([^"]*)".*/, "\\1", 1)
uuid = gensub(/.*UUID="([^"]*)".*/, "\\1", 1)
size = gensub(/.*SIZE="([^"]*)".*/, "\\1", 1)
mountpoints = gensub(/.*MOUNTPOINTS="([^"]*)".*/, "\\1", 1)
gsub(/\\x0a/, "\n", mountpoints)
split(mountpoints, mps, "\n")
for (i in mps) {
print name "\t" fstype "\t" fsver "\t" uuid "\t" size "\t" mps[i]
}
}'| column -t -s $'\t'
元に戻す場合
/etc/tmpfiles.d/tmp-directory.confを削除する。
/etc/fstabの記述から@tmp
の記述をなくす。
サブボリューム@tmp
も削除する。
ext4の場合
tmp.mountを無効にする
sudo rm /etc/systemd/system/tmp.mount
相当の処理?
systemctl status tmp.mount
systemctl mask tmp.mount
systemctl status tmp.mount
sudo mkdir -p /tmp
tmpfiles.dの設定
/etc/tmpfiles.d/tmp-directory.confを作成しておきます。
# /tmpディレクトリの所有権、パーミッション、クリーンアップルールを設定
d /tmp 1777 root root 10d
# /tmp内の古いファイルを削除(10日以上経過したファイル)
r! /tmp 10d
# 特定のファイルやディレクトリを保護(例:/tmp/.X11-unix)
x /tmp/.X11-unix
設定の反映
sudo systemd-tmpfiles --create --remove
再起動して確認
reboot
mount | grep "/tmp"
ls -ld /tmp
ls -la /tmp
lsblk -e7 -e253 -o NAME,FSTYPE,FSVER,UUID,SIZE,MOUNTPOINTS -P| awk '
BEGIN {
print "NAME\tFSTYPE\tFSVER\tUUID\tSIZE\tMOUNTPOINTS"
}
{
name = gensub(/.*NAME="([^"]*)".*/, "\\1", 1)
fstype = gensub(/.*FSTYPE="([^"]*)".*/, "\\1", 1)
fsver = gensub(/.*FSVER="([^"]*)".*/, "\\1", 1)
uuid = gensub(/.*UUID="([^"]*)".*/, "\\1", 1)
size = gensub(/.*SIZE="([^"]*)".*/, "\\1", 1)
mountpoints = gensub(/.*MOUNTPOINTS="([^"]*)".*/, "\\1", 1)
gsub(/\\x0a/, "\n", mountpoints)
split(mountpoints, mps, "\n")
for (i in mps) {
print name "\t" fstype "\t" fsver "\t" uuid "\t" size "\t" mps[i]
}
}'| column -t -s $'\t'
元に戻す場合
/etc/tmpfiles.d/tmp-directory.confを削除する。
tmp.mountを有効にする。
systemctl unmask tmp.mount