ログ日記

作業ログと日記とメモ

ソフトウェア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