クラスタファイルシステム( CFS ) は、複数のサーバーに同時にマウントすることで共有されるファイルシステムです。クラスタリングにはいくつかの方法がありますが、そのほとんどはクラスタファイルシステムを使用しません (各ノードに直接接続されたストレージのみ)。クラスタファイルシステムは、場所に依存しないアドレス指定や冗長性などの機能を提供し、信頼性を向上させたり、クラスタの他の部分の複雑さを軽減したりできます。 並列ファイルシステムは、通常、冗長性やパフォーマンスのために、データを複数のストレージノードに分散するクラスタファイルシステムの一種です。[ 1 ]
共有ディスクファイルシステムは、ストレージエリアネットワーク(SAN)を使用して、複数のコンピュータがブロックレベルでディスクに直接アクセスできるようにします。アクセス制御と、アプリケーションが使用するファイルレベルの操作からSANが使用するブロックレベルの操作への変換は、クライアントノードで行われる必要があります。最も一般的なクラスタファイルシステムである共有ディスクファイルシステムは、同時実行制御のメカニズムを追加することで、ファイルシステムの一貫性のあるシリアル化可能なビューを提供し、複数のクライアントが同時に同じファイルにアクセスしようとした場合でも、破損や意図しないデータ損失を防ぎます。共有ディスクファイルシステムでは、ノード障害が発生した場合のデータ破損を防ぐために、通常何らかのフェンシングメカニズムが採用されています。これは、フェンシングされていないデバイスが姉妹ノードとの通信を失い、他のノードがアクセスしている情報にアクセスしようとすると、データ破損を引き起こす可能性があるためです。
基盤となるストレージエリアネットワークは、 SCSI、iSCSI、HyperSCSI、ATA over Ethernet (AoE)、ファイバーチャネル、ネットワークブロックデバイス、InfiniBandなど、多数のブロックレベルプロトコルのいずれかを使用する場合があります。
共有ディスクファイルシステムにはさまざまなアーキテクチャのアプローチがあります。クラスタ内のすべてのサーバーにファイル情報を分散させるもの(完全分散型)もあります。[ 2 ]
分散ファイルシステムは、同じストレージへのブロックレベルのアクセスを共有せず、ネットワークプロトコルを使用します。[ 3 ] [ 4 ] これらは、ネットワークを使用してデータを送信するファイルシステムはこれだけではありませんが、一般的にネットワークファイルシステムとして知られています。[ 5 ]分散ファイルシステムは、プロトコルの設計方法に応じて、サーバーとクライアントの両方のアクセス リストまたは機能 に基づいて、ファイルシステムへのアクセスを制限できます。
分散ファイルシステムと分散データストアの違いは、分散ファイルシステムでは、ローカルファイルと同じインターフェースとセマンティクスを使用してファイルにアクセスできることです。たとえば、マウント/アンマウント、ディレクトリの一覧表示、バイト境界での読み書き、システムのネイティブなパーミッションモデルなどです。一方、分散データストアでは、異なるAPIまたはライブラリを使用する必要があり、セマンティクスも異なります(多くの場合、データベースのセマンティクスです)。[ 6 ]
分散ファイルシステムは、様々な面で「透過性」を目指しています。つまり、クライアントプログラムからは「見えない」存在となり、ローカルファイルシステムに似たシステムとして認識されることを目指しています。分散ファイルシステムは、内部でファイルの検索、データの転送、そして場合によっては以下に挙げるその他の機能を提供します。
1960年代には、 Incompatible Timesharing Systemが仮想デバイスを使用してマシン間のファイルシステムへのアクセスを透過的に実現しました。1970年代には、さらに多くのファイルサーバーが開発されました。1976年、Digital Equipment Corporationは、 DECnet Phase IIの一部としてデータアクセスプロトコルを実装したFile Access Listener(FAL)を作成し、これが広く普及した最初のネットワークファイルシステムとなりました。1984年、Sun Microsystemsは「 Network File System 」(NFS)と呼ばれるファイルシステムを作成し、これが広く普及した最初のインターネットプロトコルベースのネットワークファイルシステムとなりました。[ 4 ] その他の注目すべきネットワークファイルシステムには、 Andrew File System(AFS)、Apple Filing Protocol(AFP)、NetWare Core Protocol(NCP)、およびCommon Internet File System(CIFS)としても知られるServer Message Block (SMB)があります。
1986年、IBMはSystem/36、System/38、およびCICSを実行するIBMメインフレームコンピュータ向けに、分散データ管理アーキテクチャ(DDM)のクライアントおよびサーバーサポートを発表しました。その後、IBMパーソナルコンピュータ、AS/400 、 MVSおよびVSEオペレーティングシステムを搭載したIBMメインフレームコンピュータ、そしてFlexOSのサポートへと続きました。DDMは、 DRDAとしても知られる分散リレーショナルデータベースアーキテクチャの基盤ともなりました。
クラウド向け のオープンソース分散ファイルシステムやクローズドソースクラスタファイルシステムには、9P 、 AFS 、 Coda 、 CIFS /SMB、DCE/DFS、WekaFS、[ 7 ] Lustre、PanFS、[ 8 ] Google File System、Mnet、Chord Projectなど、多くのピアツーピアネットワークプロトコルがあります。
ネットワーク接続ストレージ(NAS)は、ストレージエリアネットワーク(SAN)上に構築された共有ディスクファイルシステムのように、ストレージとファイルシステムの両方を提供します。NASは通常、ファイルベースのプロトコル(SANが使用するブロックベースのプロトコルとは対照的)を使用します。例えば、NFS(UNIXシステムで広く使用されている)、SMB/CIFS(Server Message Block/Common Internet File System)(MS Windowsシステムで使用されている)、AFP(Apple Macintoshコンピュータで使用されている)、NCP ( OESおよびNovell NetWareで使用されている)などです。
ディスクハードウェアまたはクラスタ内の特定のストレージノードの障害は、単一障害点となり、データ損失やデータ利用不能を引き起こす可能性があります。耐障害性と高可用性は、何らかのデータ複製によって実現でき、機器の障害に関わらずデータは保持され、利用可能になります。例として、分散耐障害性ファイルシステムおよび分散並列耐障害性ファイルシステムのリストを参照してください。
クラスタファイルシステムの一般的なパフォーマンス測定指標は、サービス要求を満たすのに必要な時間です。従来のシステムでは、この時間はディスクアクセス時間と少量のCPU処理時間で構成されます。しかし、クラスタファイルシステムでは、分散構造のため、リモートアクセスには追加のオーバーヘッドが発生します。これには、要求をサーバーに送信する時間、応答をクライアントに送信する時間、そして双方向それぞれにおいて通信プロトコルソフトウェアを実行するためのCPUオーバーヘッドが含まれます。
同時実行制御は、複数のユーザーまたはクライアントが同じファイルまたはブロックにアクセスして更新しようとする場合に問題となります。したがって、あるクライアントからのファイルへの更新は、他のクライアントからのアクセスや更新を妨げてはなりません。この問題は、同時書き込みの重複によりファイルシステムではより複雑になります。これは、異なる書き込み者がファイルの重複領域に同時に書き込むためです。[ 9 ]この問題は通常、ファイルシステムに組み込まれているか、アドオンプロトコルによって提供される同時実行制御またはロックによって処理されます。
1970年代のIBMメインフレームは、各マシンがドライブの制御ユニットへの独自のチャネル接続を持っていれば、物理ディスクとファイルシステムを共有することができた。1980年代には、Digital Equipment CorporationのTOPS-20およびOpenVMSクラスタ(VAX/ALPHA/IA64)に共有ディスクファイルシステムが含まれていた。[ 10 ]
は、非均質なマシンのネットワークにおけるファイルシステム リソースの共有を簡素化するために設計されました。
最終的に、VMS と TOPS-20 の両方がこの種の機能を搭載しました。