GFS 共用ファイルシステムでは、ファイルシステムの厳密な一貫性を維持するため、以下のような操作を行うと、ファイルシステム処理が顕著に遅くなることがあります。
ファイルアクセス
1つのファイルに連続して I/O を行う際に、オープンからクローズまでの間に I/O をまとめて行わず、I/O 要求ごとにオープンとクローズを繰り返す場合
ファイルの連続した領域への書き込みを行う際に、大きなサイズ (1メガバイト以上) でまとめて書き込みを行わず、小さなサイズ (1メガバイト未満) に分割して複数回の書き込みを行う場合 (ファイルデータの断片化が発生する)
オープンしているファイルを、一度に 1000個以上削除する場合
1ギガバイト を超えるサイズのファイルを cp(1) を使用してコピーする場合
これらの場合には、対象ファイルのオープン・クローズ頻度やタイミング変更したり、I/O サイズの見直しを行うことで、ファイルシステム処理性能を改善できることがあります。
例えば、ファイルをコピーする場合、dd(1) を使用して、大きな I/O サイズ (1メガバイト以上) を指定すると、cp(1) を使用したときよりもコピーにかかる時間を短縮することができます。
ノード間競合とディレクトリアクセス
頻繁に更新が発生するファイルを、更新したノード以外から頻繁に参照する場合
同一ファイルの同一ブロックを、複数ノードから頻繁に更新する場合
複数ノードから、同一ディレクトリに対してファイルやディレクトリの作成/削除が頻繁に発生し、かつ、ディレクトリの更新を readdir(3C), stat(2) などにより繰り返し監視している場合
1つのディレクトリに 1万個以上のファイルが存在する状態で、ls(1) の -l オプション指定、cp(1), du(1M), tar(1) などの、ディレクトリ配下のファイルの属性を必要とするコマンドを実行した場合
これらの場合には、監視やアクセスの頻度を変更したり、対象ファイルやディレクトリを分けたりすることでファイルシステム処理性能を改善できることがあります。
また、ファイルシステムメタデータを管理する MDS が動作するノードに CPU, I/O 負荷が集中することがあります。ファイルの作成/削除/ファイルの拡張など、ファイルシステムメタデータの更新を伴う操作が頻繁に発生する場合です。このような場合には、ファイルシステムのメタデータ領域、アップデートログ領域そしてファイルデータ領域のディスク配置を最適化することで、ファイルシステム処理性能を改善できることがあります。また MDS が動作するノードの CPU 処理能力を大きくすることで、ファイルシステム処理性能を改善できることがあります。