tmpfs(RAMディスク)
20111208
動作環境
CentOS6.x
dfコマンドを実施した際に表示される「tmpfs」の説明及び活用をしていきます。
まず、「tmpfs」とは最近のRHELで自動的に割り当てられるRAMディスクの事です。
→デフォルトではシステムの最大メモリの半分を割り当てられています。
→割り当てられた領域にファイルを保存する場合、使用サイズ分のメモリがシステムで利用出来なくなります。
また、メモリに保存するという事は以下の性質を持ちます。
1.読み書きの速度がHDDやSSDより高速。
2.電源を切った際に保存されているファイルが消失する。
→突然の電源ダウンではない限り、対処方法は有ります。
3.頻繁にファイルの読み書きを行っても機器の寿命に対する影響が少ない。
以上の性質から、重要ではないファイルを保存し、高速にアクセスする必要のある「/tmp」に割り当てていきます。
→デフォルトでは「/dev/shm」
〜既存設定の確認とマウント解除〜
◆現在のシステムの状態を確認
[root@server ~]# df
tmpfs 510480 0 510480 0% /dev/shm
◆現在のマウントを解除(「/dev/shm」内のデータは全て消去されます)
[root@server ~]# umount /dev/shm
◆先ほどのファイルシステムが存在していない事を確認
[root@server ~]# df
〜マウント位置の変更〜
◆マウント位置の変更する為、fstabを編集
[root@server ~]# vi /etc/fstab
びふぉー
tmpfs /dev/shm tmpfs defaults 0 0
あふたー
tmpfs /tmp tmpfs defaults 0 0
◆設定した内容にマウントしましょう。
[root@server ~]# mount -a
◆マウント位置を確認
[root@server ~]# df
tmpfs 510480 0 510480 0% /tmp
これで以降「/tmp」はRAMディスクに保存される事になります。
〜電源を切った際にデータが消去される事への対処〜
◆まずは電源ダウン時に格納するディレクトリを作成しておきましょう。
[root@server ~]# mkdir /root/tmp/
◆シャットダウン動作時にデータを待避する為の設定
[root@server ~]# vi /etc/rc.d/init.d/halt
#!/bin/bash
#
# halt This file is executed by init when it goes into runlevel
# 0 (halt) or runlevel 6 (reboot). It kills all processes,
# unmounts file systems and then either halts or reboots.
#
# Author: Miquel van Smoorenburg,
# Modified for RHS Linux by Damien Neil
#
mv -pr /tmp/* /root/tmp/
→赤文字部分を追加
◆起動中に待避データを元の位置に戻す設定
[root@server ~]# vi /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
cp -pr /root/tmp/* /tmp/
→赤文字部分を追加
急な電源のダウンやkernel panic時のデータは保証されない事に注意
〜定期的にデータを待避させて予期せぬ事態に備える〜
◆cronにて3時間毎にデータのコピーを取る設定
[root@Server ~]# echo "*/180 * * * * root bash `rm -rf /root/tmp ; cp -pr /tmp/ /root/` >/dev/null 2>&1" >> /etc/crontab
予期せぬシャットダウンが発生した場合、最大で3時間前のデータを保持する事が可能になります。
赤文字部分を/60に変更する事で、1時間(60分)に一回コピーへと変更可能。
→詳しいcron設定については「Cron記述方法」にて
〜tmpwatchを停止(任意)〜
CentOSにはデフォルトでtmpwatchが動作するようになっているので停止していきます。
→「tmpwatch」とは、一定期間過ぎた「/tmp」内のファイルを削除する機能で、「cron」にスクリプトが登録されている。
→機能を停止させる必要性はあまり無いとは思いますが、念のために記載をしていきます。
◆スクリプトをrootディレクトリに移動(場所は任意)
[root@Server ~]# mv/etc/cron.daily/tmpwatch /root/
以上