西川善司の「InfiniCloudのサーバーの中身、見せてもらえます?」
Top / Techストーリー / 西川善司の「InfiniCloudのサーバーの中身、見せてもらえます?」 / 第2回ストレージ編

第2回ストレージ編

西川善司の「InfiniCloudのサーバーの中身、見せてもらえます?」第2回

サーバーにおけるストレージの四方山話!?

 クラウド事業やサーバー事業を営んでいるInfiniCloud社に、実際のサーバーマシンに使われているハードウェアについて、色々訊いていくこの企画。前回は、InfiniCloud社が提供を開始した、最新プライベートクラウドサービス「6G Third Edition」のCPU周りについての特徴やこだわりについて伺ったが、今回は、ストレージデバイスについて聞いていこうかと思う。

 ストレージデバイスというと、なんとなく"華"がないように思えるかもしれないが、なかなかどうして。サーバー業界のストレージデバイスには、案外、一般PCユーザーが知らないことも多いのだ。今回は、そのあたりの話題を紹介していくことにしたい。

サーバー向けのSSDを見てみよう!

 まず初めに、下の写真を見てもらおう。

u3_ssd…このSSD、なーんだ?

 今回の話題はSSDということで、いきなりSSDの写真を示してみたのだが、このSSDは、どんなフォームファクターのSSDか分かるだろうか。

 システムインテグレータ(SIer)やサーバー事業の関係者だと即答だろうが、一般的なPCユーザーだと「あ、SATA接続の2.5インチのSSDだ」と答えるかもしれない。

 実はこれ、見た目は「SATA接続の2.5インチのSSD」によく似ているが、PCI-Express x4で接続できる「U.3」フォームファクターのSSDなのだ。

 

 普段、我々が活用しているPCに搭載されているSSDは、速度重視の起動ドライブにはM.2フォームファクターのものが主流だということは、多くの人が知っていることだろう。最近のこのM.2型SSDの接続インターフェースの主流はPCI-Express(プロトコルとしてはNVMe。以下同)となっていることも今や説明不要だろう。

 PCには、この他、データ保存用ドライブ用途としてSATAインターフェース接続の「箱型」形状のハードディスクドライブ(HDD)やSSDを搭載している場合もあるだろう。前出の「U.3」型SSDは、まさに、このSATA接続タイプのSSDに酷似していたわけだが、目を凝らしてよーく見ると、端子の形状が違うことに気がつくだろう。

 

U3 SSDの端子とSATA SSDの端子の比較

 このU.3 SSDは、インターフェースとしてはSATA/SAS接続にも対応しているものもあるが、現在の主流はM.2のSSDと同様に、PCI-Express x4(NVMe)接続タイプである。また、U.3 SSDは、そのサーバーの動作中に換装が可能なホットスワップ(活線挿抜)に対応している点も特徴となっている。

 ここで気になるのが、我々が普段使っている、デスクトップPCやノートPCに搭載されている、いわゆ民生向けSSD製品と、こうしたサーバー向けSSD製品の相違点だ。速さだけでいったら、民生向けのSSDも相応に高速になってきている。

 
多くの皆さんが知識として知っているのは「サーバー向けSSD製品は民生向けSSD製品と比べて耐久性が高い」と言うことだと思います。もちろんそこは大前提としてそうなんですが、それ以外にも大きな違いがあります。それは高負荷時の性能ですね。民生向けにもDRAMキャッシュやSLCセルのキャッシュが搭載されたSSD製品はあると思いますが、民生向けSSD製品で実行したストレージデバイス向けのベンチマークテストでの高スコアは、このキャッシュ性能の恩恵による部分が大きいんです。一方で、多種多様なワークロードが実行される仮想マシンを複数動かすサーバーでは、高頻度でストレージへの負荷がとても高くなるため、DRAMキャッシュやSLCキャッシュの容量も民生向けSSDに対して大きく設定されています。また、これらが有効に効かない高負荷時にですら、民生向けSSDよりは高い性能を維持します。ここが大きな相違点でしょうね。
(エンジニアリング本部 本部長, 小熊 氏)

(エンジニアリング本部 本部長, 小熊 氏
 

 SSDを構成する単位記憶素子のNANDフラッシュメモリーには、素子レベルでは「上書き」という概念が存在しない。それこそ、CD-RWのように「消してから書く」ことしかできないデバイスである。

 なので、SSDにおいて「データの書き換え」時には、この「消してから書く」という工程を隠蔽して高速化するために、NANDフラッシュメモリーへの書込み先を並列化させるような「ライト・アンプリフィケーション」を実践したり、空き容量の方に先に直接、書き込んでしまい、元々の記憶箇所を"後消し"するような「ウェアレベリング」制御を行ったりする。こうした制御は、その動作原理上、SSD側の空き容量が小さくなってくると、うまく働かなくなる。

 サーバー向けSSDの場合も、キャッシュが効きにくくなれば、「ライト・アンプリフィケーション」や「ウェアレベレング」は行われているが、サーバー向けSSDは、民生向けSSDよりも多めに冗長領域を担保しているため、長期に渡って効果的な「ウェアレベレング」を効かせることが出来る。実際、民生向けSSDでは、公称容量4TB、8TBという切りのよい容量値で販売されているものが多いが、サーバー用SSDは、民生向け同容量クラスよりも4%ほど少ない公称容量3.84TB、7.68TBで販売されている。サーバー用SSDは、同容量クラスの民生向けSSDよりも4%ほど記憶容量が減っているが、その4%の容量を、アクセスの高速性と長寿命の維持のために活用しているのだ。

「Interconnected Storage」とは?

 このInfiniCloudが提供するプライベートクラウドサービス「6G Third Edition」のサーバーマシンのストレージサービスには「Interconnected Storage」と「Enterprise Storage」、「Backup Storage」の3つがあるが、「Interconnected Storage」と「Enterprise Storage」にて、このU.3型のSSDが使われている。しかし、そのストレージシステムの構築スタイルは異なっているとのこと。それぞれ、どのように使い分けるものなのだろうか。

「Interconnected Storage」は、我々のプライベートクラウドサービス「6G Third Edition」が提供するストレージサービスの基本ソリューションとなっているものです。こちらは、全てのU.3 SSDが、サーバー側のCPUと直結されたストレージシステムになっていまして、99.9999%の読み書き混在のアクセスを2ms未満でこなせることを保証しています。この「Interconnected Storage」のSSD には15mm厚のU.3のSSDを採用しています。こうしたサーバー向けのU.3 SSDは、発熱が凄いので大型のヒートシンクが付いています。なお、特定のメーカーを使っているわけではなく、その時折々において、最適なものを選択しています。
(代表取締役CEO:瀧 氏)

代表取締役CEO:瀧 氏
 

Interconnected Storage

 「6G Third Edition」サービスでは、容量にして3.84TB、7.68TB、15.36TBの「Interconnected Storage」を選択でき、最大12スロット構成の「Interconnected Storage」を構成できるようになっている。

 上でも瀧氏が述べているように「Interconnected Storage」を構成するU.3型SSDはCPUに直結されることから、その接続バスはチップセットからのPCI-Expressバスではなく、CPUから直出しで提供されるPCI-Expressバスとの接続になる。そのため、クラウドインスタンスのデータ領域としてだけでなく、高速なブート領域としても使えるようになっている。

 

Interconnected Storage

 ところで、前回、「6G Third Edition」のサーバーマシンはCPUにintel Xeonを採用しているソリューションと、AMD EPYCを採用しているソリューションがあることについて触れたが、XeonとEPYCでは、CPUに対して直結できるPCI-Expressレーン数が異なる。具体的には、第4世代EPYCは128レーン、第3世代Xeonは64レーン(第4世代は80レーン)となっている。この影響で、最大12スロット構成が実現できるのはCPUにEPYCを搭載したソリューションの方で、Xeonのソリューションでは最大10スロットとなる。

 

 

「Enterprise Storage」とは?

 続いて、もう一つのストレージサービス「Enterprise Storage」はどういうものなのだろうか。これにもU.3型のSSDが使われているようだが。

「Enterprise Storage」は、「6G Third Edition」サービスのインスタンスのデータ収納用や、OS内からブロックストレージ(いわゆるストレージボリューム)、共有用ファイルストレージ(ファイル共有用途)などとして利用することができるストレージサービスです。こちらのブロックストレージもブートボリュームとして利用もできます。

「Interconnected Storage」は、直結されたU.3 SSDを活用する形態でしたが、「Enterprise Storage」は、U.3 SSDが実現するストレージ機能をストレージサーバーが25Gbpsのイーサネットの2レーンで実現する50Gbpsの帯域を通して「6G Third Edition」のクラウドサービスに提供するものになります。要するに、ストレージサービスをサーバー直結形態で提供するのが「Interconnected Storage」、ストレージサーバー経由で提供するのが「Enterprise Storage」ということですね。
(エンジニアリング本部 本部長, 小熊 氏)


(エンジニアリング本部 本部長, 小熊 氏
 


Enterprise Storage

25Gbpsのイーサネットを1レーンとして、複数レーンをまとめて活用することで、上層から見ると「1つの高い帯域イーサネット」として活用できるようにする技術はLink Aggregationと呼ばれ、IEEE 802.3adにおいて、LACP(Link Aggregation Control Protocol)として定義されている。「Enterprise Storage」は、物理回線としては25GbpsのイーサネットをLACPによって2レーン・50Gbpsの帯域を実現させたストレージサービスということになる。 

 ところで「Enterprise Storage」では、ユーザーが、予算やニーズに合わせて「Dedicated」(占有型)タイプと、「Guaranteed」(リソース保証型)タイプの2タイプのストレージモデルから選択して利用出来る。

 

「Dedicated」タイプはスループット重視のストレージモデル、「Guaranteed」タイプは必要な容量と帯域の範囲で利用出来るコストパフォーマンス重視のストレージモデルとなっているとのこと。 さて、「Enterprise Storage」は、ストレージサーバーによって提供されるストレージサービスなので、当然、コンピュータ部分があるはずだ。しかし、InfiniCloud社のWebサイトにも、そのコンピュータ部分のスペックは特に公開されていない。このあたりのスペック、教えてもらえないだろうか。 

はい。インテルの第3世代のIntel Xeon Silver 4314 16-core 2.4 GHz processor を使っていますね。ピーク演算パワーが求められるわけではないストレージサーバーですが、そうはいっても、結局、全てのU.3 SSDをPCI-Express Gen4の4レーンで接続させるので、第3世代のXeon Scalable Processorを使っています。第2世代XeonだとPCI-ExpressがGen3までの対応なんです。これだと、最新のU.3 SSDのピークパフォーマンスを、PCI-Express Gen3の帯域では賄いきれなくなるんですよ。
(エンジニアリング本部 本部長, 小熊 氏)

(エンジニアリング本部 本部長, 小熊 氏
 

 EPYC版のEnterprise Storageを構築していない理由はなにかあるのだろうか。

ストレージサーバーとしては、PCI-Express Gen4のレーン数が多いEPYCプラットフォームの方が高い性能が見込めるのですが、Enterprise StorageはInterconnected Storageよりも、トラブル発生時の影響範囲が広いことから、より保守的な機種選別をしているんです。弊社では、インテルの第3世代のXeon Goldプラットフォームに対しては、PCI Expressの活線挿抜時の振るまいなど、シビアなシチュエーション時の動作検証を実施済みで、現時点では、トラブル時の対処がしやすいことから、こうした選択をしています。弊社での動作検証が進めば、将来的には、EPYCプラットフォームのEnterprise Storage提供もあるかもしれません。
(エンジニアリング本部 本部長, 小熊 氏)

(エンジニアリング本部 本部長, 小熊 氏
 

 InfiniCloudの旧世代のサーバーシステムでは、PCI-Express Gen3だったそうで、そのころは、U.3 SSDに往来するデータがPCI-Express Gen3 x4の最大帯域(双方行で約8GB/s)に対して頭打ちとなってしまっていたという。これがPCI-Express Gen4 x4(双方行で約16GB/s)ではこれがほぼ解消されたそうだ。

 現在、民生向けのNVMe SSDは、PCI-Express Gen5対応のモノがチラホラと出てきているが、サーバー向けのPCI-Express Gen5対応SSDも同様で、2023年8月時点では、EDSFF(Enterprise and Data Center SSD Form Factor)E3.Sのフォームファクターのものが出始めたくらいで、まだ始まったばかりというところ。U.3 SSD製品については、2023年8月時点ではいまだにGen4対応品が主流となっている。いずれ、Gen5への移行も活発化するのであろう。

ストレージサーバーの性能を上げるにはメモリー性能の高さが重要になってくる!?

 我々が普段使っているPCは、高性能で広帯域なSSDの登場によって、HDDが主流だった頃と比べて、使用感が劇的に向上した。そして、インターフェースがSATAからPCI-Expressへ、そのPCI-Expressの世代が新しくなるたびに、PCの使用感の快適性がシンプルに向上していっている。

 今はまだ、サーバー向けSSDにPCI-Express Gen5対応のものは少ないようだが、今後、Gen5対応製品が主流となれば、サーバーのパフォーマンスはもちろん、仮想マシンのパフォーマンスもますます向上していくのだろうか。

話はそう単純なものもないんですよ(笑)。ちょっと意外に思えるかもしれませんが、サーバーにおいて、ストレージ性能が上がれば上がるほど、サーバー側のメインメモリーのパフォーマンスの高さが求められてくるんです。ちょっと意味が分かんないですよね(笑)。稼動中のサーバーにおいて、そこで動いている各仮想マシンからのストレージアクセスが増大してくると、当然、ストレージパフォーマンスは落ちてきます。ユーザーから「ストレージが遅いんだけど!」というレポートが届き調べて見れば、サーバー側の物理記憶デバイスであるU.3 SSDの方は、意外とまだまだ余裕なことが多かったりするんです。「ユーザー側ではストレージ動作が重いと感じる」…でも「実体ストレージ動作は余裕がある状態となっている」…こんな現象を我々は「観測点問題」と呼んでいます。これって、結局、どこかにボトルネックが発生していることは間違いないわけです。
(代表取締役CEO:瀧 氏)

代表取締役CEO:瀧 氏
 

 どうしてこのようなことが起きるのか。

 サーバー上の、複数の仮想マシンからストレージへのデータの書込み依頼があったとする。このデータはハイパーバイザーのメモリー空間にコピーされ、今度はそのデータは、ハイパーバイザー側のストレージデバイスのデバイスドライバーのバッファへコピーされる。もし、データを書き込むべきストレージデバイスが、ネットワークの向こう側のストレージサーバーであれば、今度はそのデータはネットワークに伝送される。それを受け取ったストレージサーバーは、そのデータをネットワークインターフェースのバッファからカーネル側のファイルシステムで処理するためにコピーを行う。そして今度は……と言う具合に、サーバーシステムにおけるストレージアクセスの際には、もうそこかしこで、メモリーコピーが頻発するのである。

 CPUが完全に目を離した状態で行えるDMA(Direct Memory Access)ベースのメモリーコピーが利用出来るのは、実体としてのストレージデバイスを制御するデバイスドライバーの段階でのみだ。

ストレージへのアクセスが集中すると、実体としてのストレージデバイス側に余裕があっても、ハイパーバイザー側以降でのボトルネックが目立つようになるんですね。その原因がデータのコピー(メモリーコピー)の頻発です。結局、このメモリーコピーは、多くのケースでCPUが実務を担当するので、そうなればCPU側のデータキャッシュが飽和します。そうなれば、システムのストレージ・パフォーマンスは、CPU管理下のメインメモリー(システムメモリー)の性能に依存するようになっていくわけです。
(エンジニアリング本部 本部長, 小熊 氏)

(エンジニアリング本部 本部長, 小熊 氏
 


メインメモリー

我々が普段使っている民生向けのPCでは、メインメモリーのインターフェースはデュアルチャンネル(2ch)が採用されている。これは、メモリーアクセスを、"2つ"に分けたメモリーバンクに対して同時並列アクセス(インターリーブ・アクセス)を実践することで、各メモリーバンクへのアクセス時に生じる遅延を隠蔽する仕組み。理論的にはメモリー帯域は、単一のメモリーバンクへのアクセスであるシングルチャンネル(1ch)時の2倍となる。たとえば、DDR4-3200MHzのシングルチャンネルでは25.6GB/s、デュアルチャンネルでは51.2GBの帯域がある。 

 InfiniCloudが提供しているサーバーマシンに採用しているCPUはIntel系ではXeon Silver 4310/4316を、AMD系ではEPYC9124/9334を採用しているが、そのメモリーバンク数は、Intel系でDDR4-3200の8ch、AMD系でDDR5-4800の12chを採用している。つまり、帯域はそれぞれ、341GB/sと920GB/sとなり、民生向けPCとは文字通り、桁違いに高い帯域を実現している。

 サーバーマシンの異常なまでのメモリー帯域の高さは、ストレージパフォーマンスの性能維持にも一役買っているわけである。

 
このマルチチャンネルのメモリーインターリーブの特質を最大限に活かすためには、8chならばメモリー(DIMM)の装着枚数は8枚、12chならば12枚としなければなりません。そんなわけで、最近のサーバーマシンは、1024GB(Xeon系)とか1536GB(EPYC系)と言った具合に、搭載メモリー容量が大きくなりがちになっています。しかし、お客さまによっては「そんな大容量は不要」という意見もあるんですよね。ただ、最大チャンネル数でメモリーを動かさないと、メモリー帯域に影響が出るので、そのあたりには気を使ってマシンを構成しています。
(エンジニアリング本部 本部長, 小熊 氏)

(エンジニアリング本部 本部長, 小熊 氏
 

 サーバーマシンにおいて、ストレージ性能を上げるには、「メモリーパフォーマンスが重要」という話は、かなり興味深い話であった。

 次回もお楽しみに!

 

シリーズ: 西川善司の「InfiniCloudのサーバーの中身、見せてもらえます?」


※当ページに記載されている会社名、システム名、サービス名、製品名等は一般に各社の登録商標または商標です。

関連ページ

Private CloudPrivate Cloud
StorageStorage
NetworkNetwork