Xenの導入&活用法
2
アジェンダ
• Xen概要説明
• Xenのインストール
• インストールスクリプトを使った仮想マシン
の設定
• 手動による仮想マシンの設定
デモ環境のインストール
• デモ機にFedora Core 5を新規インストール – IPアドレスは固定IPアドレスを設定 • IPアドレス:192.168.1.10/24 • ホスト名:server.example.com – HDDのパーティションは自動・全消去 – 「オフィスとプロダクティビティ」は非選択 – 「ソフトウェア開発」「Webサーバー」を選択 • 再起動後、セキュリティはゆるく設定 – ファイアーウォール:Disabled – SELinux:Disabled 参考4
Xenとは?
• 注目を集めている仮想化ソフトウェア
– なぜ? 他と違うから
• Virtual Machine Monitorの実装
– 仮想マシンモニタ
– Hypervisor ハイパーバイザー
• ケンブリッジ大学コンピュータ研究所の
Xenoserverプロジェクトの一環として開発が
スタート
開発体制
ケンブリッジ大学 コンピュータ研究所 Ian Pratt氏が中心 XenSource社 商用サポート 商用管理ソフト Xenコミュニティ 企業6
他の仮想化技術との違い
• 速い!
– 性能が実機と比較で数%落ちるだけ(例外有り)• Xen用に修正したゲストOSを利用
– ハードウェア仮想化支援機能(VT・ AMD-V) を使えば 修正していないOSも利用可能(Windowsも動きます)• ライブマイグレーションが可能
– ダウンタイムなしで他のハードウェアに仮想マシンを移 動可能 – VMwareもVMotionで同様なことが可能• オープンソース
速さの理由
• Paravirtualizing Virtual Machine Monitorを
利用している
– 日本語では「準仮想化仮想マシンモニタ」 – Xen用に修正したゲストOSを利用することで、仮 想化に伴う様々なオーバーヘッドを吸収している – ゲストOSはVMMに対してhypercallすることで 様々な動作を行うように修正される • hypercallはアプリケーションがOSに対して行うシステ ムコールの様なもの8
Xen (Virtual Machine Monitor)
ハードウェア メモリ CPU I/Oデバイス Domain0(VM) 管理用OS 管理用アプリ DomainU(VM) Xen用ゲストOS アプリ VMX Domain(VM) ゲストOS アプリ 仮想化支援(VT) I/Oエミュレータ
Xenの仕組み
Xen用に修正したゲストOS
• オープンソースなOSは次々に対応
– Linux、NetBSD、FreeBSD、Solaris、OpenBSD、 Plan9、Netware• 管理ドメイン(Domain0)対応OS
– Linux、NetBSD(β)、FreeBSD(α)• クローズド製品は未対応
– ハードウェアによる仮想化支援機能を搭載して いない大多数のシステムのためには必要Xenのインストール&
インストールスクリプトを使った
仮想マシンの設定
Xenのインストール
•
パッケージからのインストール
– 検証済みのため、導入が容易 A) ディストリビューション標準のパッケージ B) XenSource配布のパッケージ•
ソースコードからのインストール
– VT等への対応を考慮すると最新版が必要 1. Linuxカーネルの再構築 2. 最適化されたglibcの導入12
FC5 DVD-ROMのマウント
• 自動的にマウントポイントが作成されない
– /media/cdrecorderが作成されない – /etc/fstabにエントリーが作成されない• ゲストOSインストール時にローカルWeb
サーバーを使用したい
– /var/www/html/ディレクトリに直接マウントする1. mountコマンドでマウントを行う
– # mount -t iso9660 /dev/cdrom /var/www/html
Xenパッケージのインストール
• インストールはRPMコマンドを使用 – # rpm -ivh /var/www/html/Fedora/RPMS/○○.rpm 1. 依存パッケージのインストール – sysfsutils – bridge-utils 2. XenとXen対応カーネルのインストール – xen – kernel-xen0 – kernel-xenU デモ14
起動カーネルの設定
• 現在3種類の起動カーネルが存在する 1. FC5標準のカーネル(デフォルト) 2. Domain0のカーネル(Xen使用時に利用) 3. DomainUのカーネル(ゲストOS使用時に利用) 1. 毎回Domain0カーネルで起動するならば /etc/grub.confのdefault設定を変更 – default=2 ←使用したいtitleの位置番号を指定 • 位置番号は0から数え始める 2. Domain0カーネルで再起動 デモDomainUの作成方法
DomainUはゲストOSが動作する仮想マシン – 設定ファイル+ディスクイメージファイル A) xenguest-install.pyスクリプトを使用する – ○インストーラーが使えるので楽 – ×あれこれ沢山入ってしまう – △パッケージカスタマイズすれば構成は変えられる B) yumを使って手動でインストール – ○最小構成で作成可能 – ×手間がかかる16
スクリプトでのインストールの準備
1. DVD-ROMを/var/www/htmlにマウント
– # mount -t iso9660 /dev/cdrom /var/www/html
2. Webサーバーサービスを起動
– # service httpd start3. WebブラウザでDVDへのアクセスを確認
– http://localhost/README4. ディスクイメージ保管先ユーザーを作成
– # useradd xen デモスクリプトを実行
# xenguest-install.py ←スクリプト実行
What is the name of your virtual machine? fc5vm1
How much RAM should be allocated (in megabytes)? 256
What would you like to use as the disk (path)?
/home/xen/fc5vm1.img
How large would you like the disk to be (in gigabytes)? 4
What is the install location? http://192.168.1.10/
仮想マシン名:fc5vm1 割り当てメモリ:256MB
ディスクイメージ:/home/xen/fc5vm1.img (4GB) インストール元:http://192.168.1.10/
18
CUIインストーラーの利用
• 言語:English
• キーボード:jp106
• IPアドレス:192.168.1.20
• インストーラーの動作:Use test mode
• ホスト名:vm1.example.com
• テスト用に「Web server」をインストールする
– 時間短縮のために、カスタマイズしてX等不要な ものはインストールしない
DomainUの実行
• xmコマンドを使用 – # xm create -c fc5vm1 – コンソールの操作は仮想マシンの処理に移行する • 初期設定(あとからsetupツールで実行可) – Firewall:Disable ←外部からのアクセスを受け付け – Keyboard:Japanese • Webサーバーで動作テスト – # service httpd start – Webブラウザで「http://192.168.1.20/」にアクセス – アクセス出来ない場合、iptablesの状態を確認 デモ20
DomainUの操作
• コンソールをDomain0に移行:Ctrl+] • コンソールをDomainUに移行:xm console ドメインID • 状態を確認:xm list – 各ドメインにID番号が割り当てられている • 詳細な状態確認:xm top(あるいはxentopコマンド) • メモリ割り当ての変更:xm mem-set ドメインID メモリ量 • メモリ割り当て最大値:xm mem-max ドメインID メモリ量 • DomainU停止:xm shutdown ドメインID • DomainU強制終了:xm destroy ドメインID • DomainUを保存:xm save ドメインID ファイル名 • DomainUを復元:xm restore ファイル名 参考DomainUの停止
1. コンソールをDomain0に移行
2. DomainUのドメインIDを確認
3. DomainUを停止
4. xentopコマンドを実行
5. DomainUの停止を確認
デモ22
インストール後の確認
• /etc/xen
– 各種設定ファイルを格納するディレクトリ – DomainUの設定ファイルサンプルも有る• /home/xen
– ディスクイメージを格納するディレクトリ – (当然)任意に他のディレクトリを指定可能 デモDomainU設定ファイルの例
name = "fc5vm1" memory = "256"
disk = [ 'file:/home/xen/fc5vm1.img,xvda,w' ]
vif = [ ‘mac=00:16:3e:1b:60:98’ ] ←MACアドレス bootloader="/usr/bin/pygrub" on_reboot = 'restart' on_crash = 'restart' デモ /etc/xen/fc5vm1の例 MACアドレスは ランダム生成
ゲスト
OSの手動インストール
ゲスト
OSディスクイメージの作成方法
A) ハードディスク領域を別途用意する – デバイスを直接読める B) バックアップ関連コマンド(tar,afio等)を利用し て作成する – インストール済みのシステムからファイルを移す C) yumやrpmstrap(Red Hat系),debootstrap (Debian系)などのツールを利用する 参考26
ディスクイメージの準備
1. ディスクイメージの作成
– # dd if=/dev/zero of=/home/xen/fc5vm2.img bs=1024k count=1 seek=20482. ファイルシステムを作成
– # mkfs.ext3 /home/xen/fc5vm2.img3. ディスクイメージをループバックマウント
– # mount -o loop /home/xen/fc5vm2.img /mnt
手動作成時のファイル構造
/ mnt etc dev etc DomainU用ディスクイメージファイル dev xen 設定 ファイルboot DomainUカーネル DomainU起動時に読み込まれる
DomainU起動時に セットで必要
28
ファイルシステムの準備
1. /mnt/devディレクトリを作成・デバイスファ
イルをコピー
– # mkdir /mnt/dev – # cp -a /dev/* /mnt/dev2. /procディレクトリを作成・マウント
– # mkdir /mnt/proc– # mount -t proc none /mnt/proc
yumインストール用ファイル作成
[main] cachedir=/var/cache/yum debuglevel=2 logfile=/var/log/yum.log exclude=*-debuginfo gpgcheck=0 obsoletes=1 reposdir=/dev/null [base]name=Fedora Core 5 - $basearch - Base
#mirrorlist=http://fedora.redhat.com/download/mirrors/fedora-core-5
baseurl=http://ftp.riken.jp/Linux/fedora/core/5/i386/os/ ← 比較的近いミラーサイト
enabled=1
[updates-released]
name=Fedora Core 5 - $basearch - Released Updates
#mirrorlist=http://fedora.redhat.com/download/mirrors/updates-released-fc5
baseurl=http://ftp.kddilabs.jp/Linux/packages/fedora/core/updates/5/i386/ ← 比較的近いミラーサイト
/root/yum-xen.confの例 参考
30
ミラーサイトを見つけ出す方法
1. ブラウザに”mirrorlist”の値のURLを与える – 例)http://fedora.redhat.com/download/mirrors/fedora-core-5 2. 結果から手近なミラーサイトのURLを選ぶ – 例)http://ftp.riken.jp/Linux/fedora/core/5/$ARCH/os/ 3. “$ARCH”を”i386”に書き換える– 例)http://ftp.riken.jp/Linux/fedora/core/5/i386/os/
4. 書き換えたURLを“baseurl”の値に設定する
– 例)baseurl=http://ftp.riken.jp/Linux/fedora/core/5/i386/os/
5. “mirrorlist”はコメントアウトしておく
Baseシステムインストール
1. yumコマンドが使用できることを確認
– # yum check-update
2. yumを使って、ディスクイメージにFedora
Core 5のBaseイメージをインストール
– # yum --installroot=/mnt -c yum-xen.conf -y groupinstall Base
32
DomainU用各種設定
1. ドライバのコピー
– cp -a /lib/modules/2.6.15-1.2054_FC5xenU /mnt/lib/modules2. /mnt/etc/fstabを作成
– # cp /etc/fstab /mnt/etc (上書きしてもOK)
/dev/hda1 / ext3 defaults 1 1 devpts /dev/pts devpts gid=5,mode=620 0 0 tmpfs /dev/shm tmpfs defaults 0 0 proc /proc proc defaults 0 0 sysfs /sys sysfs defaults 0 0 /mnt/etc/fstabの例
ネットワークの設定
1. モジュールの設定
– # cp /mnt/etc/modprobe.conf.dist /mnt/etc/modprobe.conf – 「alias eth0 xennet」を記述
2. /etc/sysconfig/networkの設定 – # cp /etc/sysconfig/network /mnt/etc/sysconfig/network – ホスト名の変更 • HOSTNAME=vm2.example.com 3. /etc/sysconfig/network-scripts/ifcfg-eth0の設定 – # cp /etc/sysconfig/network-scripts/ifcfg-eth0 /mnt/etc/sysconfig/network-scripts/ifcfg-eth0 – IPアドレス:192.168.1.30 – HWADDRを削除(Domain0のHWADDRに設定されているため) 参考
34
Xenの設定ファイルの作成
1. スクリプトで作成したファイルをコピー
– # cp /etc/xen/fc5vm1 /etc/xen/fc5vm22. 設定ファイルの内容を変更
name = "fc5vm2" memory = "256"disk = [ 'file:/home/xen/fc5vm2.img,hda1,w' ] vif = [ 'mac=00:16:3e:1b:60:98' ]
kernel = "/boot/vmlinuz-2.6.15-1.2054_FC5xenU" ramdisk = "/boot/initrd-2.6.15-1.2054_FC5xenU.img” root = "/dev/hda1 ro"
/etc/xen/fc5vm2の例
DomainUの実行
1. ディスクイメージをアンマウント – # umount /mnt/proc – # umount /mnt 2. xmコマンドで作成したDomainUを実行 – # xm create -c fc5vm2 3. rootでログイン – パスワードは設定されていないのでpasswdコマンドで設定しておく 4. setupを実行し、FirewallとNetworkを再設定 5. yumでWebサーバーをインストール – # yum -y install httpd – # service httpd start 参考36
Xenの利用 応用編
• Xen上でインターネットサーバを構築 – DNS・Web・メールを動かす – IPアドレスの違いに注意 • 他のディストリビューションでXenを動かす – 例)Xen on CentOS • DomainUで異なるディストリビューションを動かす– 例)CentOS on Fedora Core 5
• VT対応CPUでXenを動かす