私は何年か前に、ファイル・システムの開発に使用されます。
0の範囲でオフセット任意のファイル(80 KB - 1).. ...
をリンクに設けられた材料を使用して包括的には、iノードに格納された直接ブロックを使用してアクセスすることができます。これは、8個のkBブロックが10個存在することから導かれる。
ディスクブロックが8キロバイト(8192バイト)であり、ディスクアドレスは32ビット(4バイト)であるので、各ディスクブロック2048(8192/4)ディスクアドレスエントリまで保持することができます。これは、1つの間接ブロックが最大2048 * 8 kBバイトのファイルデータ(16 MB)を参照できることを意味します。これを拡張すると、間接的な二重ブロックは2048 * 2048 * 8kBのファイルデータ(32GB)を参照できることがわかります。
直接ブロックを使用して最大80KBのファイルデータにアクセスできます。これはファイルオフセット0〜(80 kB - 1)に変換されます。
inodeに格納されている単一の間接ブロックを使用して、最大16 MBのファイルデータにアクセスできます。これは、80 kBから(16 MB + 80 kB - 1)までのファイルオフセットに変換されます。
iノードに格納されている間接的な二重ブロックを使用して、最大32 GBのファイルデータにアクセスできます。これはファイル・オフセット(16 MB + 80 kB)から(32 GB + 16 MB + 80 kB - 1)までの変換になります。
inodeに格納されているトリプル間接ブロックを使用して、最大64 TBのファイルデータにアクセスできます。これはファイルのオフセット(32GB + 16MB + 80KB)から(64TB + 32GB + 16MB + 80KB-1)に変換されます。
したがって、ファイルの理論上の最大サイズは64 TB + 32 GB + 16 MB + 80 KBです。
実際の最大サイズは別の問題です。以下のいずれか1つまたは組み合わせで制限できます。
- ディスクのサイズ。
- パーティションのサイズ。
- 固有のファイルシステムメタデータの制限。いくつかのファイルシステムは、Xが理論上の最大ファイルサイズよりも小さいにもかかわらず、サイズXを超えて処理するようには設計されていません。
- 項目3に関連して、独自の価値があるのは、ファイルのサイズを格納するためにiノードに予約されているビット数です。メモリが機能する場合、元のExt2はファイルサイズを32ビットに制限しました。これにより、ファイルサイズの上限(2 GB - 1)が作成されました。
ファイルシステムがスパースファイルをサポートしている場合(実際に間接ブロックを使用しているためリンクに記載されているものがそうである)、実用的な制限があります。スパースファイルを使用すると、2 TBの実際のディスク容量を使用せずに、1 TBディスクに2 TBファイルをフィッティングすることができます。ちなみに、これはinodeがしばしばファイルによって実際に使用されるブロックの数に関する情報を含む理由の1つです。
希望に役立ちます。
[特定のinode構造を指定した場合の最大ファイルサイズ?](http://stackoverflow.com/questions/2742163/maximum-file-size-given-a-particular-inode-structure) inode最大ファイルサイズのブロックサイズ ") –