ソフトウェアRAIDとLVMとDRBD作業ログ
まだ途中。…失敗。
RAIDの設定。
aptitude install mdadm /etc/init.d/mdadm-raid stop # これを実行しないと後で # mdadm: device /dev/sda1 not suitable for any style of array # とエラーが出た。
ディスクを100Gの同じサイズでフォーマットする。
※ 両方とも空のディスク。データがある場合は手動でパーティションを作る。
※※ 二個作ったけどLVMを使うなら不要かも。後で変える。
#/bin/bash for device in /dev/sda /dev/sdb; do /sbin/sfdisk $device << EOF ,,L EOF /sbin/sfdisk $device -uM << EOF ,102400,fd ,102400,fd ,,E ; ,10240,S EOF done
RAIDアレイの設定。
aptitude install mdadm mdadm -C /dev/md1 -l1 -n2 /dev/sd[ab]1 mdadm -C /dev/md2 -l1 -n2 /dev/sd[ab]2
/etc/mdadm/mdadm.conf のDEVICEとARRAYの初期値があれば削除して変更。
echo "DEVICE /dev/sd[ab][12]" >> /etc/mdadm/mdadm.conf mdadm -Ds >> /etc/mdadm/mdadm.conf # 次からは # /etc/init.d/mdadm-raid start
DRBDの設定は http://d.hatena.ne.jp/n314/20100325/1269503526 の通り。
ramの部分をmdに変える。
LVMの設定。
後々に /home にマウントするつもりで。
aptitude install lvm2 pvcreate /dev/drbd1 vgcreate vg1 /dev/drbd1 lvcreate vg1 -n lvhome -L 90G
警告が出た。
Found duplicate PV iOYOJrFdmLqL6wXD2Cq6k8Eb8Bp7aGsQ: using /dev/drbd1 not /dev/md1 PV VG Fmt Attr PSize PFree /dev/drbd1 vg1 lvm2 a- 100.00g 0
ここでもう一台の方にlvmをインストールすることを忘れていたので入れてみると、ここでも警告。
でも正しい方が認識されている模様。
http://www.drbd.jp/users-guide/ch-lvm.html
http://d.hatena.ne.jp/dayflower/20090115/1231989029
この辺のことを後で調べる。
/dev/vg1/lvhome は自動で生成された。
いよいよファイルシステムを作ろうと思ったが…
ここで OCFS2 は大変なので ext3 で。
両方アクティブにしてしまっているので困った。
drbdadm -v secondary md1 は
1: State change failed: (-12) Device is held open by someone Command 'drbdsetup 1 secondary' terminated with exit code 11
と言われてダメだった。
上にLVMの設定してしまった後だからか。
mkfs.ext3 /dev/vg1/lvhome mount /dev/vg1/lvhome /mnt/
ここで
echo foo > /mnt/foo
とかやっても、ファイルシステムがext3なので片方のノードには反映しない。
一度umountしたら確認できるけども。
LVMを止めたら降格させられることに気付いたのでやってみる。
umount /mnt/ /etc/init.d/lvm2 stop drbdadm -v secondary md1 /etc/init.d/drbd status
drbd driver loaded OK; device status: version: 8.3.7 (api:88/proto:86-91) GIT-hash: ea9e28dbff98e331a62bcbcc63a6135808fe2917 build by root@buildd, 2010-01-18 15:33:29 m:res cs ro ds p mounted fstype ... sync'ed: 2.4% (99952/102400)M 1:md1 SyncTarget Secondary/Primary Inconsistent/UpToDate C 2:md2 Unconfigured
いけた。
今度は /etc/init.d/lvm2 start が失敗。DRBDがSecondaryだとLVMをアクティブにはできないみたい。/dev/vg1 も消えてしまった。
lvm2 stop の後に /etc/init.d/lvm2 start を 二回 実行したら /dev/vg1 が復活した。
initスクリプトを見て何が起こっているのか後で調べる。
まだ色々エラーが出てLVMのスナップショットが作れなかった。
cat /proc/mdstat で見るとresync状態。
DRBDを起動しているとそっちのsyncにリソースを使うのか何かが競合しているのかraidのresyncがやたら遅い。
....で、
なんだか色々いじっているうちに成功した。
lvcreate -s -L 1G -n snap_lvhome2 /dev/vg1/lvhome ls /dev/vg1 lvhome snap_lvhome2 ls /dev/mapper/ control vg1-lvhome-real vg1-snap_lvhome2 vg1-lvhome vg1-snap_lvhome vg1-snap_lvhome2-cow
エラーが出てスナップショットが作れなかったときに、/dev/mapper/vg1-lvhome ファイルが残っていたのがハマりどころだったみたい。
もう一度初めからやらないとよく分からんね。
mount /dev/vg1/snap_lvhome2 /mnt/
スナップショットは成功しているように見えるが、片方で更新されたファイルがスナップショットに反映している…。
よく考えたらLVMの下にDRDBがあってLVMはデータの更新を感知できないわけだから、copy on write が動かないよね…。
色々混ぜすぎてどっちのノードで何をするのか分かりにくいが、LVMを使うのがスナップショット目的なら
という方向でやってみる。
今のLVMが上の状態だとプライマリDRBD側でLVMのスナップショットを取ったら、それもミラーされるねぇ…これは微妙。
あとLVMの上にRAIDってできるんだっけ…LVMでの操作が上のRAIDに影響しておかしなことになるのかな。
LVMはやめて、RAIDの切り離しスナップショットにしようかなぁ…。
mdadm -C /dev/md6 -l1 -n2 -f /dev/sda6 /dev/sda7 mkfs.ext3 /dev/md6 mount /dev/md6 /mnt/md6/ touch /mnt/md6/foo mdadm --fail /dev/md6 /dev/sda7 mdadm --remove /dev/md6 /dev/sda7 touch /mnt/md6/bar mount /dev/sda7 /mnt/sda7 mount /dev/sda7 /mnt/sda7 mount: unknown filesystem type 'linux_raid_member' mount -t ext3 /dev/sda7 /mnt/sda7 ls /mnt/sda7/ foo lost+found umount /mnt/sda7/ mdadm --add /dev/md6 /dev/sda7 mdadm --fail /dev/md6 /dev/sda7 mdadm --remove /dev/md6 /dev/sda7 mount -t ext3 /dev/sda7 /mnt/sda7 ls /mnt/sda7/ bar foo lost+found