labunix's blog

labunixのラボUnix

DRBDいろいろ

■環境は以下。

 DRBDとapache2、pacemaker+heartbeatを連携する。
 http://labunix.hateblo.jp/entry/20130724/1374594232

■既存のDRBD+heartbeat+pacemaker連携の設定をバックアップ

$ cat check.txt 
	configure
	verify
	show

$ sudo crm < check.txt > backup_`date '+%Y%m%d'`.txt 2>> err.log 
$ sudo cibadmin -Q > backup_`date '+%Y%m%d'`.xml
$ sudo grep -v "^#\|^\$" /etc/ha.d/ha.cf > backup_`date '+%Y%m%d'`_ha.cf.bak
$ ls /etc/drbd.d/
drbd0.res  global_common.conf
$ cp /etc/drbd.d/drbd0.res backup_`date '+%Y%m%d'`.drbd0.res.bak

■DRBDの再起動

$ cat restart_drbd.txt 
	resource
	restart ms_drbd0

■間違ってinitスクリプトから再起動するとcrmでの認識がおかしくなる。。。

$ sudo /etc/init.d/drbd restart
...
[ ok ] Starting DRBD resources:[ d(drbd0) s(drbd0) n(drbd0) ].

$ sudo crm_mon -A -1 | tail -2
Failed actions:
    res_fs_start_0 (node=xen-debian1, call=19, rc=1, status=complete): unknown error

■以下のようにクリアする。

$ sudo crm
crm(live)# resource 
crm(live)resource# cleanup res_fs xen-debian1
Cleaning up res_fs on xen-debian1
Waiting for 2 replies from the CRMd.. OK
crm(live)resource# quit
bye

$ sudo crm < restart_drbd.txt

■以下はセカンダリの結果

$ grep "^ *[0-9]\:" /proc/drbd
 0: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-----

■状態確認

$ sudo drbdadm dstate drbd0
UpToDate/UpToDate

$ sudo drbdadm cstate drbd0
Connected

$ sudo drbdadm role drbd0
Secondary/Primary

$ man drbdadm | grep -A 1 "[cd]state\$\|role\$"
       role
           Shows the current roles of the devices (local/peer). E.g. Primary/Secondary
--
       cstate
           Shows the current connection state of the devices.
--
       dstate
           Show the current state of the backing storage devices. (local/peer)

■DRBDのリソースを削除したくなったら。
 同期してセカンダリにして状態を確認。
 peerから接続を切り離して、localとの接続を切断、ダウンでpeer/localを再切断を試みてワイプ。
 作成時はdrbdsetupでcreate、attach、syncer、connect、dstae
 以下の「-d」は「--dry-run」なので実際には何もしない。

$ sudo drbdadm -d syncer drbd0
$ sudo drbdadm -d dstate drbd0
$ sudo drbdadm -d secondary debd0
$ sudo drbdadm -d dstate drbd0

$ sudo drbdadm -d disconnect drbd0
$ sudo drbdadm -d detach drbd0
$ sudo drbdadm -d down drbd0 # disconnect and detach
$ sudo drbdadm -d wipe-md drbd0

■wipe-mdのマニュアルが無いがメタファイルを削除する。

$ sudo drbdadm -d wipe-md drbd0
drbdmeta 0 v08 /dev/sdb1 internal wipe-md 

$  man drbdadm | grep -A 1 "disconnect\$\|detach\$\|down\$\|wipe-md\$"
       detach
           Removes the backing storage device from a DRBD resource's device.
--
       disconnect
           Removes the network configuration from the resource. The device will then go into StandAlone state.
--
       down
           Is a shortcut for disconnect and detach.