Sceneries through the lenses

その場の気分でもやっと投稿していくブログ。内容はころころ変わります…(汗。

Linux の RAID を自宅サーバ運用から考えたんだが…

2009-05-21 00:16:12 | OSS/Programming
ということで、自宅サーバ からの続き。

ノートPCをベースとした自宅サーバに接続した USB HDD について。
実は、この自宅サーバは2代目にあたります。
2代目を作成するに当たり、OS領域は2.5インチ HDD もしくは SSD、
データ領域は2つのHDDで運用することを考えていました。

そのため、ノートPCに USB 2.0 接続で 2つの 1TB HDD を接続するという構成に
なっています。
データディスクはちゃんとデータ保護を考えていたので、ミラーを利用すると
考えるのが自然でしょう。
Linux の場合、md (Multiple Deivces) を利用したソフトウェアRAID、
もしくは LVM (logical volume manager) を利用するという方法があります。

利点も欠点も含めて、特徴は下記のような感じになるかなと。

md/mdadm

  1. 構成が簡単
    同じ容量のディスクで処理する場合、fdisk でディスクを
    Linux raid に指定し、mdadm --create で作成できます。
    取り外し操作等も mdadm で行えるので操作はシンプル。
  2. パフォーマンスは出ない
    ミラー化するとは言え、リード速度の改善はありません。
    まぁ、USB接続なので、そもそもこの辺りに期待を持つほうが間違い。^-^;
  3. sync に時間がかかる
    USB 2.0接続が原因なのもあるのだが、1TBのシンクに20時間はかかる。
    基本的にHDD全体をコピーするので、実データのサイズは一切関係ない。
    ディスク自体のサイズに依存。
    これは、ちょっと鬱陶しい。


LVM

  1. 構成はちょっと面倒。
    pvcreate コマンドでLVM用の物理パーティションを作成、
    vgcreate でボリュームグループに登録、lvcreate で論理ボリュームを作成、
    という感じで手順を踏む必要がある。
    ディスク交換の際も同じ様に色々加味する必要がある。
    そういう意味ではちょい面倒。
  2. リード速度が改善。
    LVMのミラーの場合、リード速度が単発のHDDより良くなります。
    ただ、そもそも USB 接続なので、その辺に期待すること自体が間違い(汗。
    # HDDのパフォーマンス自体出し切れない。
  3. 柔軟性が高い
    手順が面倒になっている分、ボリューム拡張等、柔軟性が非常に高くなっている。
    そういう意味では、ディスク故障時の入れ替え等で、この柔軟性が生きてくる可能性がある。
    スナップショット等の機能もあるので、その辺も有用かもしれない。
    ただ、自宅サーバレベルだと、本当に必要か? と疑問が出てくるかと。


当たり前なんだが、ミラー構成を利用する場合、両方とも電源が入っている必要がありますね。

っと、大雑把な比較なんだが、手っ取り早さを考えたら md を利用するのが
楽かな…と思ったので、自宅サーバのセットアップ時に最初は md を利用して
ミラーを構築しました。
(この時点ではsyncの遅さには気づいていなかった…)

で、構成後、データの移行作業中、ミスでディスク片方が落ちたため、
sync 発生。すると待ち時間 20時間。
これは自宅サーバには向いていないと判断し、急遽方針を変えるということに。

行き着いたのはソフトウェアRAIDは使わないということ。
結局 rsync を使えば良いのではないか…という結論に達したわけです。

rsync

  1. ディスクは別々に運用できる。
    電源を入れること自体、別々に可能。
  2. 消費電力削減とディスク寿命
    データの読み込み時や書き込み時に同時に2つ常に動く必要は無いので、
    基本は片方の HDD しか動かしません。(もう片方はディスクの回転を止めている)
    その分、多少でも電気の節約や寿命を延ばしたりできるかと。
  3. 柔軟性が高い
    そもそも、別ディスクとして扱って、同じデータをコピーしているだけだから、
    拡張や、ディスクの差し替えには非常に柔軟に対応できます。
  4. 2つの HDD のデータが常に同じではない
    一定時間ごとに rsync を利用し、データをコピーするわけだから、
    当然の結果です。
    常に書き換えが発生しそうな企業向けなどの運用では考えられないかもしれない。
    が、今回は自宅にあるデータ専用ディスクのため、頻繁に書き換えは起こらない。
    そういう意味では常に完全一致である必要性は低いと判断。
    常に同じではないという意味では、万が一、データを間違って削除した場合も、
    復旧できる可能性があるとも言える。


ということで、結果的にソフトウェアRAID(ミラー)はやめて、
rsync による運用にすることに。
写真データなどのようなデータの中でも重要なものを取り扱っているのですが、
頻繁に書き換えるわけではないので、rsync を利用した別ディスクへのコピーは
1日1回、夜中に走らせています。

crontab の内容。
# crontab -l
0 4 * * * /export/backup/backup.sh > /dev/null


backup.sh では、rsync によるディスク間のコピーも行っていますが、
その前にメールデータのバックアップも行っています。

私の自宅サーバでは IMAP を運用しており、基本的に複数のPCでも
同じメールが読めるように構成しています。
このデータはOS用のHDDに書き込まれているので、
この時についでにバックアップを取るようにしています。
の通り、date コマンドで曜日を取得しています。
これで、1週間分のメールデータをバックアップするようにしています。

の部分が rsync によるディスクの内容のコピー。
更新が無ければ、一瞬で終わります。

#!/bin/bash

export LANG=C
d=`/bin/date +%a`

cp /var/mail/username /export/backup/mail/username.$d
cp /home/username/mail/* /export/backup/mail/$d/.

/usr/local/bin/rsync -a --delete /export/ /export.backup/



まぁ、これはあくまでも私の自宅サーバの運用上では rsync の利用が
一番適当だったということで、md や LVM を否定するわけではありません。


最新の画像もっと見る

コメントを投稿