web-dev-qa-db-ja.com

ファイルシステムのブロックサイズの仕組み

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

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

明確化をお願いします。前もって感謝します

7

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

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

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

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

0