3.5.3 仮想ブロックデバイスの構成概要
ここでは、仮想ブロックデバイスの構成の概要について説明します。
管理OSのディスクとゲストOSの仮想ディスクの関係
ゲストOSは、管理OSに接続された以下のブロックデバイスを割り当てることで仮想ディスクとして認識 します。
• ディスク
• ディスクパーティション
• イメージファイル
• LVM論理ボリューム
仮想ディスクの種類
仮想ディスクの種類は以下のとおりです。
仮想ブロックデバイスにイメージファイルを指定する場合
仮想ブロックデバイスには、ディスクやディスクパーティション、LVM論理ボリューム、イメージファイ ルを割り当てることができますが、イメージファイルとイメージファイル以外のブロックデバイスでは指 定方法が異なります。
ブロックデバイスとしてイメージファイルを指定する方式を仮想ブロックデバイスのtapオプションと呼び ます。
イメージファイルを仮想ブロックデバイスとして割り当てる場合の割り当て方は、「9.2.4.1 仮想ブロック デバイスの追加」を参照してください。
イメージファイルの作成方法
イメージファイルの作成方法は以下のとおりです。
1. イメージファイルの作成
“dd”コマンドを使用してイメージファイルを作成します。
【例】
/xen/imageに10GBのイメージファイル(ファイル名:aaa.img)を作成する場合 表3.2 仮想ディスクの種類
仮想ディスクの種類 説明
仮想ブロックデバイス(VBD) 「1.2.4.3 ブロックデバイスの仮想化」に記載された仮想デバイスド ライバ方式で実現された仮想ディスクです。
IDEのエミュレーションデバイス 「1.2.3.2 完全仮想化におけるI/O仮想化」に記載されたデバイスエ ミュレーション方式で実現された仮想ディスクです。IDEのエミュ レーションデバイスは、以下の場合に使用します。
• HVMドメインにおいてCD-ROMを使用する場合
• 仮想ブロックデバイス(VBD)は、実際にSCSI ディスクやIDE ディスクとして動作する訳ではありませ
ん。あくまで、ブロックデバイスとして動作しますので、アプリケーションからSCSIコマンドを使用す ることはできません。
system# dd if=/dev/zero of=/xen/image/aaa.img bs=1G count=0 seek=10
2. ファイルシステムの構築
“mkfs”コマンドを使用してイメージファイルにファイルシステムを構築します。
【例】
/xen/image/aaa.imgにファイルシステムを構築します。
ゲストOSにおける仮想ブロックデバイスと用途
ゲスト OS が使用できる仮想ブロックデバイスと用途は以下のとおりです。ドメイン種別、また、ゲスト OS種別によって異なります。
管理OSとゲストOSのデバイスの関係
ゲストOSで仮想ブロックデバイスを使用する場合には、管理OSのどのブロックデバイスをゲストOSの 仮想ブロックデバイスとして見せるかを指定します。管理OS のブロックデバイスとゲスト OS の仮想ブ ロックデバイスの例を以下に示します。
ゲストOSにおける仮想ブロックデバイス設定方法の比較
ゲストOSにおける仮想ブロックデバイスの設定方法には、以下の2通りの方法があります。
system# mkfs -t ext3 -F /xen/image/aaa.img
表3.3 ゲストOSにおける仮想ブロックデバイスと用途 ドメイン
種別
ゲストOS 仮想ディスク 種別
仮想 ディスク名
仮想ブロックデバイス 用途
HVM ドメイン
RHEL5 仮想ブロック
デバイス
(VBD)
hda /dev/hda システムボリュームの場
合に使用します。
xvdb
~ xvdp
/dev/xvdb
~ /dev/xvdp
データ領域の場合に使用 します。
キックスタート ファイル
hdb /dev/hdb キックスタートファイル
の場合に使用します。
IDEエミュレー ションデバイス
hdc /dev/hdc CD-ROM/DVD-RO Mド
ライブを指定する場合に 使用します。
• 仮想ブロックデバイスを割り当てる場合には、表3.3において定義された仮想ディスク名、仮想ブロック デバイスを指定してください。
• IDEエミュレーションデバイスと仮想ブロックデバイスでは性能差があり、仮想ブロックデバイスの方が 高速です。
表3.4 管理OSのブロックデバイスとゲストOSの仮想ブロックデバイスの例 ドメイン
種別
ゲストOS ゲストOSの 領域種別
管理OSの ブロックデバイス(例)
ゲストOSの 仮想ブロックデバイス(例)
HVM ドメイン
RHEL5 システムボリューム /dev/sdd /dev/hda
データ領域 /dev/sde /dev/xvdd
管理OSのブロックデバイス
管理OSでは、ハードディスクドライブなどのデバイスに対して、ネイティブのLinuxと同様にデバイス名 を割り当てます。デバイス名は、システム起動時に認識した順にデバイス名を割り当てられます。
このため、ハードディスクドライブやコントローラなどの故障発生後にシステムを再起動させると当該 ハードディスクドライブを認識できず、デバイス名が変わることがあります。デバイス名が変わると、あ らかじめ準備していたシェルスクリプトや定義は、正しく行えないことがあります。これを避けるために は、毎回デバイス名を同一にした運用をする必要があります。そのために以下の対策を実施してください。
• 管理OSにおけるudev起動
管理OSにおいて、udev機能を動作させることで、by-path名、by-id名を確定します。
• ゲストOSに対する仮想ブロックデバイスの追加
ゲストOSに対して仮想ブロックデバイスを追加する場合には、管理OSのby-path名またはby-id名を 指定します。
仮想ブロックデバイスの具体的な設定方法は、「9.2.4.1 仮想ブロックデバイスの追加」を参照してくだ さい。
1つのゲストOSで接続できる仮想ブロックデバイス数
1 つのゲストOS において、ドメイン構成ファイルに指定できる仮想ブロックデバイス数は、hda(システ
ムボリューム)、xvdb-xvdp(データ領域)を含めて16個です。
仮想ブロックデバイスの割当
管理OSでは、ゲストOS間のI/Oの排他制御を行いません。ゲストOSからのI/Oは、管理OS上のアプ リケーションのI/Oとして扱われるため、ゲストOS に割り当てた仮想ブロックデバイスは、アプリケー ションに割り当てたブロックデバイスと同等に扱います。このため、意識してゲスト OS 間の共用をしな い限り以下の点に注意してください。
• 管理OSの1つのブロックデバイスを、1つのゲストOSの複数の異なる仮想ブロックデバイスとして 割り当てないでください。割り当てた場合には、データが破壊される可能性があります。
• 管理OSの1つのブロックデバイスを、複数のゲストOSの仮想ブロックデバイスとして割り当てない でください。割り当てた場合には、データが破壊される可能性があります。
仮想ブロックデバイスの追加および削除
管理 OS 上に存在しないブロックデバイスを指定してディスクの追加を行った場合、コマンドがエラー復
帰するまでに、時間がかかります。
3.5.4 仮想ブロックデバイスの構成例
ここでは、仮想システムにおける仮想ブロックデバイスの構成例を示します。
管理OSのシステムボリューム、ゲストドメインのシステムボリュームおよびデータ領域をすべてディスクア レイ装置に配置した場合の仮想ブロックデバイスのレイアウト例は、以下のとおりです。
“virsh attach-disk”コマンドの詳細については、「9.2.4.1 仮想ブロックデバイスの追加」を参照し てください。
図3.21 仮想システムにおける仮想ブロックデバイスのレイアウト例
また、図3.21に示したディスクのレイアウトにおけるブロックデバイスと仮想ディスク名および仮想ブロック デバイスの構成例は、以下のとおりです。
表3.5 ブロックデバイスと仮想ディスク名および仮想ブロックデバイスの構成例 OS種別 ブロックデバイス 仮想ディスク名 仮想ブロックデバイス 用途
ドメイン0 /dev/sdb - - システムボリューム
ゲストドメイン1 /dev/sdc hda /dev/hda システムボリューム
/dev/sdd xvdd /dev/xvdd データ領域