Windows ワークステーションで作業している Java 開発者としての私の観察では、NTFS は Linux ファイルシステムに比べて遅いです。質問ですが、NTFS ドライバーには手動で調整できるものはありますか? たとえば、キャッシュ用のメモリを増やすとか、実験的なアルゴリズムを有効にするとか。それが利用できない場合は、Windows で使用できる、おそらく商用の、NTFS よりも高速な別のファイルシステムがあるでしょうか?
誤解のないように言っておきますが、私はMavenプロジェクトのコンパイル速度を改善しようとしているのではなく、OS全体の改善を望んでいます。NTFSはLinuxファイルシステムに比べて時代遅れで遅いと感じています。地球上で最も人気のあるOSに、手動によるデフラグが必要なファイルシステムが1つしかないのは奇妙に思えます。は代替案は?
アップデート:私の観察によると、遅いのは次の点です。プロジェクトをビルド/パッケージ化しているため、ディスク上での読み取り/書き込み操作が多数発生します。ビルド システムはクロスプラットフォーム (Java、Maven) なので、たとえば Ubuntu を起動したときにまったく同じアクションを実行できます。
Linux では、ビルドが少なくとも 1/3 速くなります。そのため、ファイルシステムについて質問します。不適切な質問であれば申し訳ありません。
答え1
ZFS のようなものが Windows ホストで利用できるようになると嬉しいですが、NTFS はひどいファイルシステムではありません。NTFS は、ほとんどの「最新」のファイルシステム機能 (拡張属性、ジャーナリング、ACL など) をサポートしていますが、エクスプローラーや他のほとんどのアプリがこれらのいずれもサポートしていないため、制限があります。
パフォーマンスを絶対に低下させる原因の 1 つは、ディレクトリ内のエントリが「多すぎる」ことです。1 つのディレクトリに数千のエントリがあると、すべてが極端に遅くなります。このような状況が発生すると、文字通りマシン全体が停止し、NTFS がエントリを作成または削除するのを待ちます。
私は以前、.NET アセンブリの HTML ベースのドキュメントを生成するアプリを使用していました。このアプリは、プロパティ、メソッド、クラス、名前空間などごとに 1 つのファイルを作成します。大規模なアセンブリの場合は、20,000 を超えるファイルがすべて 1 つのディレクトリに適切にダンプされます。ビルド中、マシンは NTFS でブロックされ、数時間かかります。
理論上、Windows はファイルシステム プラグインをサポートしており、ネイティブの ZFS、ext3、その他 (FUSE も) が可能になります。実際には、API は文書化されていないため、完全に独自に作業する必要があります。
さて、Java 開発を行っているので、マシンに別の OS をインストールしたり、Windows 上で VM を使用したりすることはできますか?
また、プラットフォームに依存しないファイルシステム ベンチマーク (iozone、bonnie... 他にも、私がすぐには思いつかないような最新のベンチマークや、Java で書かれたベンチマークもいくつかあるかもしれません) を試して、実際にファイルシステムが足かせになっているのか、それとも他の何かが原因なのかを確認することもできます。時期尚早な最適化など...
答え2
- 最終アクセス時間をオフにする
- 短いファイル名をオフにする
- 削除通知をオフにする
- インデックス作成をオフにする
- ジャーナリングを無効にする
- シャドウ コピーと以前のバージョン、クォータ、共有を無効にします。
- バイパストラバースチェックを有効にする
本当の解決策は、移植性フレームワークの下にある UNIX API (fopen など) 自体ではなく、ネイティブの Windows ファイル システム API を使用するようにビルド システムを書き直すことだと思います。しかし、それは実現しないので、基本的には、許容できると思われたパフォーマンス レベルにとどまることになります。
もともと Windows 用に作成されていないシステムを使用する場合、ディレクトリ トラバーサルの処理が非常に不十分であることがよくあります。そのため、非常にフラットなディレクトリ ツリーがあることを確認してください。
答え3
新しい Windows OS でサポートされ、NTFS よりも高速なファイル システムが 1 つあります。それは exFAT です。これをシステム ドライブに使用することは可能ですが、どのような問題が発生するかは不明です。
もちろん、他のパーティションにも使用できます。ランダム読み取り/書き込み操作の方が高速です。たとえば、SSD に最適です。
答え4
歴史的メモ:ウィンFSNTFS の上にさらに構造化されたレイヤーを追加し、Windows がファイルの内容をより効率的に処理できるようにしました。
NTFSの「本当の」後継は参照FS。その焦点は回復力です。Windows 10 EnterpriseおよびWindows Pro for Workstationsでのみ利用可能です。NTFS と ReFS – どちらを使用するか決める方法。