そこでwubiでのインストールによるlupin環境では動かすことができなかった
Xen仮想環境をUbuntu 14.04で使ってみることにしました。
DVDブートしてUbuntu 14.04専用PCを仕立てるところまでは省くとし、
ここではXen導入から書くことにします。
まずは以下を実行してホスト環境のセットアップです。
# apt-get install xen-hypervisor-amd64 # update-grub # rebootブートメニューで[Ubuntu GNU/Linux, with Xen hypervisor]が自動起動されるようになり、
これでホストOS(Domain0)環境が整います。
ホストOSはもちろん何の変哲もないLinux環境として引き続き普通に使えます。
そして設定ファイル"/etc/xen/xend-config.sxp"については、
(network-script network-bridge)の行が存在していることを確かめておきます。
次にゲストOS(DomainU)のインストールツールを導入します。
# apt-get install virtinst # apt-get install virt-viewer
続いて仮想ネットワークの準備です。
設定ファイル"/etc/network/interfaces"の末行に以下を追加します。
auto br0 iface br0 inet dhcp bridge_ports eth0再起動するとネットワーク接続にeth0インターフェイスを直接使うのを止めて、
代わりにbr0インターフェイスを使用するようになります。
br0とeth0の間に仮想スイッチングハブを挿んで、
そこにゲストOSもつなげられるようにするイメージです。
ところでUbuntuではNetworkMangerなるデーモンが動いていて
それがネットワークの管理をしてくれるようです。
先に直接設定ファイルを触ってしまいましたが、これらが干渉する可能性があるようです。
私の環境ではネットワークが頻繁に切れ(そういう通知が画面右上に出てくる)ました。
ということでNetworkMangerは、以下を実行して止めておいた方が良さそうです。
# stop network-manager # echo "manual" > /etc/init/network-manager.override
いよいよゲストOSのインストールです。
が、その前に完全仮想化か準仮想化を選択しなければなりません。
前者はCPUに支援機能が必要で、後者はそれなりに対応したゲストOSが必要になります。
Intel VTやAMD-Vが使えるのなら、深く考えず完全仮想化でいいと思われます。
ということで完全仮想化でインストールにかかります。以下を実行します。
# mkdir -p /opt/xen/<仮想マシン名> # cd /opt/xen/<仮想マシン名> # virt-install --connect=xen:/// --hvm --name <仮想マシン名> --ram <メモリサイズ(単位:MB)> --disk <仮想HDDとなるファイル名>,size=<仮想HDDのサイズ(単位:GB)> --cdrom=<インストールDVD(ISOイメージファイル or 物理ドライブのデバイスファイル)>この後virt-viewerが立ち上がりで仮想マシンの画面が表示されるので、
普通のPCにインストールするのと同様の感覚で作業が進められます。
もし何らかの理由でインストールを途中止めした場合、
同じ仮想マシン名で仮想マシンを作ろうとしてもエラーになります。
その場合は以下を実行して一旦削除する必要があります。
# rm /etc/libvirt/libxl/<仮想マシン名>.xml # reboot
さて、今回私はホストOSと同じUbuntu 14.04をゲストOSとしてインストールしましたが、
インストールが完了した流れでそのままある程度の設定を行います。
以下を実行してrootユーザの設定を行い、
sshサーバを立ち上げ、シリアルコンソールを設定し、終了させます。
$ sudo su - # passwd # exit $ su - # apt-get update # apt-get install openssh-server # update-rc.d ssh defaults # apt-get install vim # cd /etc/init/ # cp tty1.conf ttyS0.conf # sed -e 's/tty1/ttyS0/' < tty1.conf > ttyS0.conf # shutdown -h nowなお、ゲストOSのIPアドレスが分からないときに、
最後の砦となるのがシリアルコンソールになります。
インストールできたゲストOSを普段使えるようにします。
以下を実行してxlコマンドで操作できるようにします。
# virsh -c xen:/// domxml-to-native xen-xm /etc/libvirt/libxl/<仮想マシン名>.xml > /etc/xen/<仮想マシン名>この後は
# xl create -c /etc/xen/<仮想マシン名>を実行することでゲストOSが立ち上がります。
ここで現れるコンソールはゲストOSのシリアルコンソールで、
ちゃんと設定していないと何も出ません。
ネットワーク経由での接続のみが頼りとなります。
なお、このコンソールを閉じるには[crrl]+[']']を押します。
ちなみに、xlコマンドには多数のサブコマンドがありますが、
とりあえず以下を覚えておきましょう。
- xl list
- 稼働中OS(ホスト+ゲスト)の一覧
- xl shutdown <仮想マシン名>
- ゲストOSの終了
- xl destroy <仮想マシン名>
- ゲストOSの強制終了
- xl console <仮想マシン名>
- 稼働中のゲストOSにシリアルコンソールで接続
- xl create /etc/xen/<仮想マシン名>
- ゲストOSを起動
- xl create -c /etc/xen/<仮想マシン名>
- ゲストOSを起動してシリアルコンソールを開く
- xl top
- 稼働中OSのリソース状況
最後に仮想マシンの設定を直すため、
"/etc/xen/<仮想マシン名>"ファイルを編集します。
メモリ(memory)やCPU数(vcpus)はホストマシンに合わせて調整すればいいでしょう。
他でおすすめなのはHDDとネットワークの追加です。
disk = [ "file:<仮想HDDとなるファイル名のフルパス>,hda,w", ",hdc:cdrom,r" ]を
disk = [ "file:<仮想HDDとなるファイル名のフルパス>,hda,w", ",hdc:cdrom,r", "phy:<物理HDDのパーティションのデバイスファイル>,hdb,w" ]のように変更すると、指定したHDDのパーティションが
そのままゲストOSからアクセスできるようになります。
ゲストOSで以下のように実行すれば"/opt2"にマウントできます。
# mkdir -p /opt2 # mount -t ext4 /dev/xvdb /opt2ただし、ホストOSで未マウントである必要があります。つまり排他使用ということです。
システムは小さな仮想HDDにしておけばバックアップや移動が容易になりますし、
大きな物理パーティションを作業領域にすればパフォーマンスが上がりますし、
多種のゲストOSから同一の大きな物理パーティションを切り替えて使うなんてこともできます。
ネットワークについては
vif = [ "mac=xx:xx:xx:xx:xx:xx,bridge=br0,script=vif-bridge" ]を
vif = [ "mac=xx:xx:xx:xx:xx:xx,bridge=br0,script=vif-bridge","bridge=virbr0,script=vif-bridge" ]に変更しておきます。
virbr0はローカルマシン内の閉じたネットワークです。
ホストOSがDHCPサーバとなり、
"/var/lib/libvirt/dnsmasq/default.leases"ログファイルに
ホスト名とMACと、それに配布したIPアドレスが記録されるので、
ゲストOSのIPアドレスを探ることができ、
万一シリアルコンソールでつながらなくなったときに頼みの綱のIPアドレスが分かります。
なお、ホストOSのDHCPサーバは
# virsh net-edit defaultで設定ファイルを編集できます。
ちなみに複数のネットワークポートを搭載するマシンだと
br1を追加するようなこともあるでしょうが、
その場合はmacアドレスも設定した方がいいようです。
書いていないと、起動毎にmacアドレスが変わってしまうのか、
DHCPサーバからもらうIPアドレスが毎回違うなんてことになります。
VMwareなどと比べてはるかにとっつきにくいXenですが、
非常に便利ですので使いでがあります。
0 件のコメント:
コメントを投稿