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

StackOverflow https://stackoverflow.com/questions/3775080

質問

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

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

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

Extは私が使用している唯一のファイルシステムですが、脂肪などについて議論することは、同様の質問を持っている他の誰かにとって有用かもしれません。

役に立ちましたか?

解決

Linux(より一般的には、UNIXタイプファイルシステム)ファイル名は、ディレクトリ内の各ファイルの(ファイル名、イノード番号)マッピングのリストが含まれるディレクトリエントリイノードに保存されます。私の理解では、各ファイル名にname_max文字のための予約スペースがあることです。そして実際、Linux name_maxでは255です。

したがって、質問に答えるために、ファイルシステムが作成されたときにファイル名用のスペースはありませんが、ファイルname_maxバイトを作成すると、名前のために予約されます。さらに、ディレクトリのイノードの場合、私の理解では、少なくともext2/3/4のスペースは、必要に応じてディスクブロック(非常に奇妙なことをしていない限り、4 kb)に割り当てられています。つまり、ディレクトリは最低4 kb(Prans Directory Inodeのエントリ)で取り上げられ、(Filename、Inode)ペアのリストがその4 KB(他のオーバーヘッドを差し引いて、たとえばディレクトリアクセス許可)に収まらない場合、IT新しい4 KBブロックを割り当ててリストを継続するなど(Ext2/3は間接ブロックスキームを使用しますが、Ext4はExtentsを使用します)。

他のヒント

FAT16プリアロケート。

FAT32はワークアラウンドを使用して長いファイル名を提供します。ファイル名がより長くなると、追加のディレクトリファイルブロックが追加の文字を保存する必要があります。ディレクトリファイルは通常のファイルであるため、追加のディスクスペースが消費されます。ただし、最小の割り当ては1つのクラスターです。したがって、追加のファイル名ストアがクラスター境界を超えない限り、他の方法で使用できたものから追加のディスクスペースは消費されません。

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top