はじめに
企業の情報システムでは、多くのサーバやストレージが利用されています。
例えば、次のようなシステムです。
- Webサーバ
- データベースサーバ
- ファイルサーバ
- 認証サーバ
- 業務アプリケーションサーバ
以前は、用途ごとに物理サーバを用意する構成が一般的でした。
しかし、物理サーバを増やし続けると、さまざまな問題が発生します。
例えば、
- サーバの購入費用が増える
- 設置スペースが必要になる
- 電力や冷却設備の負担が増える
- サーバごとに管理が必要になる
- CPUやメモリを十分に使い切れない
といった問題です。
そこで重要になるのが、**仮想化技術(Virtualization)**です。
仮想化技術を利用すると、物理的な機器や資源を、論理的に分割したり統合したりできます。
今回は、次の内容を学びます。
仮想化技術
│
├─ ストレージ仮想化
│ ├─ シンプロビジョニング
│ └─ ストレージ自動階層化
│
└─ サーバ仮想化
├─ ホスト型仮想化
├─ ハイパーバイザ型仮想化
├─ コンテナ型仮想化
├─ ライブマイグレーション
└─ クラスタソフトウェア
それでは、仮想化の基本から理解していきましょう。
1. 仮想化技術とは
1-1. 仮想化の基本
**仮想化(Virtualization)**とは、物理的なコンピュータ資源を抽象化し、実際の物理構成とは異なる形で利用できるようにする技術です。
少し難しい表現ですね。
簡単にいうと、
「物理的な機器を、ソフトウェアによって柔軟に利用できるようにする技術」
です。
例えば、1台の物理サーバを考えてみましょう。
通常、物理サーバにはOSがインストールされ、その上でアプリケーションが動作します。
【従来の構成】
┌──────────────────┐
│ アプリケーション │
├──────────────────┤
│ OS │
├──────────────────┤
│ 物理サーバ │
│ CPU・メモリなど │
└──────────────────┘
一方、仮想化技術を利用すると、1台の物理サーバ上で複数の仮想マシンを動作させられます。
【仮想化した構成】
┌────────┐ ┌────────┐ ┌────────┐
│ 仮想 │ │ 仮想 │ │ 仮想 │
│ マシンA│ │ マシンB│ │ マシンC│
├────────┤ ├────────┤ ├────────┤
│ OS │ │ OS │ │ OS │
└───┬────┘ └───┬────┘ └───┬────┘
│ │ │
└──────────┼──────────┘
│
┌────────▼────────┐
│ 仮想化基盤 │
├─────────────────┤
│ 物理サーバ │
└─────────────────┘
このように、物理的には1台でも、論理的には複数のコンピュータとして利用できます。
1-2. 仮想化のメリット
① ハードウェアを効率よく利用できる
複数のシステムを1台の物理サーバに集約できます。
これをサーバ統合と呼びます。
② 機器の台数を削減できる
物理サーバの台数を減らすことで、設置スペースや電力消費を抑えられる場合があります。
③ システムを柔軟に構築できる
仮想マシンは、物理サーバを新しく購入することなく作成できる場合があります。
④ 運用管理を効率化できる
仮想マシンの作成・削除・移動などを、管理ソフトウェアから操作できます。
1-3. 仮想化の注意点
仮想化にはメリットが多い一方、注意点もあります。
例えば、1台の物理サーバ上に複数の仮想マシンを集約すると、その物理サーバが故障した際に複数のシステムへ影響が及びます。
物理サーバA
├─ 仮想マシン1
├─ 仮想マシン2
└─ 仮想マシン3
↓
物理サーバAが故障
↓
仮想マシン1:停止
仮想マシン2:停止
仮想マシン3:停止
そのため、仮想化環境でも冗長化やバックアップなどの対策が重要です。
2. ストレージ仮想化
2-1. ストレージ仮想化とは
**ストレージ仮想化(Storage Virtualization)**とは、複数の物理ストレージや記憶領域を抽象化し、論理的なストレージとして利用できるようにする技術です。
例えば、3台の物理ストレージがあるとします。
【物理ストレージ】
ストレージA:2TB
ストレージB:3TB
ストレージC:5TB
これらを仮想化技術によって統合し、論理的なストレージ領域として管理できます。
サーバ
│
▼
┌────────────────────┐
│ 論理ストレージ領域 │
│ 10TB │
└─────────┬──────────┘
│
仮想化レイヤ
│
┌──────┼──────┐
│ │ │
▼ ▼ ▼
2TB 3TB 5TB
※図は単純化した例です。実際の利用可能容量は、RAIDなどの冗長化方式や管理領域によって変わります。
このように、物理的なストレージ構成を意識せず、論理的な記憶領域を利用できるようになります。
2-2. ストレージ仮想化のメリット
ストレージ仮想化には、次のようなメリットがあります。
- 複数のストレージを統合して管理できる
- 必要に応じて容量を割り当てられる
- ストレージの追加や拡張を行いやすい
- データの配置を柔軟に変更できる
- ストレージ資源を効率よく利用できる
ただし、ストレージ仮想化を利用するだけで、必ず性能や信頼性が向上するわけではありません。
物理ディスクの性能や冗長化構成なども重要です。
3. シンプロビジョニング
3-1. シンプロビジョニングとは
**シンプロビジョニング(Thin Provisioning)**とは、
ストレージに論理的な容量を割り当てておき、実際にデータが書き込まれた分だけ物理容量を消費する技術です。
通常、ストレージを利用する際には、あらかじめ一定の容量を割り当てます。
例えば、あるサーバに500GBのストレージを割り当てるとします。
しかし、実際に使用しているデータが100GBしかない場合、残りの400GBは使われていません。
そこで、シンプロビジョニングを利用します。
3-2. 従来の容量割当方式
まず、従来の方式を考えてみましょう。
例えば、3台のサーバに、それぞれ500GBの領域を割り当てます。
【従来の容量割当】
サーバA:500GB
サーバB:500GB
サーバC:500GB
合計:1,500GB
実際の使用量が次のような状態だったとします。
サーバA:100GB使用
サーバB:200GB使用
サーバC:100GB使用
実際の使用量:400GB
それでも、固定的な容量割当方式では、各サーバ用に確保した領域をほかのサーバが利用できない場合があります。
3-3. シンプロビジョニングの仕組み
シンプロビジョニングでは、サーバには500GBの論理容量を見せつつ、実際のデータに応じて物理容量を割り当てます。
【シンプロビジョニング】
サーバA
論理容量:500GB
実使用量:100GB
サーバB
論理容量:500GB
実使用量:200GB
サーバC
論理容量:500GB
実使用量:100GB
│
▼
物理ストレージの使用量
約400GB
※実際にはメタデータなどの管理領域も使用します。
このように、論理的な割当容量と物理的な使用容量を分離できます。
3-4. シンプロビジョニングのメリット
① ストレージ容量を効率よく利用できる
使用されていない領域を、あらかじめ物理的に確保する必要がありません。
② 容量の割当を柔軟に行える
サーバごとに大きめの論理容量を設定しておき、実際の使用量に応じて物理領域を割り当てられます。
③ 初期投資を抑えられる場合がある
将来必要になる容量を、最初からすべて用意する必要がなくなる場合があります。
3-5. シンプロビジョニングの注意点
ここが非常に重要です。
論理的に割り当てた容量の合計が、物理ストレージの容量を超える構成も可能です。
例えば、
物理ストレージ容量:1TB
サーバA:論理容量500GB
サーバB:論理容量500GB
サーバC:論理容量500GB
論理容量の合計:1.5TB
という構成です。
これをオーバープロビジョニングと呼ぶことがあります。
ただし、実際の使用量が増えて物理容量を使い切ると、書き込みエラーやサービス停止などにつながる可能性があります。
そのため、
- 使用容量の監視
- 空き容量のしきい値設定
- 容量不足の通知
- 容量拡張の計画
などが重要になります。
🍯 はちみつ屋さんで例えると
はちみつ屋さんが、3人のお客さんにそれぞれ500個分の保管スペースを約束したとします。
しかし、実際に預かっているはちみつは合計400個だけです。
そこで、最初から1,500個分の倉庫を用意するのではなく、実際に預かった分だけ倉庫のスペースを使います。
これがシンプロビジョニングのイメージです。
ただし、全員が約束した分を一度に預けに来ると、倉庫が足りなくなる可能性があります。
4. ストレージ自動階層化
4-1. ストレージ自動階層化とは
**ストレージ自動階層化(Automated Storage Tiering)**とは、
データのアクセス頻度や利用状況に応じて、性能やコストの異なるストレージ階層へデータを自動的に配置する技術です。
例えば、ストレージには次のような違いがあります。
| ストレージ | 一般的な特徴 |
|---|---|
| 高性能SSD | 高速だが容量当たりのコストが高い傾向 |
| 一般的なSSD | 性能とコストのバランスを取りやすい |
| HDD | 大容量を比較的低コストで確保しやすい |
すべてのデータを高性能なストレージに保存すると、コストが高くなります。
一方、すべてのデータを低速なストレージに保存すると、頻繁に利用するデータの処理性能が不足する可能性があります。
そこで、データの利用状況に応じて保存先を変更します。
4-2. ストレージ自動階層化の仕組み
例えば、次のような3階層のストレージを考えてみましょう。
ストレージ自動階層化
│
▼
┌────────────────────────┐
│ 第1階層:高性能SSD │
│ 頻繁にアクセスするデータ│
├────────────────────────┤
│ 第2階層:一般的なSSD │
│ 通常利用するデータ │
├────────────────────────┤
│ 第3階層:HDD │
│ あまり使わないデータ │
└────────────────────────┘
システムはデータのアクセス状況を監視します。
例えば、
ファイルA:1日に1,000回アクセス
ファイルB:1日に100回アクセス
ファイルC:1か月に1回アクセス
という場合、アクセス頻度の高いファイルAを高速なストレージへ配置することが考えられます。
一方、アクセス頻度の低いファイルCは、低コストなストレージへ移動します。
4-3. ストレージ自動階層化のメリット
① 性能とコストを両立しやすい
頻繁に利用するデータを高速なストレージに配置できます。
② ストレージ資源を効率よく利用できる
アクセス頻度の低いデータを、比較的低コストなストレージへ移動できます。
③ 管理作業を自動化できる
管理者がデータの保存先を手動で変更する作業を減らせます。
4-4. ストレージ自動階層化の注意点
データの移動には時間や処理負荷が発生する場合があります。
また、アクセス頻度が急激に変化した場合、データの配置が最適になるまで時間がかかることもあります。
なお、ストレージ自動階層化とキャッシュは似ていますが、同じ技術ではありません。
自動階層化は、データの配置先を階層間で変更する技術です。
一方、キャッシュは、頻繁に利用するデータのコピーなどを高速な領域に保持し、アクセスを高速化する技術です。
5. シンプロビジョニングとストレージ自動階層化の違い
この2つは、どちらもストレージを効率よく利用するための技術です。
しかし、目的が異なります。
| 比較項目 | シンプロビジョニング | ストレージ自動階層化 |
|---|---|---|
| 主な目的 | 容量の効率的な利用 | 性能とコストの最適化 |
| 基本的な仕組み | 使用した分だけ物理容量を割り当てる | 利用状況に応じて保存先を変更する |
| 注目するもの | 使用容量 | アクセス頻度・性能 |
| 主な注意点 | 物理容量の不足 | データ移動の負荷や遅延 |
🍯 覚え方
シンプロビジョニングは「必要になった分だけ場所を使う」。
ストレージ自動階層化は「よく使うものを取り出しやすい場所に置く」。
6. サーバ仮想化
6-1. サーバ仮想化とは
**サーバ仮想化(Server Virtualization)**とは、物理サーバのCPU・メモリ・ストレージなどの資源を抽象化し、複数の仮想的な実行環境を構築する技術です。
例えば、1台の物理サーバ上に、
- Webサーバ
- データベースサーバ
- 認証サーバ
をそれぞれ独立した仮想マシンとして構築できます。
┌──────────┐ ┌──────────┐ ┌──────────┐
│ Web │ │ DB │ │ 認証 │
│ サーバ │ │ サーバ │ │ サーバ │
├──────────┤ ├──────────┤ ├──────────┤
│ ゲストOS │ │ ゲストOS │ │ ゲストOS │
└────┬─────┘ └────┬─────┘ └────┬─────┘
│ │ │
└────────────┼────────────┘
│
┌───────▼───────┐
│ 仮想化基盤 │
├───────────────┤
│ 物理サーバ │
└───────────────┘
サーバ仮想化には、代表的な方式として次の3つがあります。
- ホスト型仮想化
- ハイパーバイザ型仮想化
- コンテナ型仮想化
※厳密には、コンテナ型はOSレベルの仮想化であり、仮想マシン方式とは仕組みが異なります。
7. ホスト型仮想化
7-1. ホスト型仮想化とは
**ホスト型仮想化(Hosted Virtualization)**とは、
物理サーバにインストールされたOSの上で仮想化ソフトウェアを動作させる方式です。
例えば、普段使用しているPCのOS上で、別のOSを仮想マシンとして動かす場合などです。
7-2. ホスト型仮想化の構成
ホスト型仮想化
┌──────────┐ ┌──────────┐
│ 仮想マシンA│ │ 仮想マシンB│
│ ゲストOS │ │ ゲストOS │
└────┬─────┘ └────┬─────┘
│ │
└──────┬─────┘
│
┌───────────▼───────────┐
│ 仮想化ソフトウェア │
├───────────────────────┤
│ ホストOS │
├───────────────────────┤
│ 物理ハードウェア │
└───────────────────────┘
ホストOSの上で仮想化ソフトウェアを動作させ、その上に仮想マシンを作成します。
7-3. ホストOSとゲストOS
ここで重要な用語を整理しましょう。
ホストOS
**ホストOS(Host OS)**とは、物理コンピュータ上で動作し、ホスト型仮想化ソフトウェアの実行基盤となるOSです。
ゲストOS
**ゲストOS(Guest OS)**とは、仮想マシンの内部で動作するOSです。
例えば、
物理PC
└─ macOS(ホストOS)
└─ 仮想化ソフトウェア
└─ Linux(ゲストOS)
という構成が考えられます。
7-4. ホスト型仮想化のメリット
- 既存のPCに導入しやすい
- 学習環境や検証環境を構築しやすい
- ホストOSの機能を利用できる
例えば、Linuxの学習をしたい場合、普段使っているPC上にLinuxの仮想マシンを作成できます。
7-5. ホスト型仮想化のデメリット
- ホストOSの資源も必要になる
- ホストOSの障害が仮想マシンへ影響する
- 構成によっては処理のオーバーヘッドが増える
そのため、大規模な本番サーバ環境では、次に紹介するハイパーバイザ型が広く利用されています。
8. ハイパーバイザ型仮想化
8-1. ハイパーバイザ型仮想化とは
**ハイパーバイザ型仮想化(Hypervisor-based Virtualization)**とは、
物理ハードウェア上でハイパーバイザを動作させ、複数の仮想マシンを管理する方式です。
ハイパーバイザとは、仮想マシンにCPU・メモリなどの資源を割り当て、仮想マシンの実行を管理するソフトウェア層です。
ホスト型との大きな違いは、一般的なデスクトップOSを土台とする必要がない点です。
8-2. ハイパーバイザ型の構成
ハイパーバイザ型仮想化
┌──────────┐ ┌──────────┐
│ 仮想マシンA│ │ 仮想マシンB│
│ ゲストOS │ │ ゲストOS │
└────┬─────┘ └────┬─────┘
│ │
└──────┬─────┘
│
┌───────────▼───────────┐
│ ハイパーバイザ │
├───────────────────────┤
│ 物理ハードウェア │
└───────────────────────┘
物理ハードウェア上にハイパーバイザが配置され、その上で複数の仮想マシンが動作します。
8-3. ハイパーバイザ型の特徴
① 仮想マシンを効率よく管理できる
ハイパーバイザが物理資源を管理し、各仮想マシンへ割り当てます。
② 複数のOSを動作させられる
例えば、1台の物理サーバ上でWindows ServerとLinuxの仮想マシンを動作させる構成があります。
ただし、CPUアーキテクチャなどの互換性には制約があります。
③ 本番システムで広く利用される
データセンターや企業の仮想化基盤などで利用されています。
8-4. 代表的なハイパーバイザ
代表的な仮想化技術には、次のようなものがあります。
| 技術 | 概要 |
|---|---|
| VMware ESXi | ベアメタル型のハイパーバイザ |
| Microsoft Hyper-V | Windows系の仮想化基盤で利用されるハイパーバイザ |
| KVM | Linuxカーネルに組み込まれた仮想化機能 |
| Xen | オープンソースのハイパーバイザ |
※Hyper-VやKVMは、管理用OSやホストカーネルと連携して動作します。単純な「OSなし」という説明だけでは構成を正確に表せない場合があります。
9. ホスト型とハイパーバイザ型の違い
ここまでの内容を比較しましょう。
| 比較項目 | ホスト型 | ハイパーバイザ型 |
|---|---|---|
| 基本構成 | ホストOS上で仮想化ソフトを動作 | ハイパーバイザが仮想マシンを管理 |
| 主な用途 | 個人PC・学習・検証 | サーバ基盤・データセンター |
| 導入 | 既存OS上に導入しやすい | 専用の仮想化基盤として構築することが多い |
| 資源管理 | ホストOSを介する部分がある | 仮想化基盤が直接的に管理する |
| 性能 | 構成によってオーバーヘッドが生じる | 高効率な構成を実現しやすい |
🍯 覚え方
ホスト型は「OSの上に仮想化ソフトを置く」。
ハイパーバイザ型は「ハイパーバイザを中心に仮想マシンを動かす」。
10. コンテナ型仮想化
10-1. コンテナ型仮想化とは
**コンテナ型仮想化(Container-based Virtualization)**とは、
ホストOSのカーネルを共有しながら、アプリケーションを独立した実行環境で動作させる技術です。
ホスト型やハイパーバイザ型では、仮想マシンごとにゲストOSを動作させます。
一方、コンテナ型では、通常、コンテナごとに独立したOSカーネルを起動しません。
10-2. コンテナ型の構成
コンテナ型仮想化
┌──────────┐ ┌──────────┐
│コンテナA │ │コンテナB │
│アプリA │ │アプリB │
│ライブラリ│ │ライブラリ│
└────┬─────┘ └────┬─────┘
│ │
└──────┬─────┘
│
┌───────────▼───────────┐
│ コンテナ実行環境 │
├───────────────────────┤
│ ホストOSのカーネル │
├───────────────────────┤
│ 物理ハードウェア │
└───────────────────────┘
コンテナは、アプリケーションと必要なライブラリなどをまとめた実行環境です。
10-3. コンテナ型のメリット
① 起動が速い
コンテナごとにゲストOS全体を起動する必要がないため、仮想マシンより短時間で起動できる場合が多くあります。
② 資源消費を抑えやすい
OSカーネルを共有するため、仮想マシン方式と比べてメモリなどの消費を抑えやすい特徴があります。
③ アプリケーションを配布しやすい
アプリケーションと依存ライブラリなどをまとめて管理できます。
これにより、開発環境と本番環境の差を小さくしやすくなります。
10-4. コンテナ型の注意点
コンテナ型では、ホストOSのカーネルを共有します。
そのため、仮想マシンのように完全に独立したOSカーネルを動作させる方式とは、分離の仕組みが異なります。
また、コンテナの実行環境には、ホストOSとの互換性などの制約があります。
例えば、LinuxコンテナをmacOSやWindows上で動作させる場合、Linux仮想マシンなどを介して実行する構成があります。
11. 仮想マシンとコンテナの違い
仮想マシンとコンテナの違いを整理しましょう。
| 比較項目 | 仮想マシン | コンテナ |
|---|---|---|
| 仮想化の対象 | ハードウェア資源 | OSレベルの実行環境 |
| OSカーネル | ゲストOSごとに持つ | ホストOSのカーネルを共有 |
| 起動時間 | 比較的長い傾向 | 比較的短い傾向 |
| 資源消費 | 比較的大きい傾向 | 比較的小さい傾向 |
| 分離方式 | 仮想ハードウェアによる分離 | OS機能による分離 |
| 主な用途 | 複数OSの実行、サーバ統合 | アプリケーションの配布・実行 |
ただし、仮想マシンとコンテナは対立する技術ではありません。
実際には、仮想マシンの中でコンテナを動作させる構成も広く利用されています。
┌──────────────────────────┐
│ 仮想マシン │
│ │
│ ┌────────┐ ┌────────┐ │
│ │コンテナA│ │コンテナB│ │
│ └────────┘ └────────┘ │
│ │
│ コンテナ実行環境 │
│ ゲストOS │
└────────────┬─────────────┘
│
ハイパーバイザ
│
物理サーバ
12. ライブマイグレーション
12-1. ライブマイグレーションとは
**ライブマイグレーション(Live Migration)**とは、
仮想マシンを稼働させたまま、別の物理ホストへ移動する技術です。
例えば、物理サーバAで動作している仮想マシンを、物理サーバBへ移動させます。
【移動前】
物理サーバA 物理サーバB
┌──────────┐ ┌──────────┐
│ 仮想VM1 │ │ │
│ 稼働中 │ │ │
└──────────┘ └──────────┘
↓
ライブマイグレーション
↓
【移動後】
物理サーバA 物理サーバB
┌──────────┐ ┌──────────┐
│ │ │ 仮想VM1 │
│ │ │ 稼働中 │
└──────────┘ └──────────┘
このとき、仮想マシンの実行状態を移行先へ引き継ぎます。
12-2. ライブマイグレーションの仕組み
ライブマイグレーションでは、一般的に次のような処理が行われます。
- 移行先の物理ホストを準備する
- 仮想マシンのメモリ情報などを移行先へ転送する
- 移行中に更新された情報を必要に応じて再転送する
- 最終的な実行状態を移行先へ引き継ぐ
- 移行先で仮想マシンの実行を継続する
ただし、具体的な移行手順は仮想化製品や方式によって異なります。
12-3. ライブマイグレーションのメリット
① 保守作業を行いやすい
物理サーバのメンテナンス前に、仮想マシンを別のホストへ移動できます。
② 負荷分散に利用できる
物理ホスト間の負荷に偏りがある場合、仮想マシンを移動して負荷を調整できます。
③ サービス停止時間を短縮できる
仮想マシンを停止せずに移動できるため、保守作業に伴う停止時間を短縮できます。
ただし、ライブマイグレーションでも切替時に短い停止や通信への影響が発生する場合があります。
ライブマイグレーション=必ず完全無停止というわけではありません。
12-4. ライブマイグレーションの注意点
ライブマイグレーションを行うには、移行元と移行先の環境が一定の条件を満たす必要があります。
例えば、
- CPUなどの互換性
- 移行先の空き資源
- ネットワーク接続
- 仮想マシンのディスクへのアクセス
- 仮想化製品の対応状況
などです。
なお、共有ストレージを利用する方式もあれば、仮想ディスクのデータも移行する方式もあります。
13. クラスタソフトウェア
13-1. クラスタソフトウェアとは
**クラスタソフトウェア(Cluster Software)**とは、
複数のコンピュータを連携させ、障害監視や切替などを管理するソフトウェアです。
前の記事では、HAクラスタやフェールオーバークラスタについて学びました。
クラスタソフトウェアは、このような構成を実現するために利用されます。
13-2. クラスタソフトウェアの仕組み
例えば、2台の物理サーバで仮想化基盤を構築する場合を考えてみましょう。
クラスタ構成
┌──────────────┐ ┌──────────────┐
│ 物理サーバA │ │ 物理サーバB │
│ │ │ │
│ 仮想マシン1 │ │ 仮想マシン2 │
│ 仮想マシン3 │ │ │
└──────┬───────┘ └──────┬───────┘
│ │
└────────┬────────┘
│
┌────────▼────────┐
│クラスタ管理機能 │
└─────────────────┘
クラスタソフトウェアは、各サーバの状態を監視します。
サーバAに障害が発生した場合、サーバBで仮想マシンを再起動するなどの対応を行います。
13-3. クラスタソフトウェアの主な機能
① 障害監視
サーバやサービスが正常に動作しているかを監視します。
② フェールオーバー
障害が発生した場合、別のサーバへ処理を切り替えます。
③ リソース管理
クラスタ内の仮想マシンやサービスなどを管理します。
④ 起動・停止制御
障害時や保守時に、必要なサービスを起動・停止します。
⑤ スプリットブレイン対策
複数のサーバが同時に主系として動作し、データ不整合が発生することを防ぎます。
14. ライブマイグレーションとフェールオーバーの違い
ここは特に重要です。
ライブマイグレーションとフェールオーバーは、どちらも別の物理ホストへ処理を移す技術ですが、目的や動作が異なります。
14-1. ライブマイグレーション
サーバA:正常稼働
│
│ 計画的に移動
▼
サーバB:稼働継続
ライブマイグレーションは、主に稼働中の仮想マシンを計画的に移動する技術です。
例えば、物理サーバの保守作業や負荷分散で利用します。
14-2. フェールオーバー
サーバA:障害発生
│
│ 障害を検知
▼
サーバB:処理を引継ぎ
フェールオーバーは、障害が発生した場合に別の系統へ切り替える技術です。
仮想化環境では、障害が発生したホスト上の仮想マシンを、別のホストで再起動する方式などがあります。
14-3. 比較表
| 比較項目 | ライブマイグレーション | フェールオーバー |
|---|---|---|
| 主な目的 | 稼働中の仮想マシンを移動 | 障害時にサービスを継続・再開 |
| 主な実行場面 | 保守・負荷分散 | 障害発生時 |
| 移行元 | 通常は正常稼働中 | 故障している場合がある |
| 実行状態 | 引き継いで継続 | 構成によって再起動・切替 |
| 停止時間 | 非常に短くできる場合がある | 障害検知・復旧時間が必要な場合がある |
🍯 覚え方
ライブマイグレーションは「動いているサーバを引っ越しさせる」。
フェールオーバーは「故障したら別のサーバに仕事を引き継ぐ」。
15. 仮想化技術を組み合わせたシステム構成
最後に、今回学んだ技術を組み合わせてみましょう。
例えば、企業の業務システムを仮想化基盤上で運用する場合です。
利用者
│
▼
業務システム
│
▼
┌────────────────────────────┐
│ 仮想化クラスタ │
│ │
│ ┌──────────┐ ┌──────────┐ │
│ │物理ホストA│ │物理ホストB│ │
│ │ │ │ │ │
│ │ VM1 │ │ VM3 │ │
│ │ VM2 │ │ VM4 │ │
│ └────┬─────┘ └────┬─────┘ │
│ │ │ │
│ └─────┬──────┘ │
│ │ │
│ クラスタ管理機能 │
└────────────┬───────────────┘
│
▼
┌────────────────────────────┐
│ 仮想ストレージ │
│ │
│ ・シンプロビジョニング │
│ ・ストレージ自動階層化 │
│ ・RAIDによる冗長化 │
└────────────────────────────┘
この構成では、次のような技術を組み合わせています。
サーバ仮想化
1台の物理サーバ上で複数の仮想マシンを動作させます。
クラスタソフトウェア
物理サーバの状態を監視し、障害時の復旧処理などを管理します。
ライブマイグレーション
保守作業などの際に、仮想マシンを別の物理ホストへ移動します。
シンプロビジョニング
仮想マシンに必要な論理容量を割り当て、物理容量を効率よく利用します。
ストレージ自動階層化
アクセス頻度に応じてデータの保存先を調整します。
このように、仮想化技術は単独で利用するだけでなく、複数の技術を組み合わせることで、柔軟なシステム基盤を構築できます。
16. 応用情報技術者試験で押さえたいポイント
今回の内容で特に重要なのは、次の違いです。
① シンプロビジョニングとストレージ自動階層化
シンプロビジョニング
→ 実際に使った分だけ物理容量を割り当てる
ストレージ自動階層化
→ 利用状況に応じて保存先を変更する
② ホスト型とハイパーバイザ型
ホスト型
→ ホストOS上で仮想化ソフトを動かす
ハイパーバイザ型
→ ハイパーバイザが仮想マシンを管理する
③ 仮想マシンとコンテナ
仮想マシン
→ 仮想マシンごとにゲストOSを持つ
コンテナ
→ ホストOSのカーネルを共有する
④ ライブマイグレーションとフェールオーバー
ライブマイグレーション
→ 稼働中の仮想マシンを移動する
フェールオーバー
→ 障害時に別の系統へ切り替える
まとめ
この記事で覚えること
- 仮想化は、物理的なコンピュータ資源を抽象化して柔軟に利用する技術
- ストレージ仮想化は、物理ストレージを論理的な記憶領域として管理する技術
- シンプロビジョニングは、データを書き込んだ分だけ物理容量を割り当てる技術
- ストレージ自動階層化は、アクセス頻度などに応じてデータの保存先を変更する技術
- サーバ仮想化は、物理サーバの資源を利用して複数の仮想的な実行環境を構築する技術
- ホスト型仮想化は、ホストOS上で仮想化ソフトウェアを動作させる方式
- ハイパーバイザ型仮想化は、ハイパーバイザが仮想マシンを管理する方式
- コンテナ型仮想化は、ホストOSのカーネルを共有してアプリケーションを実行する方式
- ホストOSは、ホスト型仮想化ソフトウェアの実行基盤となるOS
- ゲストOSは、仮想マシン内で動作するOS
- ライブマイグレーションは、仮想マシンを稼働させたまま別の物理ホストへ移動する技術
- クラスタソフトウェアは、複数のコンピュータの障害監視や切替などを管理するソフトウェア
- フェールオーバーは、障害時に別の系統へ処理を切り替えること
🍯 はちみつメモ
仮想化は「物理的な資源を、ソフトウェアで柔軟に使えるようにする技術」!
ストレージ仮想化では、シンプロビジョニング=使った分だけ容量を確保、ストレージ自動階層化=よく使うデータを高速な場所へ配置と覚えよう。
サーバ仮想化では、ホスト型=OSの上、ハイパーバイザ型=仮想化基盤の上、コンテナ型=OSカーネルを共有という違いが重要!
そして、**ライブマイグレーションは「稼働中の引っ越し」、フェールオーバーは「障害時の交代」**だよ!