: O. Yuanying

バックアップ用HDDを増設する

サーバのファイルを定期的にバックアップするためにHDDを増設した。

  1. HDDの取り付け
  2. HDDのフォーマット、マウント
  3. pdumpfsの設定
  4. HDDの静音、省電力化

HDDの取り付け

今回買ったのはSeagateのパラレルATA250GBのHDD。これをセカンダリのマスターとして物理的に取り付けてやる。

途中、取り付け終わった後にLinuxを再起動するも、起動途中で止まってしまう。IRCで「HDD増設って物理的に取り付けた後になんかやるんだっけ??」と半泣きにコメントするも「なにもやらんくて良いのでは」というレスしか帰ってこず。

結局HDDと一緒に増設したメモリが悪さしていた模様。

HDDのフォーマット、マウント

無事?に取り付けが終了したので、HDDのパーティション分け、フォーマット、マウントを行う。詳しくは「ITmedia ハードディスクを増設したい」を参考にする。

パーティションの作成

取り付けたHDDは、ドライブの接続箇所により以下のデバイス名で認識されるらしい。シリアルATAの場合はまた別途名前が変わる模様。

ドライブの接続箇所デバイス名
プライマリマスター/dev/hda
プライマリスレーブ/dev/hdb
セカンダリマスター/dev/hdc
セカンダリスレーブ/dev/hdd

今回増設したHDDはセカンダリマスターなので、以下のコマンドでパーティションを作ってやる。

# fdisk /dev/hdc

上記のコマンドで対話的にプライマリパーティション一個「/dev/hdc1」というデバイス名で作成した。

フォーマット

作成したパーティションをext3でフォーマットしてやる。ext3を選んだのは特に意味が無く、もしかしたらバックアップ用のHDDを作成するためにもっと良いフォーマットがあるかもしれない。

# mkfs -t ext3 /dev/hdc1

マウント

マウントするディレクトリを先に作成し、マウントしてやる。

# mkdir /backup
# mount /dev/hdc1 /backup

その後、起動時に毎回マウントされるように/etc/fstabに記述する。

# vim /etc/fstab
# more /etc/fstab
...
/dev/hdc1               /backup                 ext3    defaults        1 2

/etc/fstabのオプションの意味などは、「/etc/fstabに記述されている数字の意味」を参考にする。

pdumpfsの設定

毎日1回、バックアップが行われるようにcronに登録する。

バックアップ方法は単純にcpコマンドでもいいがそれだとあまりにも原始的すぎる。他にrsyncなどが考えられるけれども、今回はせっかく大容量のHDDを買ったので、毎日のスナップショットも残せるようにpdumpfsを導入することにした。Rubyで実装されているというのもポイント高し。

pdumpfs はバックアップ先ディレクトリに「年/月/日」の形式でス ナップショットを保存します。初回のみバックアップ対象ディレク トリ全体をコピーして、2日目以降は差分でバックアップしていきます。ディスクの消費量を節約するために、更新されなかったファイルは前日のスナップショットのファイルへのハードリンクとして 記録されます。

pdumpfsのインストール

ソースをダウンロードし、コンパイル。できあがったpdumpfsを/usr/local/binにコピーする。

# wget http://0xcc.net/pdumpfs/pdumpfs-1.3.tar.gz
# tar zxvf pdumpfs-1.3.tar.gz
# cd pdumpfs-1.3
# make
# cp pdumpfs /usr/local/bin

バックアップ先ディレクトリの作成

バックアップ先のディレクトリを作成する。

# mkdir /backup/yuanying
# chown -R yuanying:yuanying /backup/yuanying

cronに登録

今回は自分のホームディレクトリのみをバックアップ対象とするために、cronに以下のように登録しておく。

# su - yuanying
$ crontab -e
# crontab for yuanying
HOME=/home/temp
48 06 * * * /usr/local/bin/pdumpfs /home/yuanying /backup/yuanying/backup >/backup/yuanying/backup.log 2>/backup/yuanying/backup-error.log

これで毎朝6時48分にホームディレクトリがバックアップされるようになった。

HDDの静音、省電力化

バックアップ先のHDDは基本的に毎朝6時48分のバックアップ時にしか使用されないため、その他の時間はスリープしているのが望ましい。

というわけでhdparmというコマンドを使用して、10分以上のアクセスがHDDに無かった場合、HDDがスリープするように設定した。

# /sbin/hdparm -s 120 /dev/hdc

また、再起動後にも同じように設定するため、/etc/rc.d/rc.localファイルに記述を追加する。

# vim /etc/rc.d/rc.local
# more /etc/rc.d/rc.local 
...
/sbin/hdparm -S 120 /dev/hdc