0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

/tmpをサブボリューム@tmpのマウントへ変更する

Last updated at Posted at 2024-10-21

メモリの一部分を利用して/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を作成しておきます。

/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を作成しておきます。

/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
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?