壁で区切っても、建物は一つ
大きな倉庫を可動壁で区切って、何社かのテナントがそれぞれの区画を使っている様子を思い浮かべてください。入居者からは自分の区画が独立して見え、中の使い方も区画ごとに決められます。でも建物そのものは一つです。
仮想化は、1台の物理マシンの上に、別々に見える環境をソフトウェアで複数作る仕組みです。物理的には1台でも、その上に複数の仮想サーバーを並べられます。機材を細かく分けて使えるので、環境を増やしたり減らしたり、別の機材へ移したりもしやすくなります。
ただし、建物が一つである事実は変わりません。1つの区画に荷物を詰め込みすぎれば、通路も搬入口も混んで、ほかの区画まで動きが鈍くなります。CPU、メモリ、ディスクを詰め込みすぎると、複数の環境が同時に遅くなるのと同じです。建物そのものが停電すれば、全区画が一斉に止まります。物理機材が1台しかなければ、その本体の障害はすべての環境がまとめて受けます。止まりにくさは、仮想化とは別に設計する必要があります。
仮想化の上に乗っているもの
ふだん耳にするサービスの多くは、この仕組みを土台にしています。
- VPS は、仮想化で切り出した仮想サーバーを利用者ごとに貸し出す提供形態
- クラウドサーバーも多くは仮想化の上に作られ、ネットワークやストレージ、拡張の操作まで含めて使いやすくしたもの
- 開発用、検証用、本番用の環境を1台の上で分けるのも、よくある使い方
アプリの実行環境をもっと軽く分ける方法として、コンテナもよく使われるようになりました。仮想化が建物を区画に分けるなら、コンテナは区画の中でアプリごとに作業スペースを仕切るくらいの単位。2つの違いを詳しく知りたいなら、コンテナと仮想マシンの違いへ。
障害のときはどちらの問題かを分ける
仮想環境で不具合が起きたら、まず「物理機材の問題か」「仮想環境の設定の問題か」を切り分けます。前者なら同じ機材の上の環境すべてに影響が出ているはずです。
バックアップと復旧の手順は、仮想マシンの単位で決めておくと扱いやすくなります。また、中の環境をきちんと管理していても、土台になるホスト側の更新や監視は別に必要です。