Proxmox VE

ここしばらく、Proxmox VEをよく使っているので紹介します。手抜きなのでテキストオンリーです。

Proxmox VE

Proxmox VEはWebベースの管理インタフェースを持つ仮想化基盤ソフトウェアです。

商用サポートのライセンスも提供されていますが、自力でどうにかできるのであれば無償で利用することができます。

Virtualization: VM, LXC, Snapshot, Backup

仮想化技術として完全仮想化のKVMと、コンテナとしてLXCを利用することができます。KVMは各種OS向けに提供されている準仮想化ドライバと組み合わせてオーバーヘッドの少ないVirtIOデバイスを利用することもできます。

VMとコンテナは手動あるいは定期的な自動バックアップを取得することができます。バックアップデータは別のVMまたはコンテナとして展開することもできます(VMとコンテナを相互に変換できるわけではありません)。

利用しているストレージまたは仮想ディスクフォーマットによってはVMやコンテナのスナップショットを撮ることもできます。取得した静止点はあとから削除したり、静止点まで巻き戻すことができます。

Network: VLAN, Bonding

VMやコンテナはホストマシンの物理NICに対してブリッジを経由して接続でき、物理ネットワークと相互に通信することができます。

コンテナは管理画面から静的あるいはDHCPによるアドレス取得を設定できます。VMのネットワークは通常の物理マシンと同じく稼働するOS上から設定できます。

ホストのNICはVLAN対応スイッチと組み合わせることで複数のネットワークに接続でき、VMやコンテナもVLANへの接続を個別に設定できます。ホストのNICはTrunkポートとしてスイッチに接続し、コンテナやVMはタグを解いたAccessポートとして接続されているように見えるよう設定されます。

ホストに複数のNICが搭載されていれば、Bondingによる冗長化や帯域増加をすることもできます。もちろんVLANとも組み合わせることができます。

iSCSI接続などローカルで高パフォーマンスが必要になる場合はMTUを増やすこともできますが、対向機器やスイッチを含めて調整する必要があります。

Storage: local, local-zfs, NFS, iSCSI/LVM-thin, Ceph

PVEは複数のストレージをサポートしています。ストレージ毎におけるデータが異なっていて、ファイルベースのストレージはPVEが扱える任意のデータを、ブロックベースのストレージにはVMとコンテナのディスクイメージを置くことができます。

普通にインストールすればローカルディレクトリストレージとLVM-thinストレージが作成されます。

ローカルディレクトリは単純に任意のディレクトリをストレージ領域として領域するものです。指定のpath配下に役割毎のサブディレクトリが作成され、さまざまなデータが置かれます。ディスクイメージとしてqcow2を選択すればスナップショットも利用可能です。

LVM-thinはブロックベースのストレージで、VMやコンテナのディスクイメージを配置します。名前のとおりthin provisioningされたLVM領域なのでディスクイメージの実利用量に応じて領域が確保されます。またディスクイメージはRAWフォーマットですが、LVM自体の機能としてスナップショットをサポートしています。

あとから追加できるストレージもいくつかあります。

NFSはこなれた使いやすいネットワーク越しのストレージ領域です。ファイルベースなので任意のデータを配置できます。

iSCSI接続されたブロックデバイスも利用できます。LUNをそのままディスクとして利用することもできますが、LVM-thinとして利用することもできます。

インストール時の構成でローカルファイルシステムをZFSにすることもできます。ファイルシステムとしてディレクトリストレージを提供することも、zvolでブロックストレージを提供することもでき、スナップショットも作成できます。

特にクラスタ構成をとっている場合は複数のホストにまたがるかたちでCephをブロックストレージとして利用できます。Cephはクラスタ化された複数のホストのストレージを束ねて冗長性と性能を向上させるもので、PVEのクラスタ機能と連携して一種のHCIとして運用することができます。

Cluster: Live migration, Storage migration, HA

PVEは単独のホストで動作させるだけでも十分使いやすいのですが、複数のホストを並べることで更に便利に強力になります。

Live migrationを使うとクラスタ構成を組んだホスト間で稼働中のVMを起動したまま移動することができます。クラスタはいくつか条件を満たして置く必要がありますが、一度構築してしまえばホストのメンテナンス時や、負荷の分散など、稼働中のVMを停止することなく行えるので非常に便利です。またクラスタに直接関係無い機能ですがVMが利用しているディスクイメージもVMを起動したまま別のストレージに移動することができます。これもストレージシステムのメンテナンスや負荷分散を容易にする便利な機能です。残念ながらコンテナではこの機能を利用することができません。

クラスタを組んだホストは相互に死活監視させることで稼働中のVMやコンテナの可用性を向上させることができます。あるホストがダウンしたことを検知するとそのホスト上で稼働していたVMやコンテナを自動的に他のホストで再起動させることができます。また誤って停止してしまったVMやコンテナを自動的に起動させることもできます。

普段使っている機能を中心に紹介したらだいたいこんな感じです。