🖥️

【Proxmox VE 実践編】最初の仮想マシン(VM)作成ガイド:各設定項目の考え方を徹底解説

に公開

【Proxmox VE 実践編】最初の仮想マシン(VM)作成ガイド:各設定項目の考え方を徹底解説

前回の記事では、Proxmox VEのDatacenterやStorageといった、管理画面の基本的な概念について解説しました。

https://zenn.dev/koikoi_infra/articles/005bcb163d8381

今回はその知識を元に、いよいよProxmox VEの最も中核的な機能である仮想マシン(VM)の作成を行います。
この記事では、どんなVMを作成する場合にも通用する設定の考え方を、具体例としてUbuntu Server 22.04 LTSを使いながら解説していきます。


1. VM作成の開始とOSイメージの準備

まず、PVEの管理画面右上の「VMを作成」ボタンをクリックして、作成ウィザードを開始します。

全般タブ:VMのIDと名前を決める

ウィザードの最初のタブでは、作成するVMの基本的な情報を設定します。

  • VM ID: Proxmox VEがVMを管理するための一意の番号です。後から変更できないため、分かりやすい番号をつけましょう。一般的に100番から利用されます。
  • 名前: 管理画面に表示される、人間が分かりやすい名前です。ubuntu-server-01のように、役割がわかる名前をつけると便利です。
  • リソースプール: 複数のVMやコンテナを「グループ」としてまとめるための機能です。例えば「開発チーム用」「検証チーム用」のようにVMをグループ分けし、そのグループに対してまとめて権限を設定する、といった高度な管理が可能になります。
    個人利用や小規模な環境では、特に設定する必要はありません。空欄のままで問題ありません。
補足:リソースプールとクラスター構造の違い

ここで「クラスターと何が違うの?」と疑問に思うかもしれません。この2つは管理する対象が異なります。

  • クラスター/ノード: **サーバー(親機)**を管理するための物理的・論理的な構造です。「会社」の中に「部署(クラスター)」があり、「社員(ノード)」が所属するイメージです。
  • リソースプール: **VMやコンテナ(子機)**を管理するための、完全に論理的なグループです。部署をまたいで結成される「プロジェクトチーム」のように、どの社員(ノード)が担当する仕事(VM)であっても、同じチームとしてまとめることができます。

主に、この「プロジェクトチーム」単位でユーザー権限を割り当てるために使われます。

OSタブ:インストールメディアの選択

最初にOSタブが表示されます。ここで、VMにインストールするOSのISOイメージファイルを選択します。

  • ISOイメージ: 事前にlocalストレージなどにアップロードしておいたOSのインストールメディアを選択します。

  • ゲストOS: インストールするOSの大まかな種類を、ユーザーがPVEに教えるための項目です。ここでの選択は、PVEが内部設定を最適化するためのヒントとして利用されます。

    Linuxを選択した場合、カーネルバージョンを選ぶ項目が表示されます。もし判断に迷う場合は、インストールしたいOSの公式サイトで「リリースノート」を確認し、カーネルバージョンが範囲内にあるかを確認すると確実です。とはいえ、モダンなLinuxディストリビューションであれば、既定の「Linux (6.x - 2.6 Kernel)」が広範囲をカバーしているため、まず問題ありません。


2. システムとディスク:VMの土台を作る

次に、VMの基礎となるハードウェアの世代や、データを保存するディスクを設定します。ここでの選択がVMの性能と安定性を大きく左右します。

システムタブ:仮想マザーボードと起動方式

  • マシン (Machine): 仮想的なマザーボードの種類です。原則としてq35を選択します。
    根拠: q35はPCI Expressベースのモダンな規格であり、ディスクI/Oなどの性能が向上します。また、将来的にGPUパススルーなどの高度な機能を利用する際の前提条件にもなります。古いOSを動かすなどの特殊な理由がなければ、i440fxを選ぶメリットはありません。
  • ファームウェア (Firmware): OSの起動方式です。原則としてOVMF (UEFI)を選択します。
    根拠: UEFIは現在のPCやサーバーで標準の起動方式であり、従来のBIOSより高速に起動します。Windows 11などUEFIが必須のOSも増えており、モダンなOSの能力を最大限に引き出すための標準的な選択です。
  • QEMUエージェント (QEMU Agent): PVEホストとVMが連携するための連絡ツールです。**必ず有効(チェックを入れる)**にしましょう。
    根拠: これを有効にしないと、PVEからVMをシャットダウンする操作が「電源ブチ切り」と同じになり、データ破損の原因となります。有効にすることで、OSの正規の手順で安全にシャットダウンできるようになり、IPアドレスの表示など管理上のメリットも非常に大きいため、VM作成時の必須項目と考えるべきです。

ディスクタブ:仮想ハードディスク

  • バスデバイス (Bus/Device): CPUとディスクを繋ぐデータの通り道です。原則としてVirtIO Blockを選択します。
    根拠: VirtIOは仮想化専用に作られた超高性能な規格です。物理的なSATAやSCSIを模倣(エミュレーション)するよりも遥かにオーバーヘッドが少なく、ディスクの読み書き速度が劇的に向上します。モダンなOSであれば、ほぼ全てがVirtIOドライバを標準で内蔵しています。
  • ストレージ (Storage): VMのディスクを置く場所です。原則としてlocal-lvmのようなブロックストレージを選択します。
    根拠: VMのOSが動作するには、細かく頻繁な読み書きに強いブロックストレージが最適です。
  • IO thread: ディスクI/Oを専用スレッドに任せる機能です。**有効(チェックを入れる)**のがおすすめです。
    根拠: ディスクへのアクセスが集中しても、VMのメインCPUの処理が妨げられにくくなり、アプリケーション全体の応答性が向上します。

3. CPUとメモリ:VMのパワーを決める

VMにどれくらいの計算能力と作業スペースを与えるかを設定します。

CPUタブ:頭脳の数


ここではVMに搭載する仮想的なCPUの数を設定しますが、「ソケット」と「コア」という2つの単位が登場します。まずはこの違いを物理的なコンピュータで理解しましょう。

そもそもソケットとコアとは?

  • ソケット (Socket): マザーボード上にある、CPUチップを物理的に差し込む**「差込口」**のことです。一般的なPCのマザーボードには1つ、高性能なサーバー用には2つ以上のソケットが搭載されていることがあります。
  • コア (Core): 1つのCPUチップの中に内蔵されている、計算処理を行う**「頭脳」**のことです。現在のCPUは、1つのチップ内に複数のコアを持つ「マルチコアプロセッサ」が主流です。

つまり、「1ソケット・4コア」は「1つの差込口に、頭脳が4個入ったCPUを1つ挿す」構成を意味します。対して「2ソケット・2コア」は「2つの差込口に、それぞれ頭脳が2個入ったCPUを2つ挿す」構成となり、合計の頭脳(コア)数は同じ4つです。

Proxmox VEでの考え方

  • ソケットとコア: 「ソケット」は1に固定し、「コア」数で合計のCPUパワーを調整するのが基本です。
    根拠: パフォーマンス上の差はほぼありませんが、一部の商用ソフトウェアのライセンス問題(ソケット数課金)を確実に回避でき、設定がシンプルになります。今回の例では合計2コアとしています。
  • 種別 (Type): VMにどのような種類のCPUとして見せるかを決めます。**単一サーバーでの運用ならhost**がおすすめです。
    根拠: hostを選択すると、物理CPUの機能を最大限VMに渡すことができ、暗号化処理や動画エンコードなどで大幅な性能向上が期待できます。(クラスター環境でライブマイグレーションを多用する場合は、互換性のあるx86-64-vXなどを選択します)

メモリタブ:作業スペースの広さ

  • メモリ (Memory): VMに割り当てるRAMの容量です。これはVMの役割(ワークロード)に応じて決定します。
    根拠: OSの最小要件はあくまで起動できる最低ラインです。実際にサービスを動かすには、OS自体とアプリケーションが使用するメモリが必要なため、余裕を持たせることでパフォーマンスが安定します。今回のUbuntu Serverの例では、一般的な用途を想定し、4096MiB (4GiB)以上を推奨します。

  • 最小メモリ (Minimum memory): 原則として、「メモリ」と同じ値を入力します。
    根拠: これにより、VMは常に指定されたメモリ量を確保し、安定したパフォーマンスを維持できます。複雑なメモリ管理を意識する必要がなく、最もシンプルな設定です。

補足:Proxmox VEの賢いメモリ管理術「メモリバルーニング」

実は、「メモリ」と「最小メモリ」の値を分けることで、より高度なメモリ管理が可能になります。これはメモリバルーニングと呼ばれる機能です。

  • メモリ: このVMに最大限割り当てるメモリ量(上限)。
  • 最小メモリ: このVMが最低限確保し続けるメモリ量(下限)。

例えば、メモリを4096、最小メモリを1024と設定した場合、VMは通常時4096MiBまでメモリを使えますが、ホストOS側でメモリが不足してきた際には、PVEはVMのメモリを**最低1024MiBまで自動的に縮小(返却)**させ、リソースを有効活用できます。

ただし、この機能はメモリ使用量が頻繁に変動するVMが多数ある環境で効果を発揮するものです。まずは上限と下限を同じ値で固定し、安定運用を目指すのがおすすめです。


4. ネットワーク:外部との接続

最後に、VMが外部と通信するためのネットワークを設定します。

ネットワークタブ:仮想NIC

  • ブリッジ (Bridge): VMの仮想NICをどの物理ネットワークに接続するかを指定します。通常は**vmbr0**を選択します。
    根拠: vmbr0はPVEホストの物理LANポートに接続された標準の仮想スイッチです。これを選ぶことで、VMはルーターや他のPCと同じネットワークに直接参加できます。
  • モデル (Model): 仮想NICの種類です。原則としてVirtIO (準仮想化)を選択します。
    根拠: ディスクのVirtIO Blockと同様に、仮想化専用の超高性能規格です。ネットワークの通信速度(スループット)が向上し、遅延(レイテンシ)も減少します。

まとめ

以上でVMのハードウェア定義は完了です。「確認」タブで設定内容に間違いがないかを確認し、「完了」ボタンを押せばVMが作成されます。

作成が完了したら、左のツリーに表示された新しいVMを選択し、「コンソール」を開いてOSのインストールを開始しましょう。

Discussion