アレイ分割の歴史
ITの分野、特にSMB分野における定型知識の多くは、様々な要因に基づいて1990年代後半に生まれました。最大の要因は、突然より小規模なビジネスがコンピューター化に急速に移行したこと、MicrosoftがWindows NT 4を非常に安定させてSMB IT全体の標準的な基盤を確立したこと、インターネット時代がついに定着したこと、そしてMicrosoftが業界の知識普及を変革する認定・トレーニングプログラムを導入したことでした。これらが合わさって、新しいトレーニングとベストプラクティスの必要性が生まれ、新しい考え方、執筆、ドキュメント、トレーニング、ベストプラクティス、経験則などの大きな波が起きました。
数年間、業界全体がほぼ同じ小さな知識セットに基づいてトレーニングされ、多くの経験則が事実上の標準となり、当時の知識の多くはメンターから研修生へと受け継がれ、1998年の技術的な知識の多くが2012年の疑いなき不変のプロセスへと移行しました。当時はこれが効果的でしたが、それは当時の実情に合ったものでした。しかしそれは15年前のことで、テクノロジー、経済、ユースケース、知識は当時から大きく変化しています。
この最良の例の一つが、有名なMicrosoft SQL Serverの推奨設定です。オペレーティングシステムにはRAID 1、データベースファイルにはRAID 5、ログには別のRAID 1という構成です。この設定は製品のほぼ全期間にわたって存続しており、非常によく広まったため、SMBのサーバー設計のほぼすべての側面に広がりました。オペレーティングシステムへのRAID 1とデータへのRAID 5の使用は非常に普及しており、当時なぜこれが推奨されたかについての考慮なしに単純に想定されることが多いです。
その歴史を調査し、なぜR1/5/1が1998年には適切だったのか、そしてなぜ今日それが存在すべきでないのかを見てみましょう。いくつかの視点を念頭に置いてください。これらの推奨事項が最初に出た時点(1995年まで遡る場合もある)と今日の差は計り知れません。精神的に1995年に戻って、当時の同等のギャップを考えてみてください。それは最初のApple ][ユーザーのためのホームコンピューティングのニーズに基づいてインターネット初期の推奨事項を使用するようなものです!8ビットのホームコンピューター時代は1978年にようやく始まったばかりでした。Commodoreはまだ最初のホームコンピューター(VIC-20)をリリースする2年前で、Commodore時代とCommodore Amiga時代を経て、1995年以前に倒産・消滅していきました。Apple ][+はまだ1年先の話でした。人々はちょうどアナログカセットドライブをストレージとして使い始めようとしていました。COBOLとFortranのみがビジネス向けの言語として使用されていました。基本的に、そのギャップは驚異的です。物事は変わります。
まず、かつての設定の必要性を生み出した1990年代後半に存在した要因を見てみましょう。
- ドライブは小さく、非常に小さかったです。大きなデータベースアレイは、単一のアレイで約6GBの使用可能なストレージ容量しかない4台の2.1GB SCSIドライブのR5アレイだったかもしれません。パリティRAID障害の障害ドメインは(URE障害率などと比較して)非常に小さかったです。
- ドライブ接続技術はパラレルで低速でした。当時のハードドライブは今日のドライブよりわずかに遅いだけでしたが、接続技術はかなりのボトルネックを表していました。バスのボトルネックを減らすためにトラフィックを分割することが一般的でした。
- SCSIドライブ技術がサーバーで使用される唯一のものでした。サーバーにPATA(当時はIDEと呼ばれていた)を使用することは考えられませんでした。
- ドライブはギガバイトあたりの費用が高く、容量を維持しながらコスト削減がほぼすべてのビジネスの主要課題でした。
- ファイルシステムは脆弱でドライブよりも頻繁に障害が発生しました。
- ハードウェアRAIDが必要であり、一般的に利用可能なのはRAID 1とRAID 5の基本的なRAIDレベルのみでした。RAID 6とRAID 10は、ほとんどのビジネスが利用できるようになるまでまだ何年も先の話でした。RAID 0は冗長性がないため除外します。
- ストレージシステムがサーバー間で共有されることはほとんどなく、アクセスはほぼ常に単一のリクエストキューに専用でした。
- ストレージキャッシュは小さいか存在しませんでした。そのためドライブアクセスの制限がオペレーティングシステムに直接伝わっていました。これは異なる読み取り/書き込みやランダム/シーケンシャルアクセスの混在を処理するために異なる特性を持つ異なるアレイを持つことを意味しました。
- ドライブ障害は一般的であり、ストレージシステム設計の主要な懸念事項でした。
- しばしばドライブアレイのサイズは物理的な制限によって制限されていたため、アレイ分割の決定は選択ではなく必要性から行われることが多かったです。
- 上記の要因の組み合わせにより、RAID 1はサイズが小さくても許容でき、アクセスが高度にシーケンシャルまたは書き込み重視のシステムの一部に最適であり、RAID 5は容量が信頼性を上回り、アクセスが高度にランダムで読み取り重視の他の部分に最適でした。
元の推奨事項がリリースされてからほぼ20年間で、これらの要因はすべて変化しました。場合によっては変化が連鎖的に起きており、一般的なRAID 5から一般的なRAID 10への移行が、かつて2つの一般的なアレイタイプであったRAID 1とRAID 10のアクセス特性を共有させるようになったため、負荷タイプに応じてどちらかを使用したいという必要性や欲求がなくなりました。
- ドライブは現在非常に大容量です。必要なものを詰め込もうとして苦労するのではなく、一般的に余剰容量があります。サーバーでもテラバイトを超えるシングルドライブが一般的です。パリティの障害ドメインは(URE障害率などと比較して)非常に大きくなっています。
- ドライブ接続はシリアルで高速です。ドライブ接続はもはやボトルネックではありません。
- SATAが現在サーバーで一般的であり、以前は存在しなかった方法でURDのリスクを歪めています。
- 容量は今や安価ですが、パフォーマンスと信頼性が支出に対する主要な懸念事項になっています。
- ファイルシステムは今日では非常に堅牢であり、ファイルシステムの障害はアレイの信頼性の大きな観点から見れば「バックグラウンドノイズ」です。
- ハードウェアRAIDとソフトウェアRAIDの両方が今日では選択肢として利用可能であり、使用可能なRAIDレベルには多くのオプションがありますが、最も重要なのはRAID 10があらゆる場所で利用可能になったことです。
- ストレージシステムは一般的に共有されており、シーケンシャルアクセスはさらに一般的でなくなっています。
- ストレージキャッシュは一般的であり、しばしば非常に大容量です。512MBと1GBのキャッシュは今日では通常と見なされており、1995年の多くのアレイ全体がRAIDコントローラーのメモリに収まるほどです。ストレージ容量と比較して急速に成長しているキャッシュと、過去2年間でストレージのL2キャッシュとしてソリッドステートドライブが最近追加されたことで、小規模なビジネスでもデータベースやその他のパフォーマンス重視のアプリケーションが完全にキャッシュから実行されることが珍しくなくなっています。
- ドライブ障害はまれであり、(他の障害タイプと比較して)ストレージシステム設計の取るに足らない懸念事項です。
- ドライブアレイのサイズが物理的な制限によって制限されることはほとんどありません。
- 今日の主要なアレイタイプとしてRAID 1とRAID 10を使用することは、パフォーマンスチューニングのために異なるアレイレベルを使用することに利点がないことを意味します。
これらの要因は、1995年の分割アレイシステムがその時代に完全に理にかなっていた理由と、今日それが理にかなわない理由を明らかにしています。今日の標準であるOBR10は当時は利用できず、コスト的にも高すぎました。RAID 5は1995年には比較的安全でしたが、今日はそうではありません。決定プロセスに関わるほぼすべての要因が過去17年間で劇的に変化しており、SSDがより一般的になり、自動ティアリング、さらに大きなキャッシュ、純粋なSSDストレージシステムが登場するにつれて変化し続けるでしょう。
過去20年間のストレージ設計の変化は、エンジニアリングで一般的なように、その決定を導く基本的な原則を必ずしも理解せずに基本的な「経験則」や「ベストプラクティス」を学ぶ大部分の人々がいるITが直面する危険性も浮き彫りにしています。これにより、それらのベストプラクティスをいつ適用しないかを知ることが難しくなり、さらに重要なことに、そのルールがもはや適用されないことを認識することが難しくなります。一つのキャリアを通じて新しい進歩や重要な要因の変化が一度、または全く起こらないかもしれない伝統的な機械工学や土木工学とは異なり、ITはキャリアを通じて経験則の基本的な「再考」が数回必要になるほど急速に変化し続けています。毎年必要というわけではありませんが、10年に1度以上は必ずと言ってよいほど必要です。
ユニプロセッシングからマルチスレッドアーキテクチャへの現在の移行も同様の重要な変化であり、ITがシステム設計の扱い方を完全に変える必要があります。
