4番目の部分。 前の部分:
first 、
second 、
third 。
この章では:ブロックデバイス:物理および仮想。 ディスクイメージ、ストレージ。
機械制御の観点から、これは最も有益な部分です。 ネットワーク管理(以下の部分)でさえ、ディスクよりも簡単です。 その理由は単純です。仮想化におけるディスクデバイスは最も複雑な抽象化です。
実際の説明に移る前に、ディスクデバイスのプロパティをリストします。
- 情報を保存します。
- 将来の情報のために空きスペースがあります。
- 特定のコンピューターに接続されておらず、コンピューターを切り替えることができます。
- 情報を記録、読み取りできます。
- 古い情報を消去し、古い情報を上書きすることができます。
このリストの各行は、個別の実装を必要とする個別のプロパティです(比較のため、ネットワークインターフェイスには、情報を送受信できる2つのプロパティしかありません)。
仮想化の場合、これらのプロパティは2つのグループに分けられます。1つ目は、情報の
保存に関連しています。 2番目は、情報ストレージの場所への
アクセスに関連してい
ます 。
明らかに、アクセス(アクセスプロセス)は仮想マシンと密接に関連しています。 しかし、ストレージプロセスはそうではありません。 書く人がいなくても保存できますが、保存する人がいなければ書けません。 ただし、書き込みを行う人がいないと同じ方法で情報を書き込むことはできないため、アクセスプロセスは仮想マシンと情報ストレージの両方と密接に関連しています。
したがって、ストレージとアクセスが機能的に分離されています。 XCPでは、それらは別々のエンティティに関連付けられます:ストレージ-VDI(仮想ディスクイメージ)、アクセス-VBD(仮想ブロックデバイス)。 VDIは仮想マシンのコンテキスト外に存在する場合がありますが、VBDは存在しない場合があります。 VDIは異なる時点で異なる仮想マシンに接続できます。VBD-いいえ、仮想マシンなしでは存在できません。 実際、VBDはゲスト仮想マシンのブロックデバイスです。
VDIとVBDの違いは、ハードディスクと/ dev / sdaの違いとほぼ同じです-両方とも異なりますが、最初のものを手に持つことができ、2番目のものはオペレーティングシステムの抽象化です。 (そして、/ dev / sdaの助けを借りてのみ、そして各コンピューター/ dev / sdaに対してディスクに書き込むことができますが、コンピューター間を行き来する同じディスクを指すことができます)。
VBD自体は2つの部分で構成されています。1つは仮想マシン内に、2つ目はdom0(管理用仮想マシン)内にあります。 ディスク要求をほとんど変更せずに受け入れたdomU(ゲストマシン)内のドライバーは、「out」を渡し、結果を受け入れて、ゲストマシンのカーネルに渡します。 dom0の半分のドライバーははるかに複雑で、ドライバーの前半からのリクエストを受け入れ、リクエストの実質的な作業(読み取り、オペレーティングシステムまたはストレージへのリクエストの送信)をすべて実行し、結果を返します。 この形式の分離は、Xenでゲストシステム用のドライバーを非常に迅速かつ簡単に作成できるように行われます。 幸いなことに、管理中にこの分離は表示されず、VBDは単一のエンティティとして認識されます。
最も原始的な実装でのVDIは、ディスクのバイトコピーです。 ただし、実際にはこれは無駄である(場所が消え、大量のデータが繰り返される)ため、VDIはほとんどの場合、バイトごとの対応とは大きく異なる可能性があります。 第一に、基礎となるストレージは、重複ブロックが物理ディスクに1回書き込まれ、残りが単なるリンクである場合にシンを提供できます。 そのようなブロックに書き込むと、それらがコピーされ、リンクが削除されます(コピーオンライトテクノロジ)。 さらに、一部のストレージ(特殊な鉄片を指す)は、重複ブロックの独立した検索とリンクへの変換を提供できます。
第二に、誰も何も書いていない領域(空のスペース)は簡単に「絞る」ことができます。つまり、実際の数千のゼロを「ゼロしかない」というエントリに置き換えます。 この最も単純な例は、スパース(スパース)ファイルです。このファイルには、書き込まれていない領域は保存されず、ファイルの中央に「穴」が形成されます。
VDIストレージの場所はSR-ストレージリポジトリと呼ばれます。 SRは抽象化であり、物理的な具体化はありません。 物理的な実施形態を実装する方法を正確に示すために、SM(ストレージマネージャー)が使用されます。 各SRは、アクセスするSMとSMに渡すパラメーターを示します。
XCPを完全なプラットフォームにするXen Cloud Platformの主要な機能(複数のコンピューターのベアXenと比較して)は、共有ストレージ(共有SR)の概念です。 これらは、すべてのホストが同じ設定で同時に接続されるストレージです。 短時間でホスト間でマシンを移行する機能を提供する共有SRです。
SMは、大まかに言って、ドライバーです。 複数のホストが同じストレージに接続できるため、もう1つの抽象化を使用してホストを物理的に接続します-PBD(物理ブロックデバイス)。 ホストがストレージ(SR)に接続するとき、一連のパラメーターでドライバー(SM)を使用します。 ドライバーは接続(つまり、SM頭痛)を確立し、PBDをホストに発行します。 PBDの例には、マウントされたnfs-ball、接続されたiscsi-device、ローカルハードディスク、このディスク上の個別のパーティションなどがあります。
なぜそんなに複雑なスキームが必要なのですか? リポジトリの特定の機能から可能な限り抽象化することができます-「リポジトリドライバー」(SM)はXCPの標準インターフェイスを提供します。これにより、たとえば、XCPのコードを変更せずにNFSを簡単にファイバーチャネルに置き換えることができます。
したがって、SRをホストに接続すると次のようになります。新しいストレージの作成時に、プール内のすべてのホストに「SRなどに属するSMなどのパラメーターでPBDを作成」コマンドが送信されます。 各ホストはこのコマンドを実行します。 同様に、ホストがプールに受け入れられると(すべての共有SRのすべてのPBDが作成されます)。 起動時に、各ホストはすべてのPBDを新しい方法で接続します。 一部のPBDを接続できない場合、それらはプラグなしとしてマークされ、仮想マシンを起動するためにホストが選択される順序に影響します。
共有リポジトリに加えて、「個人用」ホストリポジトリもありますが、移行する権利のSRに保存されているVDIに接続された仮想マシンを自動的に奪うため、製品には推奨されません。 ローカルSRのアプリケーションの1つは、物理的なネジ(通常はサーバーの移行中)や物理的なCDへのアクセスです。
ちなみに、ストレージのシン提供、sparced-files、copy-on-writeの透過的な動作がどのように提供されるかが明らかになります。 これはSMの頭痛です。 彼は「そのようなブロックの薄いコピーを作成する」と言われ、SMは見た、見た、できれば、薄いコピー(リンク)を作成し、できなかったなら、ddを開始して厚いコピーを作成した。
ちなみに、SR間のVDIのコピーは常に高価な操作であるということは簡単に理解できます。すべてのVDIブロックをコピーする必要があります。
仮想マシンディスクの接続スキームを繰り返しましょう。
仮想マシンにはVBDがあり、VBDはそれに関連付けられたVDIを示し、VDI(管理単位として)はそれが配置されているSRを示し、SRは使用されるSMを示します。 仮想マシンはいくつかのホストにあり、ホストにはアクセスに使用されるPBDが関連付けられています。
最も興味深いことは、マシンの移行中に発生します。あるホストではVDIが閉じられ、別のホストでは同じSR内の別のPBDを介してアクセスが確立されます。 そうでない場合、移行はキャンセルされ、マシンは同じホストに残ります(これは重要なことです。誤った移行の場合、ホストに多くのブレーキをかけることができますが、これは仮想マシンの動作に影響しません)。
ストレージの種類
実際、これらはSRのタイプフィールドであるXCPに付属するSMです。
* iscsi-単一のVDIのブロックデバイス(これは、すべてのSRが単一のVDI専用であることを意味します)
* lvmohba-接続されたファイバーチャネルの上のLVM。 主なものは、論理ボリュームを使用して1つのデバイスに複数のVDIを保存する機能です。 ボリュームはXCP自体によって管理されます。
* file-ローカルストレージ、ディスクイメージファイルが存在するディレクトリのみ
* lvm-ローカルストレージ、ローカルハードドライブ上のLVM。 各VDIは個別のボリュームです。 XCPによって管理されます。
* udev-フラッシュドライブを仮想マシンに固定するためのかわいいおもちゃ。SRは単一のVDI、ローカルストレージを提供します。
* nfs-VHDファイル形式のVDIイメージはNFSボールに保存されます。 ファイルとの違いは、このリポジトリがグローバルであり、ボールをホストに接続することはXCPによって制御されることです。
*ダミー-ダミー、VDIを保存できません。
* hba-単一のVDIを保存するための指定されたブロックFCデバイスの割り当て。
* ext-やや歪んだデザイン-VDIファイルは、指定されたブロックデバイスのXCPによって作成されたext3パーティションにVHD形式で保存されます。
* ISOファイルのISOリポジトリ。
* lvmoiscsi-iSCSIブロックデバイス上のLVM。
ご覧のとおり、このリストには3つの重要なタイプがあります:lvmoiscsi、lvmohba、nfs-「バッチ内の仮想マシン」にのみ使用できます(残りは特定の場合でも使用できます)。
XCPをインストールするときに、ローカルストレージを実行するかどうかを確認することに注意してください。 yesと答えると、タイプlvmでSRを取得します。
残念ながら、FCでの作業経験はほとんどないため、重要なことは何も言いません。 NFSとISCSIの選択は、次の違いによって決まります。
NFSは、スペースの使用密度が最も高く(スパースファイルが使用される)、非常に優れた読み取りキャッシュを提供します。
iscsiは、最初に疎領域に書き込むときの書き込み速度を上げ、ブレーキを減らします。
NFSのもう1つの利点は、ストレージ上のVDIを簡単に操作できることです。VDIは通常のファイルのように見えます。 iscsiの場合、ブロックデバイスの上にlvmがあり(ネットワークストレージではパーティションまたはファイルになることもあります)、その中のVDIは論理ボリュームを表します。 ストレージから「ピース」アクセスするのははるかに困難です。 さらに、NFSは暗号化保護がなく、IPアドレスでのみ検証する3番目のバージョンで使用されます。 これに対して、iscsiはchapを使用した相互認証を使用するため、個人的なアドバイスはiSCSIを使用することです。 さらに、iscsiはマルチパス
[?]をサポートし、XCPもサポートしています。
SRの構成はXCPを超えていることは明らかです。リポジトリ自体の構成も必要です。 最も一般的な間違いは、iscsiストレージへの同時接続数の制限です(標準のiscsiターゲットモードは1つの接続であり、XCPは複数の接続を許可する必要があります)。接続できるようになります。
SRを使用した操作:作成、破棄(データが削除されます!)、忘却(SRの存在レコードのみが削除され、データが保存されます)、紹介(SRおよびその上のVDIを「検出」)、スキャン(意志とは別にそこに表示されたものを検出できます) XCP vdi、これは特にNFSに当てはまります。 さらに、xe-sr-probeコマンドを使用すると、リポジトリを作成するためのリクエストを作成できます(より正確には、正しいパラメーターを選択します)。 ただし、この問題についてはXCPマニュアルで詳しく説明されています。
SRの重要なフィールドはsm-config(SM構成)です。 特に、thickまたはthinの場所の割り当てのタイプを示します(iscsiの場合は厚く、nfsの場合は薄くなります)。
VBD
既に述べたように、VBDの実際の意味は、VDIにアクセスできるようにする仮想マシン内のブロックデバイスです。
したがって、VBDには、仮想マシンのuuid、uuid VDI、および
numberという重要な属性があります。 数字は単なる数字で、マザーボードのSATAポート番号にほぼ対応しています。 Linux内のVBD自体は、/ dev / xvda、/ dev / xvdb、/ dev / xvdc ...と呼ばれます(好奇心のために:/ dev / xvdzが来て/ dev / xvdaaになり、最大256個のデバイスの制限まで)。
慣例により、VDIがVMに接続されるたびに、新しいVBDが作成されます(ただし、VBDは必要に応じて何度でもプラグイン/アンプラグドのステータスを変更できます)。VDIまたはVMが破棄されると、自動的に破棄されます。
VBDの重要な属性は、「ブート可能」フラグの存在です。 本物の鉄との類推は困難です。たとえば、これはBIOSで示されるブートディスクの類推です。 重要:仮想マシンを起動するには、bootable = trueフラグが設定されたVBDが接続されている必要があります。 マシンを起動した後、任意の量にしがみつくことができます-起動を開始するには、起動可能なものが唯一でなければなりません。
さらに、vbdには、アンプラグ可能と空という2つの重要な属性があります。 unplugableの意味は名前から明らかです(デバイスは外出中にオフにすることはできず、通常はシステムドライブに設定されます)。Emptyはおもしろいです:vbdを使用すると、ハードディスクイメージだけでなくISOイメージも「固執」できます。 。 これは、ドライブからのディスクの取り外しをシミュレートするためのものであり、空の属性が意図されています。
さらに、属性roがあります。これにより、ドライブを読み取り専用モードで接続できます(ゲストマシンからは回避できません)。
同じVDIの場合、同じマシンに複数のVBDが存在する場合があります。 残念ながら、既存のシステムでは、一度に1つしか接続できません(ただし、VDIが順番に機能する2つの仮想マシンに接続されている状況を想像することはできます)。
VBDの一般的な操作:create、destroy(ディスク上のデータを破壊せずにディスクとマシン間の接続を破壊する)、plug、unplug。 CDの挿入/削除の模倣もあります-ロード/イジェクトですが、これはファンサービスです。
興味深い属性:仮想割り当て、物理利用、物理サイズ。 最初の2つは、シンプロバイダーによって大きく異なる場合があります。 ISOがSRに保存されることを示すために、別のコンテンツタイプフィールドが特別に作成されました。 タイプフィールドは、ドライブかcdrom(使用可能なコマンドの異なるサブセット)かを示します。
Vdi
VDIにも属性があります(実際には、多くの属性があります。作業で最も重要で使用されるもののみを示します)。 これはr / oフラグ(はい、roはvbdレベルまたはvdiレベルでも設定可能)および「子孫の祖先」です。 親子関係およびVDIのシンコピーの詳細については、スナップショットに関する次の章を参照してください。
興味深い属性:virtual_size(作成時に設定)およびphysical_utilisation。使用されているスペースの量を示します(ストレージの観点から)。
典型的な操作:作成、破棄(VDIでデータだけでなく、VBD-VDIとVM間の接続も破棄)、コピー(常にシックコピー)、クローン(可能であれば、コピーオンライトモードでのシンコピー)および...私たちのお気に入り、
サイズ変更 。 はい、xcpを使用すると、ディスクのサイズを変更できます。さらに、サービスを中断することなく、外出先でこれを行うことができます。 唯一の問題は、ゲストシステムが現時点ではまったく準備ができていないことです。エレガントなxe vdi-resizeの後、パーティションの完全に適切なサイズ変更、ファイルシステムのサイズ変更を行う必要があります。
ISOの場合、SRプロパティのコンテンツタイプや、xe vm-cd-add、xe vm-cd-ejectなどの大規模な松葉杖が発明されましたが、実際にはISOは接続するVDIと同じですタイプCDROMのVBDを使用。 これが排他的にR / Oであり、CD / DVD-RWがエミュレートされないことが重要です。
VDIの自動作成
ゲストマシンテンプレートのトピックについては後で説明しますが、今のところ、テンプレートからマシンを作成すると(これがXCPで仮想マシンを作成する唯一の方法です)、新しいディスクが新しいマシン用に作成されます。 テンプレートのother-configフィールドに書き込まれたプロビジョニング値のおかげで作成されます(ディスクの内容の説明のみ)。 テンプレートの1
<provision><disk device="0" size="8589934592" sr="" bootable="true" type="system"/></provision>
例を次に示します。
<provision><disk device="0" size="8589934592" sr="" bootable="true" type="system"/></provision>
。 ご覧のとおり、XML'yにかかわらず、構文は明確です。ゼロ(最初の)デバイス、ブートディスク、サイズ8GB。
タイプに関する別の小さなメモ(タイプ=システム)。 XCPでは、システムディスクはVMに接続され(それなしでは意味がありません)、タイプ=ユーザーはデータを保存し、仮想マシンの問題に悩まされることはないと考えられていました。 残念ながら、この場所にはバグがあり、場合によってはシステムがユーザーとして扱われます(その逆はありません)。 Systemタイプのマシンを作成するときに作成されるディスクには、次のルールが適用されます。マシンが削除されると(vm-uninstall)、これらのディスクは破棄されます。 ユーザーディスク、いいえ。
バグは、手動でシステムタイプを使用してvdiを作成した場合、マシンを削除しても削除されないことです。 原則として、これはそれほど大きな問題ではありませんが、車を頻繁に作成し、システムディスクをフックしてマシンを取り外すと、スペースが不足し、不要なディスクを手でこすらなければならない場合があります。
次の問題:移行、テンプレート、スナップショット、親子関係、マシンのクローン作成、仮想マシンのインストール、HVM。