何か決めなきゃ駄目ですか。



俺が決めたら、貴方はどうするんだい。

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

FreeBSD 8.1 + HAST

FreeBSD 8.1でHASTが普通に使えるとか。
ZFSと組み合わせてHAST + ZFS + iSCSI + ucarpが出来ると楽だろうなー、と思って、た。

http://wiki.freebsd.org/HAST
man hastd(8)

とりあえず、基本動作から見ていく。
ucarpは後回し。


準備ノード(1はfreebsd8.0からのupgrade。関係ないけど。)
ノード1 : FreeBSD 8.1-p0 hostname=hast-01
ノード2 : FreeBSD 8.1-p0 hostname=hast-02


手順はこんな感じか。
1.ノード1,2の/etc/hast.confに設定を書く。

resource hasthd1 {
local /dev/da1
on hast-01 {
remote 192.168.1.49
}
on hast-02 {
remote 192.168.1.48
}
}



2.ノード1,2でcreate。

hast-01# hastctl create hasthd1


hast-02# hastctl create hasthd1


3.ノード1,2でhastdの開始。

hast-01# echo hastd_enable="YES" >> /etc/rc.conf
hast-01# /etc/rc.d/hastd start


hast-02# echo hastd_enable="YES" >> /etc/rc.conf
hast-02# /etc/rc.d/hastd start


4.ノード1をprimaryに。

hast-01# hastctl role primary hasthd1


5.ノード2をsecondaryに

hast-02# hastctl role secondary hasthd1


6.確認コマンド

hast-01# hastctl status
hasthdd:
role: primary
provname: hasthdd
localpath: /dev/da1
extentsize: 2097152
keepdirty: 64
remoteaddr: 192.168.1.49
replication: memsync
status: complete
dirty: 0 bytes


hast-02# hastctl status
hasthdd:
role: secondary
provname: hasthdd
localpath: /dev/da1
extentsize: 2097152
keepdirty: 0
remoteaddr: 192.168.1.48
replication: memsync
status: complete
dirty: 0 bytes






hast.confのremoteの表記は、manによれば以下のどれでもいいらしい。

0.0.0.0
0.0.0.0:8457
tcp://0.0.0.0
tcp://0.0.0.0:8457
tcp4://0.0.0.0
tcp4://0.0.0.0:8457



IPv6では動かない。
↓こうなる。

# cat /etc/hast.conf
resource hasthddv6 {
local /dev/da2
on hast-01 {
remote tcp6://2001:380:e08:f7::49
}
on hast-02 {
remote tcp6://2001:380:e08:f7::48
}
}
# hastctl status
hasthddv6:
role: init
provname: hasthddv6
localpath: /dev/da2
extentsize: 0
keepdirty: 0
remoteaddr: tcp6://2001:db8:e08:f7::48
replication: memsync
dirty: 0 bytes
# hastctl role primary hasthddv6
# hastctl status
[ERROR] Error 57 received from hastd.



どこかにIPv6じゃ動かない、って書いてあったかなぁ・・・。

閑話休題。


で、これでブロックデバイス(のようなもの)が共有できたので、primary側でZFS poolを作る。
どちらにせよ、secondary側では/dev/hast/hasthd1が見えないはずなので作れない。

フルパスで指定する。

# zpool create hast-zfs /dev/hast/hasthd1



で、primaryとsecondaryを入れ替える。(手動で。
ノード1をsecondaryに

hast-01# hastctl role secondary hasthd1


ノード2をprimaryに。

hast-02# hastctl role primary hasthd1



で、こうすると元primaryは残念な感じに。

hast-01# zpool status
pool: hast-zfs
state: UNAVAIL
status: One or more devices could not be opened. There are insufficient
replicas for the pool to continue functioning.
action: Attach the missing device and online it using 'zpool online'.
see: http://www.sun.com/msg/ZFS-8000-3C
scrub: none requested
config:

NAME STATE READ WRITE CKSUM
hast-zfs UNAVAIL 0 0 0 insufficient replicas
hast/hasthd1 UNAVAIL 0 0 0 cannot open



新しくprimaryになったhast-02は、/dev/hast/hasthd1が見えるようになっているので、importできる。

hast-02# zpool import -f hast-zfs


とはいえ、直前まで元primaryが使用していたため、-fつけないと無理。

元primaryのhast-01側では、zpool statusするとUNAVAILが残っていてうっとうしいからって、
いきなりzpool destroy hast-zfsするとプロンプト帰ってこなくなるのでよろしく。


もう少し調べる。

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。