/tmp を RAM ディスクから他のパーティションに移動する

/tmp を RAM ディスクから他のパーティションに移動する

Debian の RAM が不足しているため、/tmp を SSD ドライブに移動する必要があります。しかし、それを使用するプログラムが /tmp パスの下で引き続きアクセスできるようにするにはどうすればよいのか、まだわかりません。

つまり、基本的に私が実現したいのは、/tmpをramdiskから、たとえば/home/tmpに移動することです。そして、/tmp経由でアクセスできるようにします。

答え1

systemctl mask tmp.mount

このコマンドは、systemdRAM ベースのファイルシステム ( tmpfs) を /tmp にマウントしないように指示します。変更を適用するには、システムを再起動する必要があります。

ほとんどの場合、これで十分です。/tmpを/home/tmpなどにリダイレクトする必要はありません。この方法は公式に推奨されています。systemd ドキュメント --

tmpfs でバックアップされた /tmp を削除したいだけです。

次の 3 つのオプションがあります。

  1. /tmpへのマウントを無効にして、ルートディレクトリと同じ物理ファイルシステム上に存在するようにします。そのためには、次のコマンドを実行します。 systemctl mask tmp.mount
  2. 別の物理ファイル システムを /tmp にマウントします。そのためには、他のファイル システムの場合と同じように、/etc/fstab にエントリを作成するだけです。
  3. /tmp はそのままにして、サイズを増減します。そのためには、他の tmpfs ファイル システムと同様に、/etc/fstab にエントリを作成し、適切な size= オプションを使用します。

/tmp を /home/tmp などにリダイレクトする必要がないのはなぜですか?

上記の場合、/tmp は/(ルートファイルシステム内の)書き込み可能なディレクトリとして残ります。Debian または他のほとんどの Linux ディストリビューション用のソフトウェアすべき/tmp は少数のファイルのみに使用するので、ルート ファイルシステムの容量が不足する心配はありません。この要件は、主に /tmp が RAM ファイルシステムである可能性があるという考えから派生しているようです :-)。

/tmp が時間の経過とともに古いファイルでいっぱいになることを心配する必要はありません。/tmp は起動時に自動的にクリーンアップされます。

$ cat /usr/lib/tmpfiles.d/tmp.conf
#  This file is part of systemd.
#
#  systemd is free software; you can redistribute it and/or modify it
#  under the terms of the GNU Lesser General Public License as published by
#  the Free Software Foundation; either version 2.1 of the License, or
#  (at your option) any later version.

# See tmpfiles.d(5) for details

# Clear tmp directories separately, to make them easier to override
D /tmp 1777 root root -
#q /var/tmp 1777 root root 30d

# There are more lines here, but they are not important to this answer
# ...

関連情報