仮想マシンの新規作成方法
このページでは、Proxmox VEを使用して、HRPC KMV版上で仮想マシン(VM)の新規作成を行う方法をご案内しています。
ユーザーはアップロードされたISOファイルを利用し、CPU、ストレージ、ネットワークなどの項目を設定することで、環境や用途に合った仮想マシンを作成することができます。ここでは例示として、Linuxのセットアップを行っています。
仮想マシンを新規作成する
1.新規作成ボタンをクリックする
HOME画面の「VMを作成」をクリックします。
2.全般設定
- ノード
- 仮想マシンを作成するノード(物理サーバー)を選択します。
- VM ID
- Proxmox VE内でVMを識別するための一意の番号が自動で割り振られます。初期値は100から順次割り振られていきます。
- 名前
- 仮想マシンの名前を入力します。ここではホスト名を推奨しています。
- リソースプール
- 仮想マシンを作成するリソースプール(VMの論理グループ)を選択します(任意)
- 「次へ」をクリックします。
3.OS設定
- 「CD/DVD イメージファイル (iso) を使用」
- 「ストレージ」から、ISOファイルをアップロードしたファイルシステムを選択します。HCI設計のサーバでは「cephfs」が、3Tier型の場合は、設定されたBSFかESFの、NFS名が利用されています。
- ISOイメージ
- ISOイメージを選択します。ISOイメージは、インストールするゲストOSに適したものを選択します。
- ゲストOS
- インストールするゲストOSの種別とバージョンを選択します。
- 「次へ」をクリックします。
このときに選択するISOイメージは、ユーザ自身がアップロードしたものを利用出来ます。詳しくは、サポート情報/マニュアル/HRPC - Proxmox VE/その他/isoイメージのアップロード方法を参照してください。
4.システム設定
- グラフィックカード
- 規定
- マシン
- 規定(i440fx)※特に変更する必要はありません
- ファームウェア BIOS
- 規定(SeaBIOS)、あるいはOVMF。
- SCSIコントローラ
- デフォルトの「VirtIO SCSI Single」。参考≫ SCSIコントローラについて
- Qemuエージェント
- Qemu-guest-agent(QEMUゲストエージェント)をインストールする予定の場合、チェックボックスにチェックを入れます。
- TPM追加
- Windows11や、Windows Server 2022以降のOSを利用する時はチェックが必要です。
- 「次へ」をクリックします。
SCSIコントローラについて
デフォルトのVirtIO Singleにすると、1つのSCSIコントローラに次の節にある仮想ディスクを複数作成した際に、全てがこのコントローラに接続するように見えます。これにより、仮想マシン内のメモリやデバイスが節約されます。
「VirtIO SCSI」を選ぶと、個別のSCSIバスに個別の仮想ディスクが繋がって見えるようになり、個別のドライバ空間とメモリが必要となります。しかし、仮想マシンからのIO速度が分散されることでワークロードによっては速度が向上することがあります。
それ以外の物理SCSIカードのエミュレーションは、通常は利用すべきではありません。
5.ディスク設定
仮想ディスクの設定をします。ここではディスクのコントローラ(バス/デバイス)とそこに繋がる仮想ディスクを設定します。
- バス/デバイス
- IDE:仮想ディスクを4台まで利用が可能です。ほぼ全てのOSがサポートします。
- SATA:仮想ディスクを6台まで利用が可能です。ハードウェアとの互換性はこれが一番高くなります。
- SCSI:システム設定で設定したSCSIコントローラに接続します。VirtIO SCSI、あるいはVirtIO SCSI Singleになっているとき、もっとも高速にディスクアクセスが可能になります。
- SCSIコントローラ
- 前節で設定したSCSIコントローラが記載されています。VirtIO SCSI Single、あるいはVirtIO SCSIが設定されています。
- ストレージ
- HCIモデルの場合はCephPool、IaRの場合はics0、3Tier型の場合はesf0などが接続されています。
- ディスクサイズ(GiB)
- 必要なディスクのサイズを指定してください。esf0の場合、形式を選ぶ必要があります。rawがアクセスが速く、QEMU形式(qcow2)はスナップショットの取得(ただし制限あり)が可能です。
- キャッシュ
- データ整合性が最重要である場合はdirectsyncを選び、パフォーマンスを優先する場合はWrite Backを選びます。リードのみキャッシュしたい場合はwrite throughを選びます。
- 中止(discard)
- ストレージに対し、削除して不要になった領域を「Discard(破棄)」させます。Discardさせることで、Thin Provisioningに対応したストレージではデータ容量の解放が行われるため、仮想マシン内で削除したデータ領域が、ストレージからも解放されることになります。なお、CephPoolはThin Provisioningに対応しています。Discard機能は、SSDによって導入が進んだTRIM機能を利用しているため、ゲストOSに対してSSDエミュレーションがする必要がある場合があります。
- IO thread
- IOスレッドを有効にすると、VirtIO SCSIなどを利用する際、ディスクの書き込みの実際の処理を、「親OSの」メインスレッドとは別のスレッドで扱うようになります。これにより、次節のCPUコア設定に加えて、さらにCPUのスレッドを要求することになりますが、特に複数の仮想ディスクに渡って書き込みが発生するような場合、ディスクの読み書きのレイテンシが短縮することになります。
- 「次へ」をクリックします。
ディスクコントローラについて
IDE(別名ATA)が策定されたのは1988年であるため、ほぼ全てのOSがサポートしています。2003年以前にリリースされたOSではこちらを利用するのがよいでしょう。物理的なIDEは133MB/secが最大速度でしたが、仮想化する場合、IDE自体の実装はとてもシンプルな構造であるため、133MB/secの律速はありません(OS内で敢えて律速している場合は除く)。しかし、IDEはホットスワップの規格がなかったため、仮想マシンの中でデバイスの取り外しができません。
SATAは、2003年以降に登場したOSに向いています。対応昨今のOSでは、互換性をこれが一番高いと言えます。物理的にはIDEをシリアル化したものにすぎず、6Gbps(約600MB/sec程度)までの速度でしたが、仮想化する場合はゲストOS内で敢えて律速しない限り、この律速はありません。
VirtIO SCSI、VirtIO SCSI Singleは、もっとも高速にディスクアクセスが可能になります。ただし、ゲストOS内に準仮想ドライバが含まれている必要があります。IDE/SATAのディスクが一切繋がっていないシステムの場合、OSのインストール時にVirtIO SCSIドライバをインストールしなければ、OSのブートができません。Linuxではおよそ2012年のディストリビューションからこのドライバが提供されており、FreeBSDでは2014年以降、Windows OSの場合は、インストール中にVirtIOドライバを含む追加のISOファイルを提供する必要があります。
ディスクキャッシュについて
ディスクキャッシュの設定は安全性と速度のトレードオフになっています。
- キャッシュ無し
- ゲストのI/Oはホストのキャッシュをバイパスし、ディスクに直接書き込みます(O_DIRECT)。ただし、書き込み要求に対してfsyncは発効されません。これにより、データの整合性が高まりますが、パフォーマンスは他のキャッシュモードと比べて劣る傾向にあります。
- writethrough
- 書き込み操作はホストのキャッシュを通じて行われますが、データは即座にディスクに書き込まれ、fsyncを発効します。これにより、データの整合性が保たれつつ、読み取りパフォーマンスも向上しますが、書き込みパフォーマンスは向上しません。
- writeback
- 書き込み操作はまずホストのキャッシュに保存され、その後ディスクに書き込まれます。これにより、書き込みパフォーマンスが向上しますが、ホストの障害が発生した場合、データが失われるリスクがあります。
- directsync
- ゲストのI/Oはホストのキャッシュをバイパスし、ディスクに直接書き込みます(O_DIRECT)。書き込み要求に対してfsyncを発効します。このモードはデータの整合性が非常に高くなりますが、パフォーマンスは他のキャッシュモードと比べて劣ります。
- unsafe
- キャッシュを最大限利用して、パフォーマンスを高めるモードです。ただし、ホストのクラッシュが発生した場合、データが失われるリスクが非常に高くなります。
下記はこれらをまとめた表となります。
特徴 | writethrough | directsync | none | writeback | unsafe |
---|---|---|---|---|---|
キャッシュの使用 | ページキャッシュを使用(読み取りに有利) | キャッシュを使用しない | キャッシュを使用しない | ページキャッシュを使用 | ページキャッシュを使用 |
fsync の発行 | 書き込みごとに発行 | 書き込みごとに発行 | 発行されない | 遅延して発行 | 発行されない |
書き込みの流れ | キャッシュに書き込み後、即座にディスクにフラッシュ | ディスクに直接書き込み、すぐにフラッシュ | ディスクに直接書き込み、フラッシュなし | キャッシュに書き込み、遅延フラッシュ | キャッシュに書き込み、フラッシュなし |
読み取り性能 | 高い(キャッシュを利用) | 低い(ディスクに依存) | 低い(ディスクに依存) | 高い(キャッシュを利用) | 高い(キャッシュを利用) |
書き込み性能 | 中程度(キャッシュ経由) | 低い(キャッシュなし) | 中程度(キャッシュなし) | 高い(キャッシュ利用で遅延) | 非常に高い(キャッシュ利用で遅延) |
データ整合性 | 高い | 非常に高い | 中程度(ディスク依存) | 低い(書き込みが遅延) | 非常に低い(データ損失のリスク高) |
主な用途 | 読み取り中心でデータ整合性が重要なシステム | データ整合性が最優先のシステム | 高速性が重要で、整合性が二次的なシステム | 書き込み性能が重要だが、ある程度の整合性も必要なシステム | 書き込み性能を最優先するが、データ損失リスクが許容されるシステム |
6.CPU設定
- ソケット
- ゲストOSに対して、複数ソケットのようにみせることができます。通常は1で構いませんが、ソケット数を複数割り充てる必要があるライセンス形態のソフトウェアを利用する時に指定します。
- コア
- 仮想マシンのコア数を指定します。合計のコア数はソケット数xコア数で決まります。ソケットとコアの配分は、仮想マシンの速度には影響しません。従って、CPUパワーが必要なときは、コア数を増やすことになります。
- 種別
- 仮想OSにみせるCPUタイプを表します。通常のOSでは「x86-64-v2-AES」のままで構いません。
- 「次へ」をクリックします。
CPUの種別について
CPUの種別設定では、CPUの世代や機能ごとに選ぶことができますが、最下段の「host」を選ぶと物理ホストと同じCPUを利用し、もっとも効率良くCPUを活用する事ができます。しかし、世代が異なるホスト間でライブマイグレーションができなくなるため、将来、仮想データセンターに新しいHRPCを増設する際、問題となる可能性があります(ただし、Intel/AMD間でのライブマイグレーションの保証はありません)。
現在のほとんどのOSは、x86-64-v2であれば動きます。 SSE3、SSSE3、SSE4.1、SSE4.2、POPCNT、CMPXCHG16Bなどのの命令セットがサポートされています。x86-64-v2-aesは、AES暗号化命令がサポートされているため、暗号化するソフトウェアが高速に動作します。
x86-64-v3を選ぶことで、AVX/AVX2命令の利用ができるようになります。またx86-64-v4を選ぶことで、加えて、AVX512命令セットを利用することができます。
当社のプライベートクラウド6Gt以降モデルで、すべてx86-64-v4に対応しています。
表にしたものが下記の通りになります。
プロセッサ | x86-64-v1 | x86-64-v2 | x86-64-v2-aes | x86-64-v3 | x86-64-v4 |
---|---|---|---|---|---|
対応命令セット | ベースx86-64命令セット | SSE3, SSSE3, SSE4.1, SSE4.2, POPCNT, CMPXCHG16B | x86-64-v2 + AES | AVX, AVX2, BMI1, BMI2, FMA, MOVBE | AVX-512ファミリー(AVX-512F, AVX-512CD, AVX-512DQ, AVX-512BW, AVX-512VLなど) |
Intel Xeon | Intel Xeon 3000/5000/7000シリーズ (初代) | Intel Xeon 5500シリーズ (Nehalem) 以降 | Intel Xeon 5600シリーズ (Westmere) 以降 | Intel Xeon E3 v3 (Haswell) 以降, Intel Xeon E5/E7 v3 (Haswell-EP/EX) 以降, Intel Xeon Scalable Processors 1st Gen (Skylake-SP) 以降 | Intel Xeon Scalable Processors 2nd Gen (Cascade Lake-SP) 以降, Intel Xeon Scalable Processors 3rd Gen (Ice Lake-SP) |
AMD Opteron | AMD Opteron 100/200/800シリーズ (SledgeHammer) | AMD Opteron 4200/6200シリーズ (Bulldozer) 以降 | AMD Opteron 4300/6300シリーズ (Piledriver) 以降 | 該当なし | 該当なし |
AMD EPYC | 該当なし | 初代 AMD EPYC (Naples) | 初代 AMD EPYC (Naples) | AMD EPYC 7002シリーズ (Rome) 以降 | AMD EPYC 7003シリーズ (Milan) 以降 |
7.メモリ設定
- メモリ(MiB)、最小メモリ量(MiB)
- 必要なメモリ量を設定します。通常は同じ値を入れます。
- Ballooningデバイス
- チェックを外します。
- 「次へ」をクリックします。
KVMのメモリ管理とBallooningドライバ
KVMでは、最小メモリ量をメモリと同じ値に設定する事で、設定上は固定メモリ設定ができます。しかしKVMではLinuxのメモリマネージメント特性を引き継ぐため、メモリ確保は最小メモリ量と同じ分起動時に行われていますが、実際に使用されるのは初めてメモリにアクセスした時点からです。つまり実質的にはメモリは動的に使用されます。これはホストや仮想マシンのサマリのメモリ使用状況を見ることで、実際の仮想マシンへの割当より、使用しているメモリ量がかなり少なく表示されることから状況の把握ができます。
通常のKVMシステムでは、メモリが空いている限り仮想マシンを作成する事ができます。メモリ量が少なくみえるため、管理者は仮想マシンに実際の搭載メモリ量よりも多くのメモリを割り当ててしまい、これをメモリオーバーコミットといいます。この状況下で、いくつかの仮想マシンで多くのメモリを使うと、メモリ不足を引き起こしシステムが不安定になります。
Ballooningデバイスが仮想マシンで有効になっていると、その仮想マシンの中でBallooningデバイスがカーネル内でメモリの使用量を増やすように見せかけることで、デバイスがゲストOS内でメモリを開放し、これをホストOSに返却します。
これは、ホストシステムのメモリが足りなくなった時に行われますが、メモリが不足する瞬間に、この現象が起こりやすくなります。比較的短い時間内に多くの仮想マシンでこの処理が起きることで、CPUに負荷がかかりますし、仮想マシン内でもディスクキャッシュが解放された結果、IOが増えるなど、結果としてホスト全体の様々な処理が遅延し、不安定さを引き起こします。特にHAシステムはレイテンシの遅れに敏感であり、不安定さを引き起こす原因となります
HRPC6Gfは、安定化したハイパバイザチューニングを施しており、搭載されているメモリ以上、仮想マシンにメモリを割当できないように設計されています。したがって、HRPC6Gfにおいて、Ballooningデバイスは実際には、ほぼ意味を持ちません。
8.ネットワーク設定
- ブリッジ
- VNS名のブリッジが設定されています。YCN-LAN0の場合、YCN_LAN0となっていますので、ご注意ください。
- VLANタグ
- no VLANのままとしておいてください。
- モデル
- 通常、VirtIOを設定します。
- 「次へ」をクリックします。
9.設定を確認する
入力内容を確認し、「完了」をクリックします。
10.仮想マシン作成完了
「2:全般設定」で指定したノードの下に仮想マシンが作成されます。
11.仮想マシンを起動する
次にゲストOSのインストールが必要です。「コンソール」タブに移動し「Start Now」ボタンを押して、仮想マシンを起動します。
仮想マシンを起動する前に、「ゲストOSインストール時のご注意」をご確認ください。仮想マシンの起動後は、インストーラーに従ってゲストOSのインストールを開始します。
12.ゲストOSをインストールする
画面に従ってゲストOSをインストールします。