バックアップ用HDDを増設する
サーバのファイルを定期的にバックアップするためにHDDを増設した。
- HDDの取り付け
- HDDのフォーマット、マウント
- pdumpfsの設定
- 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