6

ファイル名の長さは、ディスクの残りのストレージスペースにどのように影響しますか?

これはファイルシステムに依存していることに気づきました。特に、EXTシリーズのファイルシステムについて考えています。iノードがディスクスペースにどのように影響し、ファイル名自体がどのように保存されるかを完全には理解していません。この質問に関連する検索結果を取得することも困難です。だから私はここで尋ねています。Linuxでは、ファイル名の最大長は通常255文字または256文字です。ファイルシステムが作成されるとき、その量のスペースはすべてのファイル名に対して「予約」されていますか?つまり、最大値がすでに使用されているため、ディスクストレージは実際のファイル名の影響を受けませんか?それともそれよりも複雑ですか?

「joe.txt」という名前のファイルがあり、その名前を「joe2.txt」に変更するとします。この後、使用可能なディスク容量は減少しましたか?「joe_version.txt」や「joe_original_version_with_bug_that_Jim_solved.txt」のような長い名前はどうですか?8、16、32、64などの文字のしきい値が心配です。何百万もの画像を保存します。私はこれまでそのような問題について心配することを気にしたことがないので、これがどのように機能するのか完全にはわかりません。

私が使用しているファイルシステムはEXTだけですが、FATなどについて話し合うことは、同様の質問をしている他の人にとって役立つかもしれません。

4

2 に答える 2

4

Linux(またはより一般的にはUnixタイプのファイルシステム)では、ファイル名はディレクトリエントリinodeに格納され、ディレクトリ内の各ファイルの(ファイル名、inode番号)マッピングのリストが含まれます。私の理解では、ファイル名ごとにNAME_MAX文字用の予約スペースがあります。実際、LinuxではNAME_MAXは255です。

したがって、質問に答えるために、ファイルシステムが作成されるとき、ファイル名用に予約されたスペースはありませんが、ファイルを作成すると、NAME_MAXバイトが名前用に予約されます。さらに、ディレクトリiノードの場合、少なくともext2 / 3/4のスペースは、必要に応じてディスクブロック(非常に奇妙なことをしている場合を除き、4 KB)の粒度で割り当てられると理解しています。つまり、ディレクトリは少なくとも4 KB(および親ディレクトリのiノードのエントリ)を占有し、(ファイル名、iノード)ペアのリストがその4 KB(ディレクトリ権限などの他のオーバーヘッドを差し引いたもの)に収まらない場合は、リストを継続するために新しい4KBブロックを割り当てます(ext2 / 3は間接ブロックスキームを使用しますが、ext4はエクステントを使用します)。

于 2010-10-21T13:39:00.307 に答える
1

FAT16は事前に割り当てます。

FAT32は、回避策を使用して長いファイル名を提供します。ファイル名が長くなると、余分な文字を格納するために追加のディレクトリファイルブロックが必要になります。ディレクトリファイルは通常のファイルであるため、追加のディスク領域を消費します。ただし、最小の割り当ては1つのクラスターであるため、追加のファイル名ストアがクラスターの境界を超えない限り、他の方法で使用できたものから追加のディスク領域が消費されることはありません。

私は、UNIXタイプのファイルシステムでファイル名がどのように処理されるかをよく知っていません。

于 2010-10-21T13:06:55.737 に答える