仮想化 · 6 min read · Dec 09, 2025

Debian Squeeze (AMD64) における Xen 4.0 のパラバーチャライゼーション

Debian Squeeze (AMD64) における Xen 4.0 のパラバーチャライゼーション

バージョン 1.0
著者: Falko Timme
Twitter でフォローしてください

このチュートリアルでは、Debian Squeeze (6.0) システム (AMD64) に Xen 4.0 をインストールし、パラバーチャライズされたゲストを作成する手順を説明します (完全仮想化されたゲスト、つまりハードウェア仮想化 (HVM) とは混同しないでください)。

Xen を使用すると、ホストオペレーティングシステム (dom0) の下で、ゲストオペレーティングシステム (*nix オペレーティングシステム、Linux や FreeBSD など) を「仮想マシン」または domU として作成できます。Xen を使用すると、アプリケーションを異なる仮想マシンに分離でき、それらは完全に独立しています (例: メールサーバー用の仮想マシン、高トラフィックのウェブサイト用の仮想マシン、顧客のウェブサイトを提供する別の仮想マシン、DNS 用の仮想マシンなど)。これにより、コストを節約でき、さらに重要なことに、より安全です。DNS サーバーの仮想マシンがハッキングされても、他の仮想マシンには影響しません。また、仮想マシンを1つの Xen サーバーから別のサーバーに移動することもできます。

これがあなたにとって機能することを保証するものではありません!

1 前提条件

私はホストシステム (dom0) として、ホスト名 server1.example.com、IP アドレス 192.168.0.100 の Debian Squeeze システム (x86_64) を使用しています (i386 システムの場合は設定が若干異なる場合があります)。仮想マシン (domU) でも Debian Squeeze を使用しますが、Ubuntu Maverick ゲストをインストールしたい場合の変更点も示します。

このガイドでは、イメージベースの仮想マシンと LVM ベースの仮想マシンの設定方法を説明します。

2 Xen のインストール

Xen をインストールするには、単に次のコマンドを実行します

apt-get install xen-hypervisor xen-linux-system xen-utils xenstore-utils xenwatch xen-tools

その後、/etc/modules を開き、次の行が含まれていることを確認します: loop max_loop=64 (このステップは、イメージベースの仮想マシンを作成する場合のみ必要です - LVM ベースの仮想マシンを作成する場合はスキップできます):

vi /etc/modules

| [...] loop max_loop=64 |

次に、/etc/xen/xend-config.sxp を開きます…

vi /etc/xen/xend-config.sxp

… 行 (network-script ‘network-bridge antispoof=yes’) のコメントを外す/追加し、他のすべての (network-script …) 行をコメントアウトします (antispoof=yes は、VM が許可されていない IP アドレスを使用するのを防ぐ Xen ファイアウォールを有効にします。例えば、ゲートウェイ IP など)。また、行 (vif-script vif-bridge) が有効になっていることを確認してください:

| [...] (network-script 'network-bridge antispoof=yes') [...] (vif-script vif-bridge) [...] |

次に、システムを再起動します:

reboot

次に実行します

uname -r

新しい Xen カーネルが表示されるはずです:

root@server1:~# uname -r
2.6.32-5-xen-amd64
root@server1:~#

次に実行します

xm dmesg 

次のような出力が得られた場合…

root@server1:~# xm dmesg
WARNING! Can’t find hypervisor information in sysfs!
Error: Unable to connect to xend: No such file or directory. Is xend running?
root@server1:~#

… これは、あなたが Xen 準備済みカーネルで実行しているが、Xen ハイパーバイザー自体ではないことを意味します (これは、仮想マシンをブートできないことを意味します)。これを変更するには、次のようにカーネルのブート順序を変更し、GRUB ブートローダーを更新します:

mv /etc/grub.d/10_linux /etc/grub.d/50_linux
update-grub2

これにより、次回ブート時に Xen ハイパーバイザーがロードされることが保証されます。

再度再起動します:

reboot

その後、

xm dmesg

は、ハイパーバイザーが実行中であることを示すはずです:

root@server1:~# xm dmesg
(XEN) Xen version 4.0.1 (Debian 4.0.1-2) ( [email protected]) (gcc version 4.4.5 (Debian 4.4.5-10) ) Wed Jan 12 14:04:06 UTC 2011
(XEN) Bootloader: GRUB 1.98+20100804-14
(XEN) Command line: placeholder
(XEN) Video information:
(XEN) VGA is text mode 80x25, font 8x16
(XEN) VBE/DDC methods: V2; EDID transfer time: 1 seconds
(XEN) Disc information:
(XEN) Found 1 MBR signatures
(XEN) Found 1 EDD information structures
(XEN) Xen-e820 RAM map:
(XEN) 0000000000000000 - 000000000009f000 (usable)
(XEN) 000000000009f000 - 00000000000a0000 (reserved)
(XEN) 00000000000e0000 - 0000000000100000 (reserved)
(XEN) 0000000000100000 - 00000000affa0000 (usable)
(XEN) 00000000affa0000 - 00000000affae000 (ACPI data)
(XEN) 00000000affae000 - 00000000afff0000 (ACPI NVS)
(XEN) 00000000afff0000 - 00000000b0000000 (reserved)
(XEN) 00000000fec00000 - 00000000fec01000 (reserved)
(XEN) 00000000fee00000 - 00000000fef00000 (reserved)
(XEN) 00000000ff700000 - 0000000100000000 (reserved)
(XEN) 0000000100000000 - 0000000140000000 (usable)
(XEN) ACPI: RSDP 000FA310, 0014 (r0 ACPIAM)
(XEN) ACPI: RSDT AFFA0000, 0044 (r1 052608 RSDT1415 20080526 MSFT 97)
(XEN) ACPI: FACP AFFA0200, 0084 (r1 052608 FACP1415 20080526 MSFT 97)
(XEN) ACPI: DSDT AFFA0450, 960C (r1 1AAAA 1AAAA000 0 INTL 20051117)
(XEN) ACPI: FACS AFFAE000, 0040
(XEN) ACPI: APIC AFFA0390, 0080 (r1 052608 APIC1415 20080526 MSFT 97)
(XEN) ACPI: MCFG AFFA0410, 003C (r1 052608 OEMMCFG 20080526 MSFT 97)
(XEN) ACPI: OEMB AFFAE040, 0073 (r1 052608 OEMB1415 20080526 MSFT 97)
(XEN) ACPI: HPET AFFA9A60, 0038 (r1 052608 OEMHPET0 20080526 MSFT 97)
(XEN) ACPI: INFO AFFAE0C0, 0124 (r1 052608 AMDINFO 20080526 MSFT 97)
(XEN) ACPI: NVHD AFFAE1F0, 0284 (r1 052608 NVHDCP 20080526 MSFT 97)
(XEN) ACPI: SSDT AFFA9AA0, 028A (r1 A M I POWERNOW 1 AMD 1)
(XEN) システム RAM: 3839MB (3931388kB)
(XEN) ドメインヒープ初期化
(XEN) プロセッサ #0 15:11 APIC バージョン 16
(XEN) プロセッサ #1 15:11 APIC バージョン 16
(XEN) IOAPIC[0]: apic_id 2, バージョン 17, アドレス 0xfec00000, GSI 0-23
(XEN) APIC モードを有効にしています: Flat. 1 I/O APIC を使用
(XEN) スケジューラを使用: SMP Credit スケジューラ (credit)
(XEN) 2600.088 MHz プロセッサを検出しました。
(XEN) メモリ共有を初期化中。
(XEN) HVM: ASID が有効。
(XEN) HVM: SVM が有効
(XEN) AMD-Vi: IOMMU が見つかりません!
(XEN) I/O 仮想化が無効
(XEN) AMD: C1 クロック ランピング ノード #0 を無効にしています
(XEN) 合計 2 プロセッサがアクティブ化されました。
(XEN) IO-APIC IRQ を有効にしています
(XEN) -> 新しい ACK メソッドを使用
(XEN) 2 CPU にわたる TSC 同期を確認中:
(XEN) CPU#0 は -2 usecs TSC スキューを持っており、修正しました。
(XEN) CPU#1 は 2 usecs TSC スキューを持っており、修正しました。
(XEN) プラットフォーム タイマーは 25.000MHz HPET です
(XEN) 16 KiB のコンソールリングを割り当てました。
(XEN) 2 CPU を起動しました
(XEN) ドメイン 0 をロード中
(XEN) Xen カーネル: 64-bit, lsb, compat32
(XEN) Dom0 カーネル: 64-bit, PAE, lsb, paddr 0x1000000 -> 0x16ba000
(XEN) 物理メモリ配置:
(XEN) Dom0 割り当て: 0000000138000000->000000013c000000 (921455 ページを割り当てる必要があります)
(XEN) 仮想メモリ配置:
(XEN) 読み込まれたカーネル: ffffffff81000000->ffffffff816ba000
(XEN) 初期 RAM ディスク: ffffffff816ba000->ffffffff8323b600
(XEN) 物理-機械マップ: ffffffff8323c000->ffffffff83963b78
(XEN) スタート情報: ffffffff83964000->ffffffff839644b4
(XEN) ページテーブル: ffffffff83965000->ffffffff83986000
(XEN) ブートスタック: ffffffff83986000->ffffffff83987000
(XEN) 合計: ffffffff80000000->ffffffff83c00000
(XEN) エントリーアドレス: ffffffff81509200
(XEN) Dom0 は最大 2 VCPU を持っています
(XEN) フリー RAM をスクラブ中: .done.
(XEN) Xen トレースバッファ: 無効
(XEN) 標準ログレベル: エラーと警告
(XEN) ゲストログレベル: 何もなし (レート制限: エラーと警告)
(XEN) Xen は VGA コンソールを放棄しています。
(XEN) * シリアル入力 -> DOM0 (入力を Xen に切り替えるには ‘CTRL-a’ を 3 回押してください)
(XEN) 176kB の初期メモリを解放しました。
(XEN) MCE: MSR 417 は MCA MSR ではありません
(XEN) MCE: MSR 417 は MCA MSR ではありません
root@server1:~#

3 イメージベースの仮想マシンの作成

仮想マシンを作成するために xen-tools を使用します。xen-tools は仮想マシンを非常に簡単に作成できるようにします - 詳細についてはこのチュートリアルをお読みください: https://www.howtoforge.com/xen_tools_xen_shell_argo。前のステップ (第 2 章) で xen-tools をすでにインストールしています。

次に、/etc/xen-tools/xen-tools.conf を編集します。このファイルには、xen-create-image スクリプトで使用されるデフォルト値が含まれています。コマンドラインで他の値を指定しない限り、これらの値が使用されます。私は以下の値を変更し、他はそのままにしました:

vi /etc/xen-tools/xen-tools.conf

| [...] dir = /home/xen [...] # lvm = vg0 [...] dist = `xt-guess-suite-and-mirror --suite` # インストールするデフォルトのディストリビューション。 [...] gateway = 192.168.0.1 netmask = 255.255.255.0 broadcast = 192.168.0.255 [...] passwd = 1 [...] kernel = /boot/vmlinuz-`uname -r` initrd = /boot/initrd.img-`uname -r` [...] mirror = `xt-guess-suite-and-mirror --mirror` [...] serial_device = hvc0 #デフォルト [...] disk_device = xvda #デフォルト [...] |

dir 行は、仮想マシンイメージが保存される場所を指定します。同時に、lvm がコメントアウトされていることを確認してください (これらの設定は相互排他的です)。

dist は、仮想マシンにインストールされるディストリビューションを指定します (コマンドを実行すると

xt-guess-suite-and-mirror --suite

コマンドラインで、squeeze に変換されることがわかります。したがって、この場合、Debian Squeeze がインストールされます。他の値をコマンドラインで指定しない限り)。

仮想マシンにインストールできるディストリビューションを確認するには、次のコマンドを実行します:

gunzip /usr/share/doc/xen-tools/README.gz
cat /usr/share/doc/xen-tools/README

passwd = 1 行は、新しいゲストドメインを作成するときに root パスワードを指定できるようにします。

kernel と initrd 行は、仮想マシンにインストールされるカーネルと RAM ディスクを指定します。Debian Squeeze をインストールしたい場合は、上記の設定を使用してください (そうしないと、Debian Squeeze ゲストがブートしない可能性があります)。たとえば、Ubuntu Maverick をインストールしたい場合は、同じ設定を使用するか、両方の行をコメントアウトします。この場合、デフォルトの Ubuntu カーネルが使用されます (はい、Xen 4.0 では、ゲストで非 Xen カーネルを使用できます!)。

ゲートウェイ、ネットマスク、およびブロードキャストアドレスを指定することを確認してください。指定しない場合、xen-create-image を使用する際にコマンドラインでゲートウェイとネットマスクを指定しないと、IP アドレスを指定してもゲストドメインにはネットワークがありません!

mirror 行は、使用するミラーを指定します (コマンド

xt-guess-suite-and-mirror --mirror

はデフォルトで Debian ミラーに変換されます。もちろん、別のミラーを指定することもできます。例えば、次のように:

mirror = http://ftp.de.debian.org/debian/

または

mirror = http://archive.ubuntu.com/ubuntu (Ubuntu 用; この場合、dist 行に Ubuntu バージョンを指定することを確認してください。例: dist = maverick)

)

serial_device = hvc0 行を追加することが非常に重要です。そうしないと、仮想マシンが正しくブートしない可能性があります!

disk_device = xvda は、仮想化されたディスクが xvda1、xvda2 などと名付けられることを意味します。これは、Debian Squeeze ゲストにとって正しい設定です。Ubuntu ゲスト、特に非 Xen カーネルを使用している場合は、この設定ではブートしない可能性がありますが、xen-create-image コマンドに渡す –scsi スイッチで上書きできます。この場合、仮想化されたディスクは sda1、sda2 などと名付けられます。

要約すると、上記の設定は Debian Squeeze ゲストに最適です。Ubuntu Maverick を代わりにインストールしたい場合は、/etc/xen-tools/xen-tools.conf のいくつかの設定を上書きする必要があります (–dist、–mirror、–scsi スイッチ; もしかしたら kernel と initrd をコメントアウトする必要があるかもしれません) - その点については後で説明します。

先に進む前に、仮想マシンイメージを保存するディレクトリを作成する必要があります:

mkdir /home/xen 

次に、IP アドレス 192.168.0.101 を持つ最初のゲストドメイン xen1.example.com を作成します:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev

コマンドラインで指定するオプションは、/etc/xen-tools/xen-tools.conf の設定を上書きします。コマンドラインで指定されていないオプションは、/etc/xen-tools/xen-tools.conf から取得されます。必ず –role=udev を追加してください。そうしないと、仮想マシンが正しくブートしない可能性があります!

(利用可能なオプションについて詳しく知りたい場合は、xen-create-image マンページを参照してください:

man xen-create-image

)

xen-create-image コマンドは、xen1.example.com 仮想マシンを作成します。これには数分かかる場合があります。出力は次のようになります:

root@server1:~# xen-create-image –hostname=xen1.example.com –size=4Gb –swap=256Mb –ip=192.168.0.101 –memory=256Mb –arch=amd64 –role=udev

一般情報

ホスト名 : xen1.example.com
ディストリビューション : squeeze
ミラー : http://ftp.de.debian.org/debian/
パーティション : swap 256Mb (swap)
/ 4Gb (ext3)
イメージタイプ : sparse
メモリサイズ : 256Mb
カーネルパス : /boot/vmlinuz-2.6.32-5-xen-amd64
初期 RAM ディスクパス : /boot/initrd.img-2.6.32-5-xen-amd64

ネットワーク情報

IP アドレス 1 : 192.168.0.101 [MAC: 00:16:3E:E8:61:97]
ネットマスク : 255.255.255.0
ブロードキャスト : 192.168.0.255
ゲートウェイ : 192.168.0.1

パーティションイメージを作成中: /home/xen/domains/xen1.example.com/swap.img
完了

/home/xen/domains/xen1.example.com/swap.img にスワップを作成中
完了

パーティションイメージを作成中: /home/xen/domains/xen1.example.com/disk.img
完了

/home/xen/domains/xen1.example.com/disk.img に ext3 ファイルシステムを作成中
完了
インストール方法: debootstrap
完了

フックを実行中
完了

役割: udev
ファイル: /etc/xen-tools/role.d/udev
役割スクリプトが完了しました。

Xen 設定ファイルを作成中
完了
ルートパスワードを設定中
新しい UNIX パスワードを入力してください:
新しい UNIX パスワードを再入力してください:
passwd: パスワードが正常に更新されました
すべて完了

ログファイルが生成されました:
/var/log/xen-tools/xen1.example.com.log

インストール概要

ホスト名 : xen1.example.com
ディストリビューション : squeeze
IP アドレス : 192.168.0.101
RSA フィンガープリント : 81:d1:7a:44:3b:07:41:3a:0f:46:d5:d5:30:bc:26:43
ルートパスワード : N/A

root@server1:~#

Ubuntu Maverick ゲストの場合は、代わりに次のコマンドを使用してください:

xen-create-image --hostname=xen1.example.com --size=4Gb --swap=256Mb --ip=192.168.0.101 --memory=256Mb --arch=amd64 --role=udev --scsi --dist maverick --mirror=http://archive.ubuntu.com/ubuntu 

(ゲストで Debian の Xen カーネルの代わりにデフォルトの Ubuntu カーネルを使用するには、/etc/xen-tools/xen-tools.conf のカーネルと initrd 行をコメントアウトすることもできます。)

xen1.example.com 設定ファイルが /etc/xen/xen1.example.com.cfg に作成されているはずです。それを見て、仮想マシンの設定ファイルに慣れてください:

cat /etc/xen/xen1.example.com.cfg

| # # Xen インスタンス xen1.example.com の設定ファイル、 # xen-tools 4.2 によって 2011 年 3 月 25 日金曜日 15:56:51 に作成されました。 # # カーネル + メモリサイズ # kernel = '/boot/vmlinuz-2.6.32-5-xen-amd64' ramdisk = '/boot/initrd.img-2.6.32-5-xen-amd64' vcpus = '1' memory = '256' # ディスクデバイス。 # root = '/dev/xvda2 ro' disk = [ 'file:/home/xen/domains/xen1.example.com/disk.img,xvda2,w', 'file:/home/xen/domains/xen1.example.com/swap.img,xvda1,w', ] # # 物理ボリューム # # # ホスト名 # name = 'xen1.example.com' # # ネットワーキング # vif = [ 'ip=192.168.0.101,mac=00:16:3E:E8:61:97' ] # # 振る舞い # on_poweroff = 'destroy' on_reboot = 'restart' on_crash = 'restart' |

(注意: デュアルコアまたはクアッドコア CPU を持っていて、仮想マシンがすべての CPU コアを使用するようにしたい場合は、vcpus 行を vcpus = ‘2’ または vcpus = ‘4’ に変更してください。)

仮想マシンを起動するには、次のコマンドを実行します:

xm create /etc/xen/xen1.example.com.cfg

root@server1:~# xm create /etc/xen/xen1.example.com.cfg
Using config file “/etc/xen/xen1.example.com.cfg”.
Started domain xen1.example.com (id=1)
root@server1:~#

次に実行します

xm console xen1.example.com

その仮想マシンにログインします (コンソールにいる場合は CTRL+] を押すか、PuTTY を使用している場合は CTRL+5 を押して dom0 に戻ります)、または SSH クライアントを使用して接続します (192.168.0.101)。

実行中の仮想マシンのリストを取得するには、次のように入力します:

xm list 

出力は次のようになります:

root@server1:~# xm list
Name ID Mem VCPUs State Time(s)
Domain-0 0 2811 2 r—– 137.2
xen1.example.com 1 256 1 -b—- 1.7
root@server1:~#

xen1.example.com をシャットダウンするには、次のようにします:

xm shutdown xen1.example.com 

xen1.example.com を次回のシステムブート時に自動的に起動させたい場合は、次のようにします:

mkdir /etc/xen/auto
ln -s /etc/xen/xen1.example.com.cfg /etc/xen/auto

以下は、最も重要な Xen コマンドです:

xm create -c /path/to/config - 仮想マシンを起動します。
xm shutdown - 仮想マシンを停止します。
xm destroy - 仮想マシンを即座に停止します。電源ボタンを切るようなものです。
xm list - 実行中のすべてのシステムをリストします。
xm console - 仮想マシンにログインします。
xm help - すべてのコマンドのリスト。

xen-create-image コマンドで作成されたすべての仮想マシンのリストは、次のコマンドで確認できます:

xen-list-images

root@server1:~# xen-list-images
Name: xen1.example.com
Memory: 256
IP: 192.168.0.101
root@server1:~#

xen-tools でできることについて詳しく知りたい場合は、このチュートリアルを参照してください: https://www.howtoforge.com/xen_tools_xen_shell_argo

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。