昨年発表されたLinux 5.2パッチノートを読んでパッチノートが始まったことがわかりました。ext4ファイルシステムで大文字と小文字を区別しない名前のオプションのサポート。
だから...カーネルに大文字と小文字を区別しないオプション(大文字と小文字の区別と正規化の両方)が必要な理由が気になります。私が見つけることができますその他の記事ケース折りたたみファイルシステムをサポートするカーネルコードを書いたKrismanによって書かれていますが、case-insensitive file system allows us to resolve important bottlenecks for applications being ported from other operating systems
正規化とケース折りたたみプロセスによってディスクストレージを最適化する方法を理解することができないことは気になりませんでした。
あなたの助けに感謝します!
答え1
大文字と小文字を区別しないファイルシステムを使用すると、他のオペレーティングシステムでアプリケーションを移植するときに発生する重大なボトルネックを解決できます。
正規化とケース折りたたみプロセスによってディスクストレージを最適化する方法を理解できるという事実は気に入らない。
ワイン、サンバ、アンドロイド持つ大文字と小文字を区別しないファイルシステムセマンティクスを提供します。デフォルトのファイルシステムが大文字と小文字を区別すると、すべての大文字と小文字の区別の検索が失敗します。 Wine et al。各ディレクトリをスキャンして大文字と小文字を区別しない一致がないことを証明する必要があります。たとえば、検索が失敗した場合は、すべてのファイルとすべてのディレクトリに対して完全なディレクトリ/foo/bar/readme.txt
リストと大文字と小文字を比較する必要があります。foo/bar/*
foo/*
/*
これにはいくつかの問題があります。
- 深くネストされたパスは非常に遅くなる可能性があります。何百ものFS呼び出し)または数万のファイルを含むディレクトリ(例:SMBストレージによる増分バックアップ)。
- これらの検査では競合状態が発生します。
- 基本的に健全ではありません。と両方が
readme.txt
存在しますREADME.txt
が、アプリケーションがそれを必要とする場合、README.TXT
どのファイルが返されるかは定義されません。
AndroidはFUSE / wrapfsを使用して大文字と小文字を区別し、カーネルを使用します。SDカードFS。しかし、SDCardFSは単にプロセスをカーネル空間に移動することで、すべてをより速くします†。それでもファイルシステムを通過する必要があり(したがってIOバインドされている)、競合状態が発生し、基本的に健全ではありません。したがって、Google が大文字と小文字を区別せず、廃止された F2FS の基本ディレクトリ別 F2FS 開発に資金を提供した理由SDカードFS。
過去には、VFSを介して大文字と小文字を区別しないクエリを有効にしようとしたことが何度もありました。 2018年の最近の試みでは、インストールが許可されました。ファイルシステムの大文字と小文字を区別しないビュー。 Ted Tsoは、この機能を追加するときに少なくとも高速で競合状態がないため、Wrapfs関連の問題に具体的に言及しました。しかし、それでも音は出ません(要求はORをREADME.TXT
返すことがあります)。これは大文字と小文字を区別しないディレクトリ固有のサポートを追加することを拒否され、VFS††に統合される可能性はほとんどありません。readme.txt
README.txt
また、ユーザーは大文字と小文字を区別しないことを期待しているため、すべての消費者向けオペレーティングシステムはこれを提供する必要があります。 Unicodeが存在せず、文字列は単なるバイトパケットであるため、Unix自体はそれをサポートできません。ケースの折りたたみがどのように処理されるかについて、多くの有効な批判があります。過去にしかし、Unicodeは不変 ケース折りたたみ機能これは、以下を除くすべての人に適用されます。単一ロケール(トルコ語はそれにもかかわらず、2つのコードポイントにすぎません)。しかもファイルシステムBツリーこの行為を犯す唯一の合理的な場所です。
†アジア情報通信技術協会
私は、VFSベースの大文字と小文字を区別しない照会と、EXT4とF2FSのディレクトリ固有の大文字と小文字を区別するサポートの作成者であるKrismanに電子メールを送信しました。
答え2
他のオペレーティングシステムには大文字と小文字を区別しないファイルシステムがあります。
例:MacOSでは大文字と小文字を区別しない(デフォルト)または大文字と小文字を区別します。 Adobe PhotoshopとAdobe Lightroomは、大文字と小文字を区別するファイルシステムをうまく処理しません。これは、Adobeプログラムで異なるように書かれたハードコーディングされたパス(おそらく他のライブラリの「文書」と「文書」)がある場合があります。あることを意味します。データ)ちょうど働くので、誰も気にしません。
したがって、今回の一部の一般的な独自のオペレーティングシステム用に作成されたプログラムを移植するには、ファイル名の大文字と小文字の区別が常に一貫して使用されるようにすべてのパスを変更する必要があります。それ以外の場合は、これらのケースを処理するファイルシステムを持つことをお勧めします。
AdobeはMacOSでこれを行うことができないため、他のベンダーにとっては作業が難しくコストがかかります。バラよりhttps://helpx.adobe.com/creative-suite/kb/error-case-sensitive-drives-supported.html
答え3
大文字と小文字を区別するFSを使用する唯一の理由はわかりません。それがする唯一のことは、ユーザーを完全に混乱させることです。マイクロソフトの開発者は最初からそれを理解し、壊れた概念に気にしませんでした。 30年が過ぎた今、一部のLinux開発者は大文字と小文字を区別しない方が安全で論理的であることに気づき、ついにそれを実装しました。
最初のUnixファイルシステムはなぜ大文字と小文字を区別しましたか?これは、CPU が使いやすくなるためです。ただし、大文字と小文字は異なりますが、類似した名前のファイルがすでに存在することを確認するためにCPUサイクルを消費する追加機能は必要ありません(大文字と小文字を区別しないのはラテン語/英語以外のアルファベットがあります)。最近では、最新の超高速CPUを使用すると、もはや大きな問題にはなりません。