ITインフラストラクチャーとは、物理的なマシン、ネットワーク、オペレーティングシステム、データベース、クラウドなど多岐にわたる領域を指します。
ほとんどのサービスはITインフラストラクチャーに依存しており、これらのインフラストラクチャーが停止することはあってはいけません。もし、停止するようなことがあれば、ユーザーはサービスを利用できなくなり、(高額な)問題が発生します。
本記事では、サーバーのコンポーネントを紹介しながら、システムがバックグラウンドでどのように動作するのかを説明しています。
ITインフラストラクチャーとは、物理的なマシン、ネットワーク、オペレーティングシステム、データベース、クラウドなど多岐にわたる領域を指します。
ほとんどのサービスはITインフラストラクチャーに依存しており、これらのインフラストラクチャーが停止することはあってはいけません。もし、停止するようなことがあれば、ユーザーはサービスを利用できなくなり、(高額な)問題が発生します。
本記事では、サーバーのコンポーネントを紹介しながら、システムがバックグラウンドでどのように動作するのかを説明しています。
物理サーバーには多数のハードウェアコンポーネントが含まれています。ほとんどのサーバーにはCPU、GPU、RAM、ストレージ(HDD、SSD)、電源ユニットなどの主要なコンポーネントがあります。以下がサーバーの内部です。
※ ホットスワップ:機器の電源を入れ稼動状態を保ったまま、部品やケーブルなどを交換、装着、抜去が可能。
※ ドライブベイ:コンピュータケース内にストレージ装置など内蔵型の周辺機器を収納するための場所。
※ DIMM(Dual Inline Memory Module)は、複数のDRAMチップをプリント基板上に搭載したメモリモジュールのこと。
仮想サーバーは、ハードウェアの構成要素をソフトウェアで実現したものです。仮想化ソフトウェアを使用すると、PCに簡単にサーバーインスタンスをデプロイできます。以下に示すように、仮想サーバーには大きく3つのタイプがあります。
ホスト型では、物理マシンのホストOSに、ホスト型仮想化ソフトウェアをインストールして、仮想化ソフトウェア上に仮想マシン(ゲストOS+アプリケーション)を作成します。例)VMware Fusion、VMware Workstation Player、Oracle VM VirtualBox等。
ハイパーバイザー型は物理マシンにハイパーバイザー型仮想化ソフトウェアをインストールし、仮想マシンを作成します。例)VMware ESXi、Hyper-V、LinuxのKVM(Kernel-based Virtual Machine)。
コンテナ型は、物理マシンのホストOSに、コンテナ管理ソフトウェア(例. Docker)をインストールします。そして、コンテナイメージ(アプリケーションやソフトウェアを実行環境とともにパッケージ化したもの)を起動することで、コンテナイメージ内のアプリケーションやソフトウェアが実行されます。
仮想化やコンテナについては、こちら(Virtualisation and Container (仮想化とコンテナ))の記事が詳しいです。
中央処理装置 (CPU) は、コンピュータプログラムの指示を実行する電子回路です。CPUは、プログラムによって指示された基本的な演算、制御、および入出力 (I/O) 操作を実行します。CPUの性能を決めるパラメータの一つとして、クロック周波数(Hz)があります。クロック周波数は、CPUが1秒間に動作する回数を示します。クロック周波数が高いほどCPUの性能は向上します。また、複数のコア(CPUに内蔵しているプロセッサー)を利用することで、並列処理を可能とし性能が向上します。
コンピュータの基本動作である「フェッチ実行サイクル」において、CPUは以下のように動作します。
1. CPUは、RAMから1つずつ命令をレジスタ(CPU内部にある記憶装置)に取り込みます。プログラムカウンタ(pc)と呼ばれるレジスタがあり、プログラムカウンタ(pc)はメインメモリから次に取り出す命令のメモリアドレスを保持します。
2. CPUは、制御ユニットで命令をデコードします。
3. CPUは、演算/論理ユニットで命令を実行します。
4. 命令がなくなるまで1-3を繰り返します。
グラフィックス処理装置 (GPU) は、出力用のフレームバッファ(ディスプレイに表示する画像データを一時的に保存するメモリ)における画像の作成を加速するために、迅速にメモリを操作および変更するために設計された専用の電子回路です。また、機械学習にも使用されます。マザーボードのPCIeスロットに接続されます。
ファンは、熱したコンポーネントを冷却するために、コンピュータ内部に取り付けられています。ファンは、外部からケースに冷たい空気を吸い込み、内部から暖かい空気を排出し、ヒートシンクを通して特定のコンポーネントを冷却するために使用されます。
ランダムアクセスメモリ (RAM) は、任意の順序で読み取りおよび変更できるコンピュータメモリの形式で、通常は作業データとマシンコードを格納するために使用されます。揮発性メモリ。
※ 揮発性メモリとは、電源を供給しないと記憶している情報を保持できないメモリのこと。これに対して、不揮発性メモリとは、電源を供給しなくても情報を失わない永続的な保存を可能とするメモリのこと。
ハードディスクドライブ (HDD) は、磁気ストレージを使用してデジタルデータを格納および検索する電気機械式データストレージデバイスです。磁気ディスク(磁性体でコーティングされた1つまたは複数の高速回転する円盤(プラッタ))にデータを読み書きします。
ソリッドステートドライブ (SSD) は、データを永続的に格納するために集積回路アセンブリ(フラッシュメモリから成る)を使用するストレージデバイスです。コンピュータストレージの階層でセカンダリストレージとして機能します。不揮発性メモリ。現在は、SATA SSDではなく、より転送速度に優れたNVMe SSDが主流です。
※SATA(Serial ATA):コンピュータにHDD、SSDを接続するためのインタフェース規格。ストレージプロトコルはAHCI(Advanced Host Controller Interface)が使用される。
※NVMe(Non-Volatile Memory Express):インターフェイス規格であるPCIe (Peripheral Component Interconnect Express, 周辺機器コンポーネント相互接続エクスプレス) でSSDに接続するためのストレージプロトコル。NVMe SSDは直接マザーボードに接続される。
ネットワークLANケーブルの接続口。
関連するキーワードとして、以下のようなものがある。
電子回路基板のこと。CPU、DIMM、ストレージ、PCI、ビデオカード、電源装置など、コンピュータを構成するのに必要なパーツが接続されます。
電源装置は、コンピュータの内部コンポーネントのために、交流電源を低電圧規定された直流電源に変換します。冗長化のために、サーバーには2つのユニットを用意する場合があります。
RAIDコントローラーは、RAIDアレイを制御し、物理ディスクドライブの機能を維持するために管理するデバイスです。また、RAIDコントローラーは、RAID内のディスクが論理ユニットとして機能するように制御する働きもあります。
※RAIDコントローラーのようなハードウェアでRAIDを実現するハードウェアRAIDに対して、ソフトウェアでRAIDを実現するソフトウェアRAIDという方法もあります。
RAIDは、複数の物理的なディスクドライブコンポーネントを1つまたは複数の論理ユニットのように扱うことで、データの冗長性とパフォーマンスの向上を目的としたストレージ仮想化技術です。以下にいくつかの種類のRAIDを示します。
RAID 0(ストライプセットまたはストライプボリュームとも呼ばれる)は、複数のディスクに均等にデータを分割(ストライプ)します。パリティ情報(データを復元するために使われる符号)は保存されません。RAID 0は耐障害性や冗長性を提供しないため、1つのドライブが故障すると、すべてのデータが失われる危険性があります。
RAID 1は、複数のディスクにデータセットのコピー(ミラー)を書き込みます。古典的なRAID 1ミラーペアは、2つのディスクから構成されます。この構成では、データがアレイに属するすべてのディスクにミラーリングされているため、パリティやディスクスペースのストライピングはありません。
RAID 5は、分散パリティを持つブロックレベルのストライピングで構成されています。パリティ情報はドライブ間で分散されます。単一のドライブの故障時、分散パリティからの読み取りを計算することで、データを失うことなく次の読み取りが可能です。RAID 5には、少なくとも3つのディスクが必要です。
RAID 6は、別のパリティブロックを追加することでRAID5を拡張します。ブロックレベルのストライピングを使用し、2つのパリティブロックがすべてのメンバーディスクに分散されます。RAID5と同様に、RAID6ディスクアレイのレイアウトは、データブロックやパリティブロックの位置に依存して、多数存在します。
今回は、物理サーバー、仮想サーバー、そして、そのサーバーのコンポーネント、RAIDについて紹介しました。ITインフラストラクチャーには、必ず物理的なマシーンがどこかに存在し、今回紹介したようなコンポーネントから構成されます。これは、昨今普及しているクラウドであっても同様です。最初に述べたように、ITサービスがITインフラストラクチャーに依存する以上、今回紹介したような内容は、ITサービスに携わるエンジニアにとって知っておくべき知識と言えるでしょう。