LinuxServer RAIDについて その1
RAIDはハードディスクを冗長化する仕組みですが、RAIDにもソフトウェアRAIDとハード
ウェアRAIDの2種類がある
今回はLinuxのソフトウェアRAIDをXen上の仮想マシンを使用して試してみる。
Xenでのディスクの操作
まず仮想マシンにハードディスクを追加する必要があるので以下のようにして追加した。
ゲストOSにディスクをアタッチする
以下ではディスク用のファイル gestos01_d2.img を /dev/xvdb で読み書き可能でアタッチさせる
[root@hostos01 images]# xm block-attach gestos01 file://var/lib/xen/images/gestos01_d2.img /dev/xvdb w
XenでゲストOSにディスクを追加した際の確認方法
以下のコマンドで確認できる。
以下では3つのディスクがアタッチされているのがわかる。
[root@hostos01 images]# xm block-list gestos01 Vdev BE handle state evt-ch ring-ref BE-path 51712 0 0 4 11 8 /local/domain/0/backend/tap/71/51712 51728 0 0 4 13 904 /local/domain/0/backend/vbd/71/51728 51744 0 0 4 14 1004 /local/domain/0/backend/vbd/71/51744
block-list の 先頭のID とデバイス名の関係性
デバイス名とIDは必ず以下のようになる。
これを参考にデバイスを見分ければよい。
/dev/hda 768
/dev/hdb 832
/dev/hdc 5632
/dev/hdd 5696
/dev/sda 2048
/dev/sdb 2064
/dev/sdc 2080
/dev/sdd 2096
/dev/xvda 51712
/dev/xvdb 51728
/dev/xvdc 51744
/dev/hdd 51760
アタッチしたディスクを外す場合
現在のアタッチ状況を確認してみる。
[root@hostos01 images]# xm block-list gestos01 Vdev BE handle state evt-ch ring-ref BE-path 51712 0 0 4 11 8 /local/domain/0/backend/tap/92/51712 51728 0 0 4 13 961 /local/domain/0/backend/vbd/92/51728 51744 0 0 4 14 87 /local/domain/0/backend/vbd/92/51744 51760 0 0 4 15 975 /local/domain/0/backend/vbd/92/51760
ゲストOSに割り当てているディスクをデタッチ(外す)には -f による強制オプションが必要らしい。(アタッチする際もゲストOSが起動していても問題なかった)
[root@hostos01 images]# xm block-detach gestos01 /dev/xvdd Error: Device 51760 (vbd) disconnect failed - Device in use; refusing to close. Usage: xm block-detach <Domain> <DevId> [-f|--force] Destroy a domain's virtual block device.
強制的にデタッチすると成功する(エラーメッセージみたいなものが出るが正常にデタッチされるので大丈夫)
[root@hostos01 images]# xm block-detach gestos01 /dev/xvdd -f Error: Device 51760 not connected Usage: xm block-detach <Domain> <DevId> [-f|--force] Destroy a domain's virtual block device.
確認するとディスクがデタッチされているのがわかる
[root@hostos01 images]# xm block-list gestos01 Vdev BE handle state evt-ch ring-ref BE-path 51712 0 0 4 11 8 /local/domain/0/backend/tap/92/51712 51728 0 0 4 13 961 /local/domain/0/backend/vbd/92/51728 51744 0 0 4 14 87 /local/domain/0/backend/vbd/92/51744
※上記の xm block-detach gestos01 /dev/xvdd -f コマンドでディスクを外した場合の注意点
強制的に外した状態で再度 xm block-attach コマンドで同じ /dev/xvdd をアタッチしようとすると下記のようにエラーになる。
[root@hostos01 images]# xm block-attach gestos01 file://var/lib/xen/images/gestos01_d4.img /dev/xvdd w Error: Device 51760 (vbd) could not be connected. /etc/xen/scripts/block failed; error detected. Usage: xm block-attach <Domain> <BackDev> <FrontDev> <Mode> Create a new virtual block device.
この場合は一度下記のようにアタッチしたいDomUを destroy する必要がある。
[root@hostos01 images]# xm destroy gestos01 [root@hostos01 images]# [root@hostos01 images]# xm list Name ID Mem(MiB) VCPUs State Time(s) Domain-0 0 393 2 r----- 739311.1 gestos02 66 512 2 -b---- 1004.6 gestos02 67 512 2 -b---- 1012.0 gestos03 70 512 2 -b---- 928.5 gestos04 69 512 2 -b---- 870.0
再度DomUを起動する
[root@hostos01 images]# xm create gestos01 Using config file "/etc/xen/gestos01". Using <class 'grub.GrubConf.GrubConfigFile'> to parse /grub/menu.lst Started domain gestos01
追加できた
[root@hostos01 images]# xm block-attach gestos01 file://var/lib/xen/images/gestos01_d4.img /dev/xvdd w [root@hostos01 images]#
とおもったら、以下の用に他のディスクが外れてしまっていた。
なんだか不思議な動きをするものだ。
[root@hostos01 images]# xm block-list gestos01 Vdev BE handle state evt-ch ring-ref BE-path 51712 0 0 4 11 8 /local/domain/0/backend/tap/96/51712 51760 0 0 4 12 44 /local/domain/0/backend/vbd/96/51760
仕方ないので再度すべてのディスクを追加して対応した。
※xm block-detach コマンドの注意点
DomUを destroy した状態で下記の用に実行すると /dev/xvdd だけをデタッチするつもりが
すべてのアタッチしているディスクが外れてしまうことがあるので注意する(DomUを起動した状態で上記の用に強制オプションを指定して外せば大丈夫)
xm block-detach gestos01 /dev/xvdd -f
※Dom0を再起動してもDomUにてディスクをアタッチしておきたい場合
ちなみにDom0を再起動させても設定を有効にしたいなら以下のファイルに追記する必要があるらしい
Dom-0で /etc/xen/ ディレクトリ以下のディスクをアタッチさせたいDomUの設定ファイルに以下の用に追記する(xxxの部分はドメイン名やディスク名を入れる)
[root@hostos01 images]# vi /etc/xen/gestos01 disk = [ "tap:aio:/data/xen/xxx.img,xvda,w","file:/data/xen/xxx_add_disk.img,xvdb1,w" ]
今回はここまでで次回はRAIDを実際に作成していくことにする