画像ツール一覧

仮想化

Virtualization

PC・システムのきほん

1台の物理的なコンピュータ(サーバー)のCPUやメモリなどのリソースを論理的に分割し、あたかも複数台の独立したコンピュータが存在するかのように動かすソフトウェア技術のことです。物理資源を複数の環境で共有し、用途ごとに管理するために使われます。

🐾 猫で例えると?

ソファーの上で茶トラの背中の上にアメショが完全に覆い被さってくつろいでいる様子
1つのソファーを分け合う2匹を、物理資源を共有する環境に見立てて

重なってくつろぐ猫たちを、物理資源を分け合う環境に見立てています。ソファーが物理機、資源を割り当てる仕組みがハイパーバイザー、各猫が仮想マシンです。実際にはホストOSを経由する方式と、ハードウェア上で直接動く方式があり、必ず一つのゲストOSが別のゲストOSを支えるわけではありません。

🐾 PR

💻 IT現場における「仮想化」とは?

用途ごとに別の物理機を用意すると、使わない時間帯の資源が余る場合があります。仮想化は、それらを集約して管理する方法の一つです。ただし、集約できる量は負荷と可用性の要件によって変わります。

VMware、Hyper-V、KVMなどでは、仮想マシンごとにOSやアプリを動かせます。クラウドでも広く使われますが、専有の物理サーバーなどを提供するサービスもあり、「クラウドはすべて同じ仮想化方式」というわけではありません。

⚠️ 仮想化の仕組みと注意点

仮想環境は非常に便利ですが、現場のエンジニアが常に警戒しているのが「オーバーコミット(リソースの割り当てすぎ)」と「単一障害点(SPOF)」のリスクです。

リソースの奪い合いとホストマシンの死

オーバーコミットは、物理資源より大きい合計量を論理的に割り当てる運用です。可能な方式や不足時の処理は製品によって異なります。同時利用の増加に備え、ホスト全体のメモリ、CPU待ち、I/Oを監視して上限を決めます。

# systemdを利用するLinux環境での検出例
systemd-detect-virt
# 仮想マシンだけを対象にする場合
systemd-detect-virt --vm
# noneは「検出されなかった」の意味。あらゆる環境を断定する検査ではない

また、上に乗っている仮想サーバーがいくら頑丈に作られていても、土台となる「物理サーバー(ホスト)」の電源コードが抜けたり基板が壊れたりすれば、その上で動いているすべての仮想サーバーが道連れになって全滅します。停止が許される時間や復旧の要件に応じて、ホストの冗長化や別の機器へ復元する方法を検討します。

🛠️ 仮想化を賢く使うためのポイント

限られたリソースを安全かつ効率的に使い回すために、インフラ設計で意識すべきポイントです。

重なって休む猫たちのように、仮想マシンも同じ物理資源を分け合います。ゲストごとの使用量だけでなく、ホスト全体の余裕と、ホストが停止した場合に影響する範囲を確認すると、台数を増やす前に必要な備えを判断できます。