s08)サーバーのメモリとストレージの仕組み

2024年04月06日

サーバーのメモリとは、コンピューター・サーバー内でデータやプログラムを一時的に保存するためのハードウェアの一部です。メモリは、CPU(中央処理装置)がアクセスして高速にデータを読み書きできる場所であり、サーバーの性能や処理速度に直接影響します。サーバーのメモリは、主にRAM(ランダムアクセスメモリ)と呼ばれる種類のメモリを指します。

サーバーのメモリには、レジスタードバッファやECC機能を備えているものがあります。これらを使用することで、誤ったデータを伝達してしまうリスクが減り、システムの安定性を高めることができます。

レジスタードバッファ

サーバーとパソコンのメモリの違いを見てみましょう。サーバーのメモリには、パソコンのメモリにはないしくみが2つあります。

1つはレジスタードバッファと言われるものです。

CPU が処理したデータはメモリコントローラーを通ってメモリに伝達され書き込まれます。

伝達するデータが増加すると、回路に負荷がかかって電気信号が乱れ、信号が弱まったりタイミングがずれたりします。

多発するとコンピューターの動作は不安定になりますが、これを防ぐために、 メモリコントローラーとメモリの間で電気信号を整えるのがレジスタードバッファです。 レジスタードバッファは、 メモリコントローラーから受け取った信号を強化したりタイミングを合わせるなどしてからメモリに伝達します。

この仕組みのおかげでサーバーは高い安定性をもって動作できています。

信号のタイミング

1と0で表現されるデジタルデータを電気信号でやりとりするには、タイミングを合わせるためのクロック信号が用いられます。 メトロノームのように一定間隔で電圧の高低が切り替わるクロック信号に合わせ、送信するデータが1の場合は高電圧、 0の場合は低電圧と切り替えることで、 電気信号でデータを表現できるようになります。 クロック信号の速さはCPUの動作周波数に対応しています。

ECC機能

サーバーのメモリにある仕組みのECC (エラーチェックアンドコレクト)機能はメモリから読み出したデータに誤りがないかをチェックして、修正する機能です。

コンピューターで扱うデータは0と1の2進数ですべて表現され、 2進数の1桁分のデータを1ビットといいます。メモリに保存されるデータも0と1で表現され、データをやりとりする過程ではときどき、ある1ビットのデータだけ0と1が反転するエラーが起きます。ECCメモリはこのエラーを検出して修正します。

ECCメモリはデータを保存する際に、 もとのデータからエラーチェック用のデータ (誤り訂正符号) を生成し、もとのデータとは別に保存します。 そしてデータを読み出したときに、 読み出したデータから誤り訂正符号を再度生成します。

ここで生成された誤り訂正符号と最初に生成された誤り訂正符号が一致すれば、 読み出したデータは正しいと見なせます。 一致しなかった場合、 読み出したデータには誤りがあると判断され、 エラーの修正もしくはデータの再読み込みが行われます。これによってサーバーは正確な処理を実行できるのです。

ビットとバイト

ビットとバイトは、ともにデータ量の単位です。 2進数の1桁分が1ビット。 2進数8桁分のデータ量すなわち8ビットが1バイトに対応します。

パリティ

パリティとは、あるデータについて各桁を足し合わせたものが偶数(0) か奇数 (1) かを示すものです。例えばデータが1101なら、 1+1+0+1=3で奇数なのでパリティは1です。 1ビットだけ1と0が反転するエラーが起きた場合、誤ったデータから計算したパリティはもとのデータから計算したパリティとは一致しないので誤りを検出できる仕組みです。

サーバーのストレージ

サーバーのストレージとは、サーバーがデータを保存・管理するための領域のことです。これにはハードディスクドライブ(HDD)、ソリッドステートドライブ(SSD)、または最近ではクラウドストレージなどのさまざまな形式があります。データベース、ファイル、アプリケーションなど、さまざまな種類のデータを保存するのに使用されます。

ストレージの形状

ストレージの形状には3.5インチ、2.5インチ、M.2などがあります。インチの数値はHDDの内部にあるディスクの直径からきています。M.2は、コンパクトなカード型の形状で、M.2端子に接続するタイプです。

SAS と SATA

サーバーとパソコンではストレージの接続の規格が違い、パソコンでは SATA、サーバーではSASが用いられることが多いです。これらの規格はデータ転送の方式が異なります。 SATA は半二重通信という方式で送信と受信を同時に行えず、 送信と受信を素早く切り替えながら通信します。

SAS は全二重通信という方式で送信と受信を同時に行え、複数のクライアントからのリクエストを並列して処理できます。データ転送のしかたなども信頼性を重視した設計になっています。
SATAやSASのデータ転送速度では、読み書きの高速なSSDの性能を十分に生かしきれないという状況があり、より速いデータ転送を実現する NVMe という規格が使われるようになりました。
NVMe規格のSSDはM.2という規格の接続口に接続し、 内部的には PCI Express という規格で通信します。

データ転送速度

データ転送速度はビット毎秒 (bps)という単位を使って表し、 1bpsは1秒間に1ビットのデータを転送できることを示します。 1Gbps=1×10°bpsとなります。

ボトルネック

ビンから流れ出る液体のフードは、ビンの口のサイズでは 、ほかの部分の大きさはあません。このことにたどの進行において一部の姿が全体の進行速度を決定づけるような場合、その要因をボトルネックと呼びます。 SSDでは、 SATAやSASのデータ転送速度がボトルネックになっているといえます。

最大データ転送速度

SATA  6Gbps(※)
SAS  12Gbps(※)
PCI express 4  126Gbps
※これを上回る読み書き速度のSSDを用いる場合、データ処理のボトルネックとなる。

RAIDとは?

複数のストレージを組み合わせ、コンピューター上でまとめて1つとして扱えるようにする技術が RAID です。 もとになる複数のストレージを物理ストレージ、コンピューター上に見える1つのストレージを論理ストレージと呼びます。 RAID を使ってストレージを構成することで、冗長性を持たせて物理ストレージの一部が故障してもデータを損失しないようにしたり、データの読み書きを速くしたりできます。 複数の物理ストレージをユーザー側が区別して使用する必要もなくなるメリットもあります。

RAID にはいくつかの種類があり、 実際に使用されることが多いのは、 RAID 0、 RAID 1、 RAID 5 RAID 6 です。 RAID 0 はストライピング、 RAID 1 はミラーリングとも呼ばれます。 RAID の種類を組み合わせてストレージを構成することで、耐障害性の高いシステムの構築が可能となります。

冗長性

冗長性とは、機器などを余分に、もしくは重複して準備している状態のことです。システムに冗長性を持たせることを冗長化といいます。障害が発生したときにも機能の提供を継続し、システムが停止したときにも速やかに復旧させるためには、事前の冗長化が重要です。

RAID 0複数のストレージに書き込みを分散させる。読み書きが速い。冗長性はなく、構成するストレージが1つでも故障すればすべてのデータが失われる。利用効率はよい。ストライピングとも呼ばれる。
RAID 1複数のストレージにまったく同じデータを書き込む。 書き込みが遅い。もっとも単純な冗長構成。 利用効率は悪い。 ミラーリングとも呼ばれる。
RAID 5データとデータから作成したパリティを複数のストレージに分散して書き込む。読み込みは速いが書き込みが遅い。 RAID 1より利用効率はよい。 ストレージ1台までの障害に耐える。
RAID 6データとデータから作成した2つのパリティを複数のストレージに分散して書き込む。読み込みは速いが書き込みが遅い。RAID 1より利用効率はよいがRAID 5より悪い。ストレージ2台までの障害に耐える

ストレージの書き込みの負荷

複数のストレージに書き込みを分散させるRAID 0は、1つのストレージに一度に書き込むデータ量が少なくて済むため書き込みに要する時間が短くなります。これに対しRAID 1はすべてのデータを1つのストレージに書き込むため書き込みに時間がかかります。RAIDを構成する際にデータの重要性や利用効率、書き込みスピードなどを考慮する必要があります。

  • HOME
  • コラム
  • s08)サーバーのメモリとストレージの仕組み

このページのTOPへ