目次
概要
Virtual Machine Manager の
ビューでは、 VM ゲスト のすべての設定項目と ハードウエアの設定について、より詳しい情報が提供されています。このビューを 利用することでゲストの設定を変更することができるほか、仮想ハードウエアを 追加したり変更したりすることもできます。このビューにアクセスするには、 Virtual Machine Manager でゲストのコンソールを開いてメニューから + を選択するか、もしくはツールバー内の 青い情報アイコンを押します。マウスで VM ゲスト のコンソールを押すと、カーソルはコンソールウインドウ内に キャプチャされ (閉じこめられ)、明示的に解放 (Alt+Ctrl を押すと解放することができます) されるまで外側に移動できなくなります。キー入力とマウスの移動をキャプチャ されないようにし、ホストとゲストの間を自由に移動できるようにするには、 VM ゲスト にタブレットを追加してください。
タブレットを追加すると、ゲスト側でグラフィカル環境を使用している場合、 VM ホストサーバ と VM ゲスト の間でカーソルを同期することもできます。ゲスト側で タブレットを設定しない場合、ホストとゲストのカーソルが常に 1 つずつ 表示されます。
Virtual Machine Manager 内で VM ゲスト の項目をダブルクリックしてコンソールを開き、
+ で ビューに切り替えます。を押してから を選択し、表示されたポップアップウインドウ から を選択 します。選択したあとは で続行します。
タブレットの追加時にゲストが動作中であった場合は、次回の再起動で タブレットを有効化するかどうかの確認が表示されます。この場合は
で続行してください。VM ゲスト が動作中であった場合は再起動を行なうことで、動作中で なかった場合はそのまま起動することで、タブレットが利用できるように なります。
KVM では、 VM ゲスト 内から CD または DVD-ROM を利用することができます。 VM ゲスト から VM ホストサーバ 上にあるデバイスそのものに直接アクセスさせることが できるほか、 ISO イメージにアクセスさせることもできます。既存の CD や DVD から ISO イメージを作成したい場合は、 dd コマンドを利用して 下記のように実行します:
dd if=/dev/CD_または_DVD_デバイス
of=my_distro.iso bs=2048
VM ゲスト に CD/DVD-ROM デバイスを追加するには、下記の手順で行ないます:
Virtual Machine Manager 内から設定したい VM ゲスト を選択してダブルクリックし、 コンソールを開いてから
+ を選択し、 画面に移動します。を押し、表示されたポップアップ ウインドウから を選択します。 表示された画面は で先に進めます。
では を選択します。
を選択します。
VM ホストサーバ 上の実際のデバイスを割り当てる場合は、 /dev/cdrom
) を入力します。この項目では
ボタンを利用することでファイルブラウザを開き、
からデバイスを選択することもできます。
なお、 Virtual Machine Manager を VM ホストサーバ 上で起動した場合にのみ実際のデバイスを
割り当てることができます。
既存のイメージファイルをデバイスに割り当てる場合は、
を押して表示される画面で、ストレージプールからイメージを選択します。 Virtual Machine Manager を VM ホストサーバ 上で起動している場合は、 を押すことで、ファイルシステム内からイメージの場所を選択することも できます。イメージを選択してファイルブラウザを閉じるには、 を押します。を押して先に進み、設定内容を確認します。 あとは , , と押していくと、設定を適用することができます。
新しく作成したデバイスを利用できるようにするには、 VM ゲスト を再起動する 必要があります。さらに詳しい情報は、 8.4項 「Virtual Machine Manager を利用したフロッピィディスクまたは CD/DVD-ROM メディアの取り出しと交換」 をお読みください。
現時点では KVM ではフロッピィディスクイメージのみをサポートし、実際の フロッピィディスクドライブを利用する機能には対応していません。既存の フロッピィディスクからディスクイメージを作成するには、 dd を使用して行ないます:
dd if=/dev/fd0 of=/var/lib/libvirt/images/floppy.img
中に何も入っていない空のフロッピィディスクイメージを作成するには、 以下を実行します:
# RAW イメージの作成 dd if=/dev/zero of=/var/lib/libvirt/images/floppy.img bs=512 count=2880 # FAT でフォーマットする mkfs.msdos -C /var/lib/libvirt/images/floppy.img 1440
お使いの VM ゲスト にフロッピィデバイスを追加するには、 下記の手順で行ないます:
Virtual Machine Manager 内から設定したい VM ゲスト を選択してダブルクリックし、 コンソールを開いてから
+ を選択し、 画面に移動します。を押し、表示されたポップアップ ウインドウから を選択します。 表示された画面は で先に進めます。
では を選択します。
を選択して から ボタンを押し、ストレージプールから既存の イメージを選択します。 Virtual Machine Manager を VM ホストサーバ 上で起動している場合は、 を押すことで、ファイルシステム内から イメージの場所を選択することもできます。イメージを選択してファイル ブラウザを閉じるには、 を押します。
を押して先に進み、設定内容を確認します。 あとは , , と押していくと、設定を適用することができます。
新しく作成したデバイスを利用できるようにするには、 VM ゲスト を再起動する 必要があります。さらに詳しい情報は、 8.4項 「Virtual Machine Manager を利用したフロッピィディスクまたは CD/DVD-ROM メディアの取り出しと交換」 をお読みください。
VM ホストサーバ 側の実在する CD/DVD-ROM デバイスを利用するか、もしくは ISO
イメージやフロッピィイメージを利用するかどうかに関わらず、 VM ゲスト 側では
メディアやイメージの交換を行なうことができます。交換を行なう場合には、
ゲスト側であらかじめ disconnect
(切断) をする必要があります。
Virtual Machine Manager 内から設定したい VM ゲスト を選択してダブルクリックし、 コンソールを開いてから
+ を選択し、 画面に移動します。フロッピィまたは CD/DVD-ROM デバイスを選択し、 「取り出し」 を行ないます。
を押してメディアの新しいメディアを 「挿入」 するには、 を押します。
VM ホストサーバ 側の実在する CD/DVD-ROM デバイスを利用している場合は、まず デバイス内のメディアを交換します (この場合、メディアを取り出す前に VM ホストサーバ 側でマウント解除が必要になります) 。その後
を選択して、表示されたドロップダウン リストからデバイスを選択します。ISO イメージを利用している場合は、
を押してから を押し、イメージを選択します。 リモートから接続している場合は、既存のストレージプールからのみ選択する ことができます。最後に
を押して完了します。これで VM ゲスト から 新しいメディアにアクセスできるようになります。グラフィカルなツールである virt-manager を利用することで、 ゲストに PCI デバイスを追加することができます。 PCI デバイスを特定の VM ゲスト に割り当てると、再割り当てを行なわない限り、他の VM ゲスト では利用できなく なります。下記の手順では、 USB コントローラを仮想化ゲストに割り当てるための 手順を説明しています。
Virtual Machine Manager で対象の VM ゲスト をダブルクリックしてコンソールを開き、
+ を選択して ビューを表示させます。を選択して、左側のペインで の分類を選択します。すると、ウインドウの 右側に、ホスト側の PCI デバイスの一覧が表示されます。
利用可能な PCI デバイスの一覧から、 VM ゲスト に割り当てる USB コントローラ
を選択します。たとえば USB2 Enhanced Host Controller
のような名前で掲載されているはずです。選択を行なったら
を押します。
![]() | |
VM ゲスト が動作中の場合は、 PCI デバイスを割り当てることはできません。 動作中のマシンに対して PCI デバイスを割り当てようとすると、 Virtual Machine Manager は 次回の VM ゲスト のシャットダウン時に、対象のデバイスを追加するかどうかを 尋ねます。ここで (はい) を選択すると、次回の VM ゲスト の再起動時にデバイスが割り当てられるようになります。 |
virsh を利用して VM ゲスト に対し、 PCI デバイスを 占有させて割り当てるには、下記の手順を実施します:
まずは PCI デバイスを識別します。
VM ゲスト に提供する PCI デバイスを、 virsh nodedev-list コマンドまたは lspci -n コマンドで識別します。
下記のコマンドを実行すると、利用可能な PCI デバイスのみを表示します:
virsh nodedev-list | grep pci
なお、 PCI デバイスは下記のような文字列形式で区別されます
(下記の例で、 8086
は Intel アーキテクチャであることを
示す値で、 **** は各デバイスに割り当てられる 4 桁の 16 進数値です):
pci_8086_****
表示された PCI のデバイス番号を覚えておきます。この番号は、下記の手順で 必要となります。
ドメイン、バス、機能に対する情報収集を行ないます:
# virsh nodedev-dumpxml pci_8086_1d26 <device> <name>pci_8086_1d26</name> <parent>computer</parent> <driver> <name>ehci_hcd</name> </driver> <capability type='pci'> <domain>0</domain> <bus>0</bus> <slot>29</slot> <function>0</function> <product id='0x1d26'>Patsburg USB2 Enhanced Host Controller #1</product> <vendor id='0x8086'>Intel Corporation</vendor> <capability type='virt_functions'> </capability> </capability> </device>
VM ゲスト に割り当てる前に、ホストシステム側でデバイスの切り離しを 行ないます:
# virsh nodedev-detach pci_8086_1d26 Device pci_8086_1d26 detached
domain, bus, slot, function の値をそれぞれ 10 進数から 16 進数に変換します。 このとき、 '0x' という文字列を頭に付けて、 16 進数である旨を表します。 下記は bus = 0, slot = 29, function = 0 の場合での例です。それぞれの 16 進数値は、下記のようになります:
# printf %x 0 0 # printf %x 29 1d
上記の手順で判明した通り、 bus と function の値は '0x00', slot の値は '0x1d' になります。
対象の VM ゲスト に対して virsh edit を実行し、
下記のデバイス項目を <devices>
セクション内に
追記します:
<hostdev mode='subsystem' type='pci' managed='no'> <source> <address domain='0x0000' bus='0x00' slot='0x1d' function='0x00'/> </source> </hostdev>
VM ゲスト システム側で PCI デバイスを利用できるようになったら、ホストに 対して利用を停止させます。まずはホスト側のシステムで、どのドライバが PCI デバイスを利用しているのかを調べます。
# readlink /sys/bus/pci/devices/0000\:00\:1d.0/driver ../../../bus/pci/drivers/pci-stub
上記の例では、 pci-stub
ドライバが読み込まれています。
このように表示されていれば、 VM ゲスト を起動できることになります。
これで PCI デバイスが VM ゲスト に割り当てられます。
# virsh start sles11
![]() | |
FLR (function level reset; 機能レベルリセット) や PM (power management;
電源管理) リセットに対応していない多機能型の PCI デバイスを利用している
場合は、 VM ホストサーバ 側ですべての機能を切り離す必要があります。また、
FLR や PM リセットに対応していない場合、セキュリティ上の理由でデバイス
全体をリセットしなければなりません。 VM ゲスト からデバイスの機能を安全に切り離すには、 virsh nodedev-detach コマンドを利用します。 |
![]() | |
お使いの PCI デバイスが 'managed' ではなく、 PCI デバイスを制御している
ドライバが virsh nodedev-detach pci_8086_1d26 |
![]() | |
また、お使いのホストで SELinux を動作させている場合、下記のように実行して 無効化する必要があります: # setsebool -P virt_use_sysfs 1 処理が完了したら、仮想マシンを起動してください。 |
VM ゲスト で正しい時刻を設定することは、仮想化を利用する際の難題の 1 つ です。正しい時刻の設定は、ネットワークアプリケーションを利用する際、 特に要求されるもので、 VM ゲスト に対してライブマイグレーションを行なう 際にも、事前に行なっておかなければならない項目です。
![]() | VM ホストサーバ における時刻同期 |
---|---|
VM ホストサーバ 側でも、たとえば NTP などを使用 (詳しくは 第17章 NTP を利用した時刻同期 (↑リファレンス)) をお読みください) して、正しい時刻への同期を強くお勧めします。 |
kvm_clock
の使用¶
KVM では擬似仮想化クロックが提供されています。これは kvm_clock
と呼ばれるドライバで、 openSUSE のほか、 SUSE Linux Enterprise Server 10 SP3
またはそれ以降のバージョン、もしくは RedHat Enterprise Linux 5.4 またはそれ以降の
バージョンでサポートされています。可能であれば kvm_clock
を使っておくことを強くお勧めします。
実行中の VM ゲスト で kvm_clock
ドライバが
読み込まれているかどうか、VM ゲスト 内から確認を行なうには下記の
コマンドを実行します:
~ # dmesg | grep kvm-clock [ 0.000000] kvm-clock: cpu 0, msr 0:7d3a81, boot clock [ 0.000000] kvm-clock: cpu 0, msr 0:1206a81, primary cpu clock [ 0.012000] kvm-clock: cpu 1, msr 0:1306a81, secondary cpu clock [ 0.160082] Switching to clocksource kvm-clock
現在使用されている時刻源を確認するには、 VM ゲスト 内で下記のコマンドを
実行します。 kvm-clock
と入力されるべき項目です:
echo /sys/devices/system/clocksource/clocksource0/current_clocksource
![]() | kvm-clock と NTP について |
---|---|
VM ゲスト 内で |
擬似仮想化 kvm-clock
ドライバは、 SUSE Linux Enterprise Server 9 や Windows
オペレーティングシステムに対しては提供されていません。 Windows の場合は
Windows 時刻サービスツール
を利用して同期を行なって
ください (詳しくは http://technet.microsoft.com/ja-jp/library/cc773263%28WS.10%29.aspx
をお読みください) 。
SUSE Linux Enterprise Server 9 SP4 で時刻維持を行ないたい場合は、システムの起動時に特殊な 起動パラメータを設定することで実現できます:
32 ビットカーネルの場合:clock=pmtmr
|
64 ビットカーネルの場合:ignore_lost_ticks
|