LVMでミラーリング

LVMにはミラーリングやストライピングといった機能がある。
って最近知った。
とりあえずデータが飛びかけた今回の障害から復旧するにあたって、LVMで構築したパーティションをミラーリングしようと思っていて調べていて気づいた。
以前と同じようにmdadmを使ったソフトウェアRAIDでミラーリングしようと思っていたけど、LVM自前のミラーリング機能を使った方が楽そうなのでこっちにした。

とりあえず、ミラーリングなのでディスクは最低2本いる。
で、同一ボリュームである必要があるようだ。
ということで、

# pvcreate /dev/sda1 /dev/sdb1
# vgcreate vg1 /dev/sda1 /dev/sdb1

みたいな感じで。
で、ミラーリングするのは至極簡単なようだ。
普通に論理ボリュームを作成するのと同じような感じで、-m 1とかつければいいみたい。

# lvcreate -L 30G -n lv1 -m 1 --alloc anywhere vg1

みたいな。
–alloc anywhere ってのが謎だが、これがないとLVMのミラーリングはディスクを3個必要になるらしい。基本は。
というのは、一つはログ用で用いるようだ。
で、このログを配置する先を、一つのディスクを利用しないで適当なファイルに書き出すようにするのがこのオプションらしい。
っていうのも、allocオプションの詳しい話がman lvcreateじゃ出てこないからよくわからん。
単純にこのオプションを使わずに、–mirrorlogオプションを使った方が平和かもしれない。
–mirrorlogオプションでは、以下のようになる。

  • disk ミラーリングしてるディスクとは異なるディスクにログを保存
  • core in-memoryログ
  • mirrored ログ自体をミラーリング。保存先はどこだろね。

で、論理ボリュームをミラーリングにしたりするのは、作成時だけじゃなくてすでに稼働している状態からでも簡単に行える。

lvconvertで似たような感じで指定すればいい。
mountしている状態でも、オンラインミラーリング化なんてことも問題なくできた。

# lvconvert -m 1 --alloc anywhere /dev/ms09/ms09

これで、普通の論理ボリュームがミラーリングされたボリュームに化けた。
このLVMの柔軟性はすばらしいというほかない。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>