(安全に)/ tmpを別のボリュームに移動する方法は?


17

今日、/tmpディレクトリは職場のマシンでいっぱいになりました。問題は、それほど大きくないルートパーティションにあったことです。これを修正するために、同僚は/new/tmp別の場所にディレクトリを作成し、すべてのコンテンツを新しいディレクトリにコピーし、元のディレクトリを削除し/tmpてsymlinkを作成しました/tmp -> /new/tmp

彼がファイルをコピーしたとき(実際、これは私ではなく、他の誰かでした!)彼は使用しなかった-aので、すべてのファイルの所有者は/new/tmpでしたroot。さらに、彼は/new/tmpディレクトリのアクセス許可を設定しなかったため、デフォルトの0755になりました。これにより、トラブルは終わりませんでした。結局、すべてを破棄し/tmpて再起動する必要がありました。

/tmp大勢の人たちが、VNC経由のGnomeを実行するため、ディレクトリには、さまざまなソケットやパイプやその他もろもろが含まれていて、私が使用しscreen、独自のパイプを持っています。

実行中のシステムの別のボリュームにディレクトリを移動する安全な方法はあり/tmpますか?すべてを機能させ続けるために実際に何をしたかはわかりません。私はパイプとソケットに何が起こるかについて特に興味があります。

回答:


20

「クライアント」マシンでは、安全な移動方法/tmpは再起動です。ここで、クライアントと/tmpは、特にXサーバーと画面にソケットを配置するプログラムを実行するものを意味します。

新しいものには/tmp間違いなく適切なアクセス許可(1777)が必要です。

/tmpあなたはかなり上の任意のファイルをコピーすることはできません。これは、ほとんどの/tmp場合、ファイルを開くプログラムです。ファイルをコピーすると、内容はコピーされますが、プログラムはまだ古いファイルを開いたままです。デバッガー(ptrace)でそれらにアクセスできる場合がありますが、これは再起動よりもはるかに複雑になり、多くのプログラムでは、とにかくクラッシュするだけです。

あなた/tmpがいっぱいで、新しいものにライブに切り替えたい場合は、ファイルが開いているすべてのプログラムを再起動する必要があります。それはXとスクリーンセッションを再起動することを意味するので、再起動するよりもはるかに優れています。

新しいプログラムに切り替えることができますが、ユニオンマウントを使用して、既存の開いているファイルを所定の位置に保持する必要があります。(原則は健全ですが、試したことがないので、予期しない問題が発生する可能性があります。)Linuxでこれを行う方法を次に示します。

  1. /tmp手動で選択したいくつかの大きなファイルを除き、すべての既存のファイルを保持します。
  2. /tmp.new(モード1777)を作成します。
  3. 公開/tmp別のパスに:mount --bind / /.root.only。次のステップが影になるので、これは必要/tmpです。このステップを必要としない別のユニオンマウント実装が存在する場合があります。
  4. 組合は山作り/.root.only/tmp/tmp.new、上のマウント/tmp。この方法で作成された新しいファイル/tmpは書き込まれ/tmp.newますが、ファイルはの/.root.only/tmp下にも表示され/tmpます。1つの可能性は unionfs-fuseですunionfs-fuse /tmp.new:/.root.only/tmp /tmp

ユニオンマウントルートに移動したくない場合(プラットフォームで使用できない場合や、問題が多すぎるため)、少なくとも古いディレクトリを削除しないでください。それを移動して、実行中のプログラムが古いディレクトリを使用し続け、新しいプログラムが新しいディレクトリを使用するようにします。(もちろん、新しいプログラムは、どこに探すか/tmpを設定TMPDIRまたは指示しない限り、ソケットまたはパイプを介して古いプログラムと通信することはできません。)

mv /tmp /tmp.old && mkdir /tmp

再起動後も/ tmpの新しい場所を維持する方法を明確にしたいですか?
FoxDeploy

@FoxDeployそれにエントリを入れてください/etc/fstab
ジル「SO-悪であるのを止めてください」

それについて詳しく説明していただけますか?
FoxDeploy

@FoxDeployここで何を求めているのかわかりません。/tmpルートファイルシステム以外の場所にしたい場合は/etc/fstab、ブート時にマウントする他のファイルシステムと同様に、にリストします。それがあなたが尋ねているものではない場合、あなたは十分なコンテキストで新しい質問をする必要があります。
ジル 'SO-悪であるのをやめる'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.