省エネファイルサーバ構築 34 CentOS 5.6 /tmpディレクトリなどをHDDに移動

前回、更新頻度の高いログディレクトリ(/var/log)をHDDに移動しました。

しかし同じように頻度の高いディレクトリがあります。
それがテンポラリの領域です。
テンポラリのディレクトリはどこかというと、tmpという名前のディレクトリがそのはず。

というわけでルート以下の全てのディレクトリから探してみます。ストレージは除くので下記のコマンドを打ってみる

# find / -path /var/storage -prune -o -name tmp
/usr/tmp
/var/storage
/var/tmp
/tmp

-pruneは、「そのディレクトリの中には入って行かない」なので/var/storageの中には入っていかなくなるわけです。
そしてorの意味を持つ-oで元々の目的だったtmpディレクトリを探したのです。

で、結果を見る限り/var/storage以外の3つのディレクトリがそれになるようです。

では対象のディレクトリの移動先をつくります。

# mkdir -p /var/storage/00/main/tmp/usr.tmp ← /usr/tmp用
# mkdir /var/storage/00/main/tmp/var.tmp ← /var/tmp用
# mkdir /var/storage/00/main/tmp/tmp ← /tmp用

そして中身の移動

# mv /usr/tmp/* /var/storage/00/main/tmp/usr.tmp/
mv: cannot stat `/usr/tmp/*': そのようなファイルやディレクトリはありません
# mv /var/tmp/* /var/storage/00/main/tmp/var.tmp/
mv: cannot stat `/var/tmp/*': そのようなファイルやディレクトリはありません
# mv /tmp/* /var/storage/00/main/tmp/tmp/
mv: cannot stat `/tmp/*': そのようなファイルやディレクトリはありません

3つとも空でした。
そしてディレクトリを削除してシンボリックリンク

# rmdir /usr/tmp
rmdir: /usr/tmp: ディレクトリではありません

おや?おかしいな?
よく見るとディレクトリではなくシンボリックリンクでした。

# ll /usr/tmp
lrwxrwxrwx 1 root root 10 7月 28 00:55 /usr/tmp -> ../var/tmp

しかもすでの/var/tmpにリンクしてました。なのでコレはスキップ。

# rmdir /var/tmp
# ln -s /var/storage/00/main/tmp/var.tmp /var/tmp
# ll /var/tmp
lrwxrwxrwx 1 root root 32 8月 17 01:42 /var/tmp -> /var/storage/00/main/tmp/var.tmp

こっちはOK

そして最後

# rmdir /tmp
rmdir: /tmp: ディレクトリは空ではありません

おや?おかしいな?
よくみると隠しファイルがありました。

# ls -la /tmp
合計 28
drwxrwxrwt 4 root root 4096 8月 16 06:57 .
drwxr-xr-x 22 root root 4096 8月 16 06:55 ..
drwxrwxrwt 2 root root 4096 8月 16 06:55 .ICE-unix
drwxr-xr-x 2 root root 4096 8月 16 04:04 .webmin

移動させます。

# mv /tmp/.* /var/storage/00/main/tmp/tmp/
mv: inter-device move failed: `/tmp/.' to `/var/storage/00/main/tmp/tmp/.'; unable to remove target: ディレクトリです
mv: inter-device move failed: `/tmp/..' to `/var/storage/00/main/tmp/tmp/..'; unable to remove target: ディレクトリです

自分と親ディレクトリまで移動させようとしてエラーが出てますが、目的は達成しました。

# ls -la /tmp
合計 16
drwxrwxrwt 2 root root 4096 8月 17 01:45 .
drwxr-xr-x 22 root root 4096 8月 16 06:55 ..
# ls -la /var/storage/00/main/tmp/tmp/
合計 20
drwxr-xr-x 4 root root 4096 8月 17 01:45 .
drwxr-xr-x 5 root root 4096 8月 17 01:35 ..
drwxrwxrwt 2 root root 4096 8月 16 06:55 .ICE-unix
drwxr-xr-x 2 root root 4096 8月 16 04:04 .webmin

ちゃんと移動できてます。
そしてディレクトリを削除してシンボリックリンクを。

# rmdir /tmp
rmdir: /tmp: ディレクトリは空ではありません

なんだ!?移動させたのに!
確認するとwebminディレクトリが出来上がってました。

# ls -la
合計 20
drwxrwxrwt 3 root root 4096 8月 17 01:46 .
drwxr-xr-x 22 root root 4096 8月 16 06:55 ..
drwxr-xr-x 2 root root 4096 8月 17 01:46 .webmin

しかし中身は空です。
なので/tmp削除→リンク作成を一気にやります

# rm -rf /tmp; ln -s /var/storage/00/main/tmp/tmp /tmp

エラーになりませんでした。
では確認。

# ll /tmp
lrwxrwxrwx 1 root root 28 8月 17 01:50 /tmp -> /var/storage/00/main/tmp/tmp

リンクされてます。

# ls -la /tmp/
合計 20
drwxr-xr-x 4 root root 4096 8月 17 01:45 .
drwxr-xr-x 5 root root 4096 8月 17 01:35 ..
drwxrwxrwt 2 root root 4096 8月 16 06:55 .ICE-unix
drwxr-xr-x 2 root root 4096 8月 16 04:04 .webmin

中身もちゃんと移動してます。
ではさっき既にリンクされていて不要だったディレクトリを削除。

# rmdir /var/storage/00/main/tmp/usr.tmp/

テンポラリディレクトリ移動完了です。
これでますますUSBメモリへの負荷は減ったはずです。
USBメモリの点滅頻度も減ったような気がしています。

コメント