2008/10/16

あれげメモ:LinuxでHDDを2台追加してRAID 5ボリュームを造る

例によってDebian etchのファイルサーバのディスクを再構成したので作業記録を取ってみた。

現在500GBのディスク/dev/sdd1に/homeパーティションを切ってあるのだが、これをRAID5のディスクアレイにしたい。でもディスクは/dev/sdaと/dev/sdbの2台しか買ってない……という貧乏くさい状況で、元のデータを100%保持したRAID5のアレイを造るのが今回の目的。デバイスファイル名がしっちゃかめっちゃかなのは、ちまちまディスクを買い足しているため、認識順序がとんでもないことになっているからで他意はない。当然、こんなややこしいことはしないで済むならそれに越したことはないので、キチンとバックアップを取ってから行う方が好ましいことは言うまでもない。

まずは増設用に買い足したディスクにLinux RAID autodetect(パーティションタイプfd)のパーティションを切る。この辺は特に面倒くさい作業ではないが、唯一注意すべき点は、元データが入っているパーティションと同じか、もしくはそれ以下のサイズで作成することだ。後で元データの入っているディスクをアレイに追加するときに(元データのパーティション)<(増設ディスクのパーティション)だと、アレイにディスクを追加できない。

お次にディスクアレイを作成するが、ここで元データの入っているディスクをアレイに含めてしまうと一巻の終わりだ(データが全部飛ぶ)。Linuxのmdディスクアレイでは「縮退状態のディスクアレイを作成する」という器用な真似ができるので、とりあえずそんなアレイを拵えておく。今回は性能は必要ないので、チャンクサイズを調整したりはしない(デフォルトの64kbだとたぶんシーケンシャルアクセスが遅いので、性能を追求する人は調整に手間を掛けてもいいだろう)。

# mdadm --create /dev/md0 --level 5 --raid-devices 3 /dev/sd[ab]1 missing

さて、この縮退状態のアレイは普通に読み書きができるので、まずは今後の管理の都合を考えてLVM2の論理ボリュームを作成することにする(必要がなければそのままフツーにファイルシステム拵えてコピーすれば良いんだけど)。アレイのサイズが1TBなのに論理ボリュームサイズが500GBなのは特に他意はない。

# pvcreate /dev/md0
# vgcreate homevg /dev/md0
# lvcreate -n homelv -L 500G homevg

元のデータをコピーする。ファイルサーバではデータ領域にはXFSを使っているので、xfs_copyコマンドで一発コピーができる。/homeにアクセスするプロセス(Sambaとか)を止めておいて(アンマウントするのが理想的だが)コピーをすればいい。

# xfs_copy /dev/sdd1 /dev/homevg/homelv

ここまでは元データは壊れていないので何度でもやり直しが利くが、この先は元データを破壊する作業になるのでくれぐれも注意すること。まずはアレイをマウントして中を覗いてみる。この段階で失敗していたら振り出しに戻ってやり直さなきゃいけない。ちなみに、この段階ではアレイは縮退状態のままなのでディスククラッシュ一発で中のデータが壊れるということは常に念頭に置いて作業を続けること。

mkdir /tmp/mnt ; mount -t xfs /dev/homevg/homelv /tmp/mnt

とりあえずアレイの中身もマトモそうに見えたら、次はいよいよ元データを破壊する作業になる。(リスクを覚悟できる向きはこの段階で/dev/homevg/homelvを/homeにマウントし、各種サービスも再開しておくとサービスダウン時間が短くなって便利かも)、パーティションを切り直してLinux RAID autodetectなパーティションを作成する。

そして、アレイにディスクを追加して冗長性を持たせる。

# mdadm /dev/md0 --add /dev/sdd1

これで元のディスクがアレイに追加され、ディスクがしきりにガリガリ鳴って同期処理が始まる。同期処理の進捗状況は/proc/mdstatを見ればわかるので、処理が終わるまで数時間~数十時間待つ。

同期が終われば分散パリティ付きストライピングのアレイができている算段になるので、後はvgextendしてlvextendしてxfs_growとかすればオンライン領域拡張でディスクをフルに使えるはず。LVMスナップショット用の領域に取っておくのも良いかも知れない。

Powered by ScribeFire.

0 件のコメント: