daemonfreaks.com

ハイパーバイザ型仮想化ソフト事始め その4 NetBSDでXen/Dom0とRAID構築編

posted by jun-g at Sun, 08 May 2011 14:42 JST

前回の続き

NetBSDのインストール

まずはNetBSD 5.1/amd64をインストール。普通にインストールCDから起動してインストール先をUSBメモリにしてインストールするだけで完了。

…とはいかず。ML110 G6のオンボードLANがNetBSDで認識されなかった。VM用にPlanexのLANアダプタを増設してあってそちらは認識されたので無事インストールできた。

PLANEX PCI-EX 1000BASE-T LANアダプタ  GPE-1000T

PLANEX PCI-EX 1000BASE-T LANアダプタ GPE-1000T

インストール後、USBから問題なくブートする事を確認。NetBSDを初めて触ったのでFreeBSDとの違いにやや戸惑う。cvsupすら無いのか。でもって最新のpkgsrcをcvsからcheckoutして下準備。USBメモリの書込速度が遅いことも手伝ってめちゃくちゃ時間がかかった。

Dom0の構築

4月上旬に最新のXen4.1がpkgsrcに登録されたことを知り早速インストールしようとしたが、pkgsrcのMakefileを見るとNetBSD-currentでしか使えないみたいだった。残念。

というわけで、pkgsrcに登録されている一つ前のバージョンであるXen3.3を使う事にした。インストールおよびセットアップは以下のページを参考にした。

NetBSD/xen環境の構築 64bit編

Xenのインストール及び設定が完了し、無事Dom0が起動していることが確認できた。

# xm list
Name                                        ID   Mem VCPUs      State   Time(s)
Domain-0                                     0   512     1     r-----     10.3

RAID10の構築

続いてRAID10の構築。 NetBSDでは標準で RAIDframe という機能が搭載されていて、これを使ってRAIDを構築する。

FreeBSDでRAID10を構築した際はgmirrorでRAID1アレイを複数作成し、それらをgstripeでRAID0に束ねるという方法を使ったが、NetBSDでも同様の方法で構築する、とraidctl(8)のマニュアルに書いてあったのでその通りにする。RAID構築にあたっては下記のページを参考にした。

Raidframe: ソフトウエア RAID 1 の設定例

まずはRAID1でraid0とraid1(ややこしいがそれぞれデバイス名)の設定ファイルを作成。

# cat /etc/raid0.conf
START array
1 2 0

START disks
/dev/wd0e
/dev/wd1e

START layout
128 1 1 1

START queue
fifo 100

# cat /etc/raid1.conf
START array
1 2 0

START disks
/dev/wd2e
/dev/wd3e

START layout
128 1 1 1

START queue
fifo 100

次に実際にRAID1アレイを構築して初期化。

# raidctl -C /etc/raid0.conf raid0
# raidctl -I 0 raid0
# raidctl -iv raid0
# raidctl -C /etc/raid1.conf raid1
# raidctl -I 1 raid1
# raidctl -iv raid1

でもってdisklabelを設定してnewfsして使えるようにする。disklabelはこんな感じ。

# disklabel raid0
# /dev/rraid0d:
type: RAID
disk: raid
label: fictitious
flags:
bytes/sector: 512
sectors/track: 128
tracks/cylinder: 8
sectors/cylinder: 1024
cylinders: 1907739
total sectors: 1953524992
rpm: 3600
interleave: 1
trackskew: 0
cylinderskew: 0
headswitch: 0           # microseconds
track-to-track seek: 0  # microseconds
drivedata: 0

4 partitions:
#        size    offset     fstype [fsize bsize cpg/sgs]
 a: 1953524992         0     4.2BSD      0     0     0  # (Cyl.      0 - 1907739*)
 d: 1953524992         0     unused      0     0        # (Cyl.      0 - 1907739*)

raid1のdisklabelも同じ内容。続いてRAID0の構築。raid0とraid1を束ねる。

# cat /etc/raid2.conf
START array
1 2 0

START disks
/dev/raid0a
/dev/raid1a

START layout
128 1 1 0

START queue
fifo 100

# raidctl -C /etc/raid2.conf raid2
# raidctl -I 2 raid2
# raidctl -iv raid2

あとは同じようにdisklabelを書きこんでnewfsして完了。マウントしてファイルの読み書きが出来ることを確認。

しかし再起動してみるとraid2が認識されない。どうもautoconfigというモードを有効にしないといけないらしいのでautoconfigを有効にする。

# raidctl -A raid0
# raidctl -A raid1
# raidctl -A raid2

raid0とraid1はしなくても良かったのかもしれないが念の為。これで再起動しても自動的にraid2が認識されるようになったので、/etc/fstabにマウントの設定を追加して作業完了。

# echo '/dev/raid2a /pub ffs rw 1 2' >> /etc/fstab

続く。