daemonfreaks.com

ハイパーバイザ型仮想化ソフト事始め その5 FreeBSDでXen/DomU構築編

posted by jun-g at Mon, 09 May 2011 01:05 JST

前回の続き

Dom0とRAIDの構築はできたのでいよいよゲストOSのインストール。手始めにFreeBSD/amd64をインストール。FreeBSDは完全仮想化に対応しているので、環境さえ作ってしまえば普通にインストール・起動できる。

ブリッジネットワークの設定

前回の書き漏れ。VM用にブリッジネットワークを構成する。

# cat /etc/ifconfig.bridge0
create
!brconfig bridge0 add msk0 up

このファイルを用意しておけば起動時に自動的にブリッジネットワークが構成されるようになる。「msk0」が物理ネットワークインターフェースの名前。

HDDイメージの作成

ゲストOSをインストールするHDDイメージの作成。

# dd if=/dev/zero of=/pub/freebsd.img bs=1k count=10M

これで10GBのHDDイメージが出来る。

あと、FreeBSDのインストールCDイメージもダウンロードして同ディレクトリに配置しておく。

DomUの設定

次に設定ファイルの作成。Xenの設定ファイルはpythonで記述するみたい。最初DomU起動時にコンソールに接続できないエラーが出たりしてハマったが、調べてみるとどうもFreeBSDはコンソール接続にまだ対応できていない?ようなのでVNCを使うように設定。Xen/DomUのVNC設定については以下のページが参考になった。

XenのDomUのコンソールを他のPCからVNCで見る方法 - tea2kaのそのひぐらし

設定ファイルは以下のように記述した。

# cat /pub/xen_domu_freebsd
kernel = "/usr/pkg/lib/xen/boot/hvmloader"
builder = "hvm"
memory = 512
name = "fbsd_amd64"
vif = ["mac=12:34:56:78:90:ab,bridge=bridge0"]
device_model = "/usr/pkg/libexec/qemu-dm"
disk = ["file:/pub/freebsd.img,hda,w", "file:/pub/FreeBSD-8.2-RELEASE-amd64-bootonly.iso,hdc:cdrom,r"]
boot = "d"
vnc=1
vnclisten="0.0.0.0"
vncunused=0
vncdisplay=0
vncpasswd=""

設定ファイルが準備できたらDomU起動。

# xm create -c /pub/xen_domu_freebsd

相変わらず

xenconsole: Could not read tty from store: No such file or directory

というエラーメッセージが出るが無事に起動しているので、VNCクライアントをインストールした他のPCから接続する。

$ vncviewer xenserver

xenserverってのはDom0のホスト名ね。VNCクライアントの画面が開くとFreeBSDのインストーラが起動している状態になる。後は普通にインストールするだけ。

インストールが終わったら設定ファイルの「disk」の項目からインストールイメージの記述を削除し、「boot」の行も削除しておく。


以上でFreeBSDをDomUにインストールすることが出来た。後は物理PCにインストールした際と同様に環境を構築していくだけ。

今回はFreeBSD/amd64をインストールしたが、FreeBSD/i386だと準仮想化にも対応しているようなので、こちらもいずれ試してみたい。

…しかし、現状のNetBSD/Dom0ではオンボードLANが使えないことやXen4.1がまだ使えない等の不満が残っている。そして、Windowsが必要という点は少し嫌だがGUIクライアントから簡単にVMを作成・操作できる点はやはりXenServerが便利だと感じた。

で、再度XenServerで環境構築し直すことにした。RAIDの問題はオンボードRAIDの機能を使えば解決しそう。あとディスク容量をもう少し確保したいのでRAID10じゃなくてRAID5にしたい。

仮想環境構築の旅はまだまだ続く…。

終わり。

ハイパーバイザ型仮想化ソフト事始め その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

続く。

ハイパーバイザ型仮想化ソフト事始め その3

posted by jun-g at Sat, 07 May 2011 14:23 JST

前回の続き

USBメモリへのインストール

まずはXenServerをUSBメモリにインストール。HDDへのインストールと同様にインストールCDからブートして、インストール先にUSBメモリを指定するだけ。VM用のストレージは後でRAID化するので4つのHDDのうち一つだけを選択。

順調にインストールが進む…はずだったが、USBメモリの書込速度が遅いせいかインストール中にエラーになってしまった。何度か試してみたものの必ずエラーになってしまうので、諦めてHDDをUSB接続してそちらにインストールし、インストール後にUSBメモリにコピーすることにした。

HDDへのインストール完了後、再度インストールCDから起動し、インストーラの起動メニューでshellモードに落ちてからddコマンドを使ってHDDの内容をUSBメモリにコピー。

コピーが終わったら、下記ページを参考にしてUSB bootできる状態にする。

XenServer on USB その2 | ni kvel

これで、無事USBメモリにインストールしたXenServerを動作させることができた。

RAID10化

続いてストレージ部分のRAID10化。この作業は下記のページを参考にした。

XenServer を RAID10 化しました

ほぼ書かれている通りに作業して、これにて構築完了。とはいかず、RAID構築中に勝手にリブートしてしまう事象が発生。何度やってもダメ。ここで心が折れて諦めてしまった。

よく考えるとML110 G6にはオンボードRAIDが付いてるのでさっさとそれを使ってRAIDを構築すれば良かったのに、この時はRAIDが付いてる事にまったく気がついてなかった。

という訳で、やっぱり オープンソース版のXen を使って構築しようという思いにいたり、Dom0(XenのホストOS)には NetBSD 5.1 を使う事にした。

続く。

ハイパーバイザ型仮想化ソフト事始め その2

posted by jun-g at Sun, 24 Apr 2011 16:00 JST

前回の続き 。とりあえずインストールして簡単に触ってみたところまで。

Citrix XenServer

  1. インストールは簡単。
  2. 接続したHDDをインストール時に全て選択しておけば、LVMの論理ボリュームとなり1つのHDDとして見える。便利。
  3. XenCenterというWindowsで動作する管理ソフトが必須という事実を知って驚愕した。 悪あがきとして OpenXenManager というソフトを見つけてきて試してみたが、メモリの設定がうまく出来なかったので断念してWinXPの入ったノートPCにXenCenterをインストールした。
  4. VMの設定は超簡単。

VMware vSphere Hypervisor

  1. インストール途中でエラーになってインストールに難儀した。ググって見つけたページ ProLiant ML110 G6 と VMware ESXi 4.1 によると、インストーラーがML110 G6のDVDドライブを認識しないとの事だったので、USBでCDドライブを接続してそちらからインストールすることで事無きを得た。
  2. こちらもWindowsで動作する管理ソフトが必須。無念。
  3. HDDは個別の管理。単一の大きなボリュームとして扱うにはハードウェアRAIDを組むしか無さそう。
  4. VMの設定は簡単だが、VMから起動するゲストOSからも内蔵DVDドライブが見えないようなのでCDからのインストールはとても面倒。

Microsoft Hyper-V Server 2008 R2

  1. インストールイメージの容量がやたらデカイのでちょいビビりながらDVDに焼いて起動してみると、まさかのWindowsのインストールが始まった。容量がデカイ原因はこれかー!
  2. Windowsが入るんならもしかしてクライアントソフトがいらないんじゃ? 1台で完結できるのならHyper-Vが最強じゃ? と思って一瞬だけニヤニヤしたが、インストール後に起動してみるとそれらしいメニューは見付けられず、よくよく調べてみるとやはり管理ソフト必須、しかもVista以降のみ対応だった。
  3. XPしか持ってないので評価もできず断念。悲しー。

ということで、上記3つを試して(厳密には2つしか試せてない)みたところ、XenServerがとても使いやすそうに感じたので、OSはひとまずXenServerを使うことにした。

次に、

  • HDD容量はVM用に沢山置いときたいのでホストOSはUSBメモリにインストールしたい
  • LVMは手軽だけど冗長化したいのでRAID組んどきたい

と、試してみたいことが出てきたので、XenServerでこの2点を試してみることにした。

つづく。