SIGMA-SE Math & Tech Library

SIGMA-SE Math & Tech Library


数学と情報技術をテーマに、書籍や教材だけではつかみにくい考え方を具体例とともに簡潔にわかりやすく伝える解説サイトです。
技術の歴史や背景、関連知識の整理、学習のための覚書や要約記事も掲載しています。

応用情報技術 - 基礎:11/21 システム構成要素(冗長化・RAID・仮想化)

概要

情報技術の基礎として理解しておきたい システム構成要素 について、システム構成、クライアントサーバー、RAID、信頼性設計、ストレージ、仮想化を整理する。

4台のドライブでRAIDの容量と故障条件を比べ、二重化・層分割・ストレージ共有で何が保証されるかを確認する。正常時だけでなく、故障時に残す機能から構成を考える。

この記事の構成

  • システム構成の基本
    システム構成の基本と各要素の役割を整理。
  • クライアントサーバーシステム
    クライアントサーバーシステムとは クライアントとサーバーで役割を分けて運用する仕組みのこと。
  • RAID
    2 TBのドライブ4台で利用可能容量・故障条件・バックアップとの違いを比較。
  • 信頼性設計
    一部機能を残して続ける場合と安全のために停止する場合を比較。
  • その他システム構成
    その他システム構成と各要素の役割を整理。
  • ストレージ
    ストレージとはハードディスクやCD-Rなどのデータやプログラムを長期間保管しておくための補助記憶装置。
  • 仮想化技術
    仮想化とは物理的なマシン構成の制限にとらわれず、 論理的にマシン構成を動作/表現する技術のこと。

システム構成の基本

システム構成には\(2\) つのシステムから成る次の構成方法がある。
※ \(2\) つ、\(3\) つと増やす場合も以下の構成を基盤として構成される。

  • デュアルシステム
    常に\(2\) つのシステムを並列稼働させ、データの信頼性を高めるために処理結果を相互に照合する。

    片方のシステムに障害が発生した場合でも、もう一方の処理結果を利用して継続できるようにする。ただし、共通部分の障害や切替え方法によっては、性能低下やサービスへの影響が生じる。

  • デュプレックスシステム
    \(2\) つのシステムのうち片方を稼働、もう一方を待機させ、障害発生時やメンテナンスの場合は待機システムを稼働させてサービス運用に支障が出ないようにする。

    また、稼働システムを主系、待機システムを従系と呼び、従系システムの待機状態には次の種類がある。

    • ホットスタンバイ
      従系システムが常に即稼働できる状態を指す。 また、障害発生時自動で従系システムに切替え処理を継続する仕組みをフェールオーバーという。

    • ウォームスタンバイ
      従系システムが即稼働できない状態で従系システムの稼働に必要な一部のサービスやアプリケーションなどを開始すれば、稼働できる状態を指す。

    • コールドスタンバイ
      従系システムが即稼働できない状態で従系システムを搭載するサーバー機自体の電源が停止している状態を指す。
      サーバー機の電源を入れ、従系システムの稼働に必要な準備を行うため、切替えに時間を要する。

  • 二つの計算結果が違っても、どちらが正しいかは決まらない
    デュアルシステムで同じ入力に対する結果を照合し、片方が100、もう片方が101なら、不一致は検出できる。しかし、この二つだけではどちらが正しいかを多数決で決められない。故障の切分けや診断など、正しい系を選ぶための仕組みが別途必要になる。

    予備系に切り替える構成でも、切替えまでの時間やどこまで最新データを同期できているかは確認が必要になる。装置が二つあることとサービスを無停止・無損失で継続できることは同じ条件ではない。

クライアントサーバーシステム

クライアントサーバーシステムとはクライアントとサーバーで役割を分けて運用する仕組みのこと。

  • \(3\) 層クライアントサーバーシステム
    クライアントサーバーシステム全体の役割を以下の\(3\) 層に分けたもの。

    • プレゼンテーション層
      Webブラウザなどのユーザー操作とサービスメイン処理のインターフェース周りを受けもつ層。

    • ファンクション層(アプリケーション層 / ロジック層)
      アプリケーションサーバーなどで業務ロジックやサービスの主要処理を受けもつ層。

    • データベースアクセス層
      DBサーバーなどのデータ管理周りを受けもつ層。

  • 3層は役割の分担であり、必ず3台という意味ではない
    商品の注文画面を例にすると、プレゼンテーション層は入力・表示、アプリケーション層は在庫や注文条件の判定、データ層は注文や在庫の保存を受け持つ。

    画面側で数量の形式を確認できても、サーバー側は送られた値を改めて検証する必要がある。また、在庫確認と更新の間に別の注文が入る可能性もあるため、保存時の整合性を設計する。層を分ける目的は責務を明確にすることであり、それぞれを別の物理サーバーへ配置するかは別の判断になる。

RAID

RAID(Redundant Array of Independent Disks)とは複数台のディスクを組み合わせ、一つの記憶装置(ドライブ)として扱う技術のこと。

以下、RAIDの種類とその特性。

  • RAID \(0\)
    複数台のハードディスクにデータを分散することで高速化したもので、これをストライピングという。
    \(1\) 台のハードディスクに比べ高速だが信頼性が低い。

  • RAID \(1\)
    複数台のディスクに同じデータを書き込み、冗長性を高めたもので、これをミラーリングという。
    読込み性能が向上する場合がある一方、書込み性能は実装に依存する。なお、RAIDは装置故障時の可用性を高める仕組みであり、誤削除などに備えるバックアップの代わりにはならない。

  • RAID \(0+1\), RAID \(1+0\)
    上記RAID \(0\)(ストライピング)とRAID \(1\)(ミラーリング)を組み合わせて、高速かつ信頼性を高くしたもので最低でもディスクが4台必要。

    RAID \(0+1\) はストライピングされたディスクをミラーリングする。
    RAID \(1+0\) はミラーリングされたディスクをストライピングする。

  • RAID \(3\)
    複数台のディスクのうち\(1\) 台を専用パリティディスクとし、データをビットまたはバイト単位でストライピングする方式。

    例えばどこかディスクが故障した場合、残ったディスクとパリティディスクの偶数パリティをビット単位で算出し、故障したディスクデータを復元。

  • RAID \(4\)
    上記RAID \(3\)をビット単位ではなくブロック単位で算出し、故障したディスクデータを復元できるようにしたもの。

  • RAID \(5\)
    データと一台分のパリティ情報をブロック単位で複数のディスクに分散し、一台のディスク故障に耐えられるようにしたもの。

  • RAID \(6\)
    RAID \(5\)を拡張し、二台分の分散パリティ情報を持たせることで、同時に二台のディスクが故障しても復元できるようにしたもの。

  • 同じ4台でも容量と耐障害性は異なる
    同容量の2 TBドライブを4台使用し、管理情報などの容量を無視すると、代表的な構成は次のようになる。

    構成 利用可能容量 ドライブ故障への耐性
    RAID 0 8 TB 1台の故障にも耐えられない
    RAID 10(2台ずつのミラーをストライピング) 4 TB 任意の1台。同時2台は別々のミラー組なら継続可能
    RAID 5 6 TB 任意の1台
    RAID 6 4 TB 任意の2台

    RAID 5のパリティは例えばデータのビットA=1、B=0なら \(P=A\mathbin{\mathrm{XOR}}B=1\) となる。Bを失っても \(A\mathbin{\mathrm{XOR}}P=0\) から復元できる。一方、AとBを同時に失うと、パリティ一つだけでは両方を特定できない。

    冗長化したデータも誤った削除や書換えはそのまま反映される。RAIDはドライブ故障への備えであり、過去の状態へ戻すバックアップとは役割が異なる。

信頼性設計

以下、システム全体の信頼性を担保するための代表的な設計思想。

  • フォールトトレランス
    システムの一部で発生した障害をシステム全体でリカバリし、機能停止を防ぐ設計思想。

  • フォールトアボイダンス
    個々の機能の障害発生率を下げてシステム全体の信頼性を上げる設計思想。

  • フェールセーフ
    一つの障害が新たな障害を生まないよう、被害を最小限に安全性を最優先した設計思想。

  • フェールソフト
    機能や性能は低下するが、障害が発生した部分を切り離し、システムの継続性を最優先した設計思想。
    この稼働方法(運転方法)をフォールバック(縮退運転)という。

  • フォールトマスキング
    機器に故障が発生した場合、その影響が外部に伝播しないようにする設計思想。

  • フールプルーフ
    ユーザーが間違った操作をしても致命的な状態にならないようにする、もしくは間違った操作ができないようにする設計思想。

  • 継続することと安全に止めることを使い分ける
    通販サイトでおすすめ表示の故障時にその部分だけを止め、商品検索や注文を続けるのは、機能を縮小して運用を続けるフェールソフトの例になる。

    一方、加熱装置で温度センサーの異常時に加熱を止める設計は、安全側へ移すフェールセーフの例になる。停止そのものが失敗なのではなく、何を守るべきかによって適切な動作が変わる。正常時の性能だけでなく、故障時に残す機能と止める機能を決めておく必要がある。

その他システム構成

以下、上記デュアルシステム、デュプレックスシステム以外の近年に見られる代表的なシステム構成。

  • クラスタ(クラスタリング)
    複数コンピュータを結合して一つにしたシステムで、負荷分散(ロードバランス)やHPC(高性能計算)の手法として用いられる。

  • シンクライアント
    ユーザーが使うクライアント端末は必要最低限の処理のみとし、その他処理をすべてサーバー側で実施する仕組みのこと。

  • ピアツーピア(\(P2P\))
    端末同士が対等な立場で通信し、それぞれがクライアントとサーバーの役割を担える方式。接続先の探索や制御に中央サーバーを利用する構成もある。

  • 分散システム
    複数のプログラムが並列的に複数のコンピュータで分割分担し、一つの処理を実行する仕組みを持つシステムのこと。

    また、地理的に別の場所にあるシステムへアクセスする際、そのシステムが遠隔地にあることを意識させないアクセス方法とする性質をアクセス透過性という。

  • CDN(Content Delivery Network)
    動画や音声などの大容量のデジタルコンテンツを配信する際に、インターネット回線の負荷を軽減するようにサーバーを分散配置したネットワークのこと。

ストレージ

ストレージとはハードディスクやCD-Rなどのデータやプログラムを長期間保管しておくための補助記憶装置を指す。

従来は外部接続装置や内蔵装置としてサーバーに直接接続する方法が一般的だったが、近年ではネットワークを通じて別の場所にあるストレージと接続するケースも多い。

以下、ストレージの接続手法。

  • DAS(Direct Attached Storage)
    サーバーにストレージを直接接続し、そのサーバー専用の記憶装置として利用する構成のこと。
    構成は比較的単純だが、性能や導入コストは接続方式や機器構成によって異なり、直接接続であることを理由にアクセス速度が遅くなるわけではない。

    ※ 以下、SAN、NASの手法が出てきたことで、従来の方法はDASと呼ばれるようになった。

  • SAN(Storage Area Network)
    サーバーとストレージを接続するためにストレージ専用のネットワークを使用するシステムのこと。
    サーバーからは主にブロックデバイスとして利用する。性能、構成の複雑さ、導入コストはFibre ChannelやiSCSIなどの方式と機器構成によって異なる。

  • NAS(Network Attached Storage)
    ファイルを格納するサーバーをネットワークに直接接続することで外部からファイルを利用できるようにしたシステムのこと。
    NFSやSMBなどを通じて主にファイル単位で共有する。専用機器だけでなく汎用サーバーでも構成でき、性能やコストはネットワークと機器構成によって異なる。

  • NASはファイルを渡し、SANはブロックを渡す
    NASでは利用側が「このファイルを開く」と要求し、ストレージ側のファイルシステムが保存場所を管理する。SANでは利用側にブロックデバイスを提供し、通常は利用側がその上のファイルシステムを管理する。

    そのため、SANの同じ領域を複数ホストから同時に使えば、自動的に安全なファイル共有になるわけではない。共有を前提としたファイルシステムや排他などが必要になる。接続速度だけでなく、ファイルの名前や同時更新をどちら側が管理するかが大きな違いである。

仮想化技術

仮想化とは物理的なマシン構成の制限にとらわれず、論理的にマシン構成を動作/表現する技術のこと。

以下、代表的な仮想化技術と関連して整理されることの多いインフラ構成。スケールアップ、スケールアウト、エッジコンピューティングは構成・配置の考え方であり、仮想化方式そのものではない。

  • サーバーの仮想化方式

    • ホスト型
      OS上にアプリケーションをインストールして仮想マシンを実行。

    • ハイパーバイザ型
      物理マシン上でハイパーバイザを直接実行し、その上で複数のゲストOSを動作させる。

    • コンテナ型
      OS上にコンテナエンジンを入れ、その中にコンテナと呼ばれる分割した仮想化領域を作成して実行。

  • スケールアップ
    ハードウェアを高性能にしてサーバーの性能を上げる方法。

  • スケールアウト
    サーバー数を増やして個々のサーバー負荷を減らし、サーバー全体の性能を上げる方法。

    ※ 仮想化環境では物理サーバーの性能を上げる方法と仮想サーバーの台数を増やす方法を要件に応じて組み合わせることができる。

  • シンプロビジョニング
    利用者には論理的な容量をあらかじめ割り当て、実際の書込みに応じてストレージプールから物理容量を確保する方式。

  • ライブマイグレーション
    仮想サーバーで稼働中のOSやソフトウェアを停止することなく、他の物理サーバーへ移行する技術のこと。

  • VDI(Virtual Desktop Infrastructure:デスクトップ仮想化)
    アプリケーションやデータをサーバーで管理し、クライアント端末では通信および操作のみ実行する方式。

  • エッジコンピューティング
    利用者やデータ発生源の近くに処理機能を配置することで、通信遅延や中央システムへ送るデータ量を減らす手法。

まとめ

  • システム構成では性能、信頼性、拡張性のバランスを考える。
  • RAID 0はデータを分散して高速化し、RAID 1はミラーリングによって冗長化する。
  • デュアルシステムは複数系統を同時稼働させ、デュプレックスシステムは待機系へ切り替える。
  • NASは主にファイル単位、SANは主にブロック単位でストレージを提供する。
  • 冗長化は継続稼働、バックアップは障害や誤操作からの復旧を目的とする。
  • 冗長化してもどちらの結果が正しいかの判定や誤操作からの復旧が自動的に解決するわけではない。故障条件と復旧の目的を分けて設計する。

参考文献

この記事を共有
Xで共有 Facebookで共有 LINEで共有



Copyright SIGMA-SE All Rights Reserved.
s-hama@sigma-se.jp