Proxmox Virtual Environment(Proxmox VE, PVE)

Proxmox VEについて、最近の僕の知見考えを書くところ

Proxmoxの仕組み

公式Docs

https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_introduction

QEMU

https://www.google.com/search?client=safari&rls=en&q=QEMU&ie=UTF-8&oe=UTF-8#imgrc=_IsukxGvcHCyxM&imgdii=UafFDV1Qqgti8M

kvm

https://www.google.com/search?client=safari&rls=en&q=kvm&ie=UTF-8&oe=UTF-8

ここら辺がキーワードっぽい

正直全くわからないけどいい感じによしなにやってくれてるらしい

Proxmox、VMのCPUTypeについて

CPUの設定をいじっているとCPUTypeを選べることに気がついた

(画面に写っているものだけで全種類の1/8くらい)

ベストプラクティスを調べてみた。

公式docsをガバ翻訳でまとめると、、、

QEMUは486から最新のXeonプロセッサまで様々なCPUタイプをエミュレートできます。新しい世代のプロセッサは新機能を追加し、マイクロコードのアップデートでバグやセキュリティ修正が行われます。通常、VMのCPUタイプはホストシステムのCPUに近いものを選ぶと、ホストCPUの機能がVMで利用可能になります。完全一致を望むなら、CPUタイプを「host」に設定します。
ただし、異なるホスト間でのライブマイグレーションでは、VMが異なるCPUタイプやマイクロコードバージョンのシステムに移動する可能性があり、CPUフラグが不足するとQEMUプロセスが停止します。このため、QEMUには独自の仮想CPUタイプもあります。デフォルトの「kvm64」はほぼ全てのx86_64ホストCPUで動作し、UIデフォルトの「x86-64-v2-AES」はWestmere以降のIntel CPUや第4世代以降のAMD Opteronを必要とします。
要約:
ライブマイグレーションを気にせず、同じCPUとマイクロコードバージョンのホストがある場合は、「host」を選ぶと最大のパフォーマンスを得られます。
ライブマイグレーションとセキュリティを重視し、Intel CPUまたはAMD CPUのみの場合は、クラスタ内の最も低い世代のCPUモデルを選びます。
セキュリティを気にせず、Intel/AMD混在クラスタの場合は、互換性のある最も低い仮想QEMU CPUタイプを選びます。
注意:IntelとAMDホストCPU間のライブマイグレーションは保証されていません。
詳細はQEMUで定義されているAMDおよびIntelのCPUタイプリストを参照してください。

らしいです。

しかし、フォーラムやユーザーコミュニティでの経験談が示すように、ベストプラクティスはベストではない結果が得られることもあるようです。

テストはベストプラクティスに勝る。

真に最適な設定を見つけるためには、独自のテストと評価が不可欠です。

参考

forum

https://forum.proxmox.com/threads/set-cpu-type-to-host-for-a-windows-vm-as-a-best-practice.136059/

公式docs

❌ Unsupported block (column_list)

SCSIコントローラー(スカシーコントローラー)

どのscsiコントローラーが良いのか調べてみた

結論

何も考えずVirtIO SCSI singleを使う

SCSIコントローラの種類

  • Default (LSI 53C895A)
    • 特徴: Proxmoxのデフォルト設定で使用されるコントローラです。互換性が広く、多くのオペレーティングシステムでサポートされています。
    • 適用シナリオ: 互換性が重要な場合や、特別なパフォーマンス要件がない場合に使用されます。
  • LSI 53C895A
    • 特徴: 安定したパフォーマンスと広範な互換性を提供する古典的なSCSIコントローラです。
    • 適用シナリオ: レガシーシステムや広範な互換性が必要な場合に適しています。
  • LSI 53C810
    • 特徴: もう一つの古典的なSCSIコントローラで、LSI 53C895Aに似ていますが、やや古いモデルです。
    • 適用シナリオ: 特定のハードウェア互換性やレガシーサポートが必要な場合に使用されます。
  • MegaRAID SAS 8708EM2
    • 特徴: 高性能なRAIDコントローラで、SAS(Serial Attached SCSI)デバイスをサポートします。ハードウェアRAID機能を提供します。
    • 適用シナリオ: 高性能なストレージソリューションが必要な場合や、RAID構成が求められる場合に使用されます。
  • VirtIO SCSI
    • 特徴: VirtIOベースのSCSIコントローラで、仮想化に特化しており、高速なパフォーマンスを提供します。
    • 適用シナリオ: 最新のLinuxカーネルやVirtIOドライバをサポートするWindowsで使用すると、最も高いパフォーマンスを実現します。
  • VirtIO SCSI single
    • 特徴: 単一のIOスレッドを使用するVirtIOベースのSCSIコントローラです。IOスレッドを有効にすることで、メインスレッドの負荷を軽減します。
    • 適用シナリオ: ディスクIOが多い環境で、パフォーマンス向上を図る場合に有効です。特にSSDを使用する場合に効果的です。
  • VMware PVSCSI
    • 特徴: VMware互換の仮想SCSIコントローラで、特定のVMware環境からの移行や互換性を提供します。
    • 適用シナリオ: VMware環境からProxmoxへの移行をスムーズに行いたい場合に使用されます。
  • 各コントローラの選択基準

  • パフォーマンス: VirtIO SCSIやVirtIO SCSI singleが最適です。特に最新の仮想化技術を利用する場合、これらの選択が推奨されます。
  • 互換性: デフォルトのLSI 53C895AやLSI 53C810が広範な互換性を提供します。レガシーシステムや互換性が重視される環境での利用が適しています。
  • RAID構成: 高性能なRAIDソリューションが必要な場合は、MegaRAID SAS 8708EM2が適しています。
  • VMware互換性: VMwareからの移行や互換性を重視する場合は、VMware PVSCSIを選択します。
  • なぜVirtIO SCSI singleがいいのか

  • Proxmox 7.3では、Virtio SCSI singleコントローラーがデフォルトで使用されるようになり、IOスレッドを有効にしてディスクIOを別のスレッドで処理することでパフォーマンスを向上させる狙いがある。
  • 特定のワークロードや構成に応じて、複数のディスクを持つVMや仮想ネットワークデバイスを含む環境では、IOスレッドが有効となることが多い。
  • シングルディスクのVMでは、IOスレッドの有効化が必ずしもパフォーマンス向上に寄与しないことが確認された。
  • 参考

    forum

    https://forum.proxmox.com/threads/proxmox-7-3-3-default-scsi-controller.120134/

    Proxmox BIOSについて

    結論

    SeaBIOS一択です!

    比較

    SeaBIOS

  • 特徴: SeaBIOSは、伝統的なBIOS互換のファームウェアです。多くのオペレーティングシステムがこのBIOSを使用してブートすることができます。
  • 適用シナリオ: 互換性が高く、古いオペレーティングシステムやBIOSモードでしか起動できないシステムに適しています。特に、古いWindowsやLinuxディストリビューションで使用されます。
  • OVMF (UEFI)

  • 特徴: OVMFはUEFI(Unified Extensible Firmware Interface)ファームウェアを提供します。UEFIはBIOSの後継であり、よりモダンなインターフェースと機能を提供します。GPTパーティションテーブルをサポートし、セキュアブートや高速なブートプロセスなどの利点があります。
  • 適用シナリオ: 最新のオペレーティングシステム(Windows 10以降、最新のLinuxディストリビューションなど)や、UEFIモードでのみ動作するソフトウェアを使用する場合に適しています。特に、GPTパーティションが必要なディスク構成やセキュアブートを利用する場合に有効です。
  • BIOSよりもUEFIが優っている点

  • GPTサポート
    • 大容量ディスクのサポート: UEFIはGUIDパーティションテーブル (GPT) をサポートしており、2TBを超える大容量ディスクの使用が可能です。これはMBR(マスターブートレコード)と比較して大きな利点です。
  • セキュアブート
    • セキュリティの向上: セキュアブート機能を使用することで、システムのブートプロセス中に不正なソフトウェアが実行されるのを防ぎます。これにより、マルウェアからの保護が強化されます。
  • ブートの柔軟性と速度
    • 高速ブート: UEFIはBIOSよりも高速なブートプロセスを提供します。UEFIブートマネージャーは、直接ブートローダーを起動するため、ブート時間が短縮されます。
    • 複数のブートオプション: UEFIは、複数のOSブートエントリを管理できるため、マルチブート環境の設定が容易です。
  • モダンなハードウェアサポート
    • 最新技術の利用: UEFIは新しいハードウェア技術(例:NVMeドライブ、最新のグラフィックカードなど)をサポートしており、これらのデバイスを最大限に活用できます。
  • 拡張性
    • モジュラーデザイン: UEFIはモジュラーデザインを採用しており、機能を追加したり、更新したりすることが容易です。これにより、将来的な機能拡張が可能です。
  • UEFIを選択するシナリオ

  • 最新のオペレーティングシステム: Windows 10以降や最新のLinuxディストリビューションなど、UEFIブートを推奨または必要とするOSを使用する場合。
  • 大容量ストレージ: 2TB以上のディスクを使用する場合、GPTをサポートするUEFIが必要です。
  • セキュリティが重要な環境: セキュアブートを利用して、ブートプロセスのセキュリティを強化したい場合。
  • マルチブート環境: 複数のオペレーティングシステムを一つの物理マシンで実行したい場合、UEFIのブートマネージャーが便利です。
  • 僕の意見

    最新のオペレーティングシステムを使用して最新のセキュリティ機能や大容量ストレージのサポートが必要ではない場合、UEFIではなくBIOSを使用した方が良いと思います

    なぜなら、EFIを管理しなくても良いからである

    BIOSを使用するメリット

  • シンプルさ
    • 管理が容易: BIOSは設定がシンプルで、UEFIに比べて管理が容易です。特に小規模な環境や、複雑な設定が不要な場合には、BIOSを使用する方が手間がかかりません。
  • 互換性
    • 広範な互換性: 多くの古いオペレーティングシステムやアプリケーションは、BIOSモードでの動作を前提に設計されています。そのため、古いシステムや互換性の問題が発生しやすい環境ではBIOSが有利です。
  • 既存インフラとの統合
    • 既存のセットアップを維持: 既にBIOSを使用している環境では、UEFIに移行することで新たな学習コストや設定変更が必要になるため、現状のままBIOSを使用する方が効率的です。
  • トラブルシューティングの簡便さ
    • トラブルシューティングが簡単: BIOSは長い歴史があり、多くのトラブルシューティング手法が確立されています。これに対し、UEFIは新しい技術のため、特定の問題に対する解決策を見つけるのが難しい場合があります。
  • まとめ

    Proxmox VEのような仮想化環境では、使用するオペレーティングシステムや特定の要件に基づいてBIOSかUEFIを選択することが重要です。最新のセキュリティ機能や大容量ストレージのサポートが不要で、管理の簡便さや既存インフラとの互換性が重視される場合、BIOSを使用するのが適切です。

  • 最新の機能が不要な場合: シンプルで確立されたBIOSを使用するのが合理的です。
  • 既存の環境に合わせる: 既存のシステムやアプリケーションがBIOSを前提としている場合、BIOSを使用することで互換性問題を回避できます。
  • 管理の手間を減らす: UEFIを使用することで生じる新たな設定や管理の手間を避けることができます。
  • このように、要件や環境に応じて適切なファームウェアを選択することで、システムの管理を最適化することができます。

    Proxmox lxcメモリ?スワップ?違い

    コンテナが物理メモリを使い果たした際に、ディスク上のスワップ領域を利用する機能

    システムの安定性を保つためには有用な機能らしい

    物理メモリ512,swap1024

    物理メモリ512,swap0

    僕調べ()ではswapはあった方が良い

    参考

    https://beyondjapan.com/blog/2022/01/mame_swap/
    ← Go home