ファイルシステムのブロックサイズはどのように機能しますか?


11

すべてのLinuxファイルシステムのブロックサイズは4kbです。10MBのハードディスクストレージがあるとします。つまり、利用可能な2560ブロックがあり、それぞれが1kbのサイズの2560ファイルをコピーしたとしましょう。1 kbの各ブロックは、ブロック全体を占めていませんが、1ブロックを占有します。

これでディスク全体がいっぱいになりましたが、それでも2560x3kbの空き容量があります。たとえば1MBの別のファイルを保存する場合、ファイルシステムで保存できますか?個々のブロックに残っている空き領域に書き込みますか?この問題に対処する概念はありますか?

いくつかの説明をお願いします。前もって感謝します


OK、2560ファイル、それぞれ1kb、つまり2560 * 0.001 mb = 2.56 mb。1000 * 4 = 4000なので、各1kbファイルはブロックの約1/4を占める必要があります。また、ブロックサイズは4096なので、ブロックを埋めるには4つのファイルが必要です。1 mbファイルの場合、1000000/4096 = 244ブロックのコストがかかります。
Sergiy Kolodyazhnyy 2015年

回答:


3

最初のLinux以来、デフォルトのブロックサイズは512バイトでした。最近まで、増加し続けるディスクサイズに対応するために導入された4kブロックサイズを除きます。これは実際にはディスクハードウェアによってほぼ決定されます(詳細は/unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hddを参照してください)。

しかし、特定の質問については、すべてのファイルが多くのタイプのファイルシステムで最後のブロックの未使用バイトを浪費することは正しいです。これは、小さなファイルの場合は特に無駄です。しかし、btfrsとreiserfsは、https: //en.m.wikipedia.org/wiki/Block_suballocationに従って、対応できるようです


1
  1. ファイルシステムのブロックサイズは512から(通常は)65536バイトです。ブロックサイズは、mkfs.xxxオプションとして指定できます。ほとんどのLinuxファイルシステムのデフォルトのブロックサイズ-4096バイト。

  2. 一部のファイルシステムは、テールパッキングやサブブロックの割り当てをサポートしています。ext2 / 3/4-する、xfs-しない。パーティションをいくつかの小さなファイルで満たすことを計画している場合は、ブロックサイズを512または1024に縮小することで、無駄な「テール」スペースを減らすことができます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.