ext4ファイルシステムでエクステントサイズを変更するには?

ext4ファイルシステムでエクステントサイズを変更するには?

読みながらここext4 ファイルシステムには、ブロックを範囲にグループ化する範囲機能があります。それぞれ最大128MiBの連続空間を持つことができます。にはe4defrag次のような行があります。

[325842/327069]/file:  100%  extents: 100 -> 10   [ OK ]

ファイルサイズは約150MiBです。したがって、Wikiページによると、10ではなく2つの範囲が必要です。

  1. 範囲が128MiBではなく15MiBの理由を知っている人はいますか?
  2. 正確な範囲サイズを確認するためのツールはありますか?
  3. 128MiBになるようにサイズを変更するにはどうすればよいですか?

答え1

あなたの質問は間違った前提に基づいているようです。

基本的に...あなたの範囲はいサイズは128 MBですが、e4defragはファイルをインポートしてそのデータをコピーした後、コピーに10ではなく5つの範囲があることを発見し、これを「成功」と呼び、inodeをコピーしたデータを指して元のデータを解放します。これが発生すると、「10 -> 5」が印刷されます。

(今すぐデータをコピーすることも可能です。もっとこの場合、コピーを削除し、そのままにして「10 -> 10」を印刷します。 )

ディスクがいっぱいになると、e4defragがファイルサイズに基づいて計算された「最小」範囲の数でファイルを縮小する可能性が減少します。

ただし、e4defragがディスクの最適化を完全に実行することを期待しないでください。ファイルごとに1回(複数の範囲を持つファイルごとに、つまりすでに1つの範囲しかない場合(または可能な限り小さいと推測))、少し遅くします。スキップします)そして、この試みがある種の改善につながらない場合は、そのままにして改善があっても、可能な限り最小限の範囲の数は保証されません。特に、最後の実行以降に余分なスペースが確保されている場合、最初の実行後にe4defragを再実行すると少しの改善が得られますが、最初の実行後の後続の実行では収益の減少が急速に発生する可能性があります。

答え2

私はそれがどのように動作するかを知っていると思います。

〜458Gのパーティションがほとんど空だったので、別のディスクを自分のコンピュータに接続しました。以下で利用可能なスペースを確認しましたe2freefrag

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
   64M...  128M-  :             6        146233    0.12%
  128M...  256M-  :             5        322555    0.27%
  256M...  512M-  :             3        263897    0.22%
  512M... 1024M-  :             6       1159100    0.98%
    1G...    2G-  :           228     116312183   98.40%

それは連続した自由ブロックです。パーティションがほとんど空なので、空き容量が多く、1-2Gブロックが228個あります。

パーティションに大容量の2.5Gファイルを配置しましたが、上記の表でいくつかの変更が発生しました。

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    2M...    4M-  :             5          5114    0.00%
   64M...  128M-  :             7        170777    0.14%
  128M...  256M-  :             1         64511    0.05%
  256M...  512M-  :             4        361579    0.31%
  512M... 1024M-  :             5        930749    0.79%
    1G...    2G-  :           227     116025495   98.16%

これは、割り当てられたブロック範囲について何も知らないが、いくつかのアイデアを提供する。にあるファイルを見ると、e4defrag次のような内容があります。

# e4defrag -cv file
<File>
[ext 1]:        start 34816:    logical 0:      len 32768
[ext 2]:        start 67584:    logical 32768:  len 30720
[ext 3]:        start 100352:   logical 63488:  len 32768
[ext 4]:        start 133120:   logical 96256:  len 30720
[ext 5]:        start 165888:   logical 126976: len 32768
[ext 6]:        start 198656:   logical 159744: len 30720
[ext 7]:        start 231424:   logical 190464: len 32768
[ext 8]:        start 264192:   logical 223232: len 30720
[ext 9]:        start 296960:   logical 253952: len 32768
[ext 10]:       start 329728:   logical 286720: len 32768
[ext 11]:       start 362496:   logical 319488: len 32768
[ext 12]:       start 395264:   logical 352256: len 32768
[ext 13]:       start 428032:   logical 385024: len 32768
[ext 14]:       start 460800:   logical 417792: len 32768
[ext 15]:       start 493568:   logical 450560: len 30720
[ext 16]:       start 557056:   logical 481280: len 32768
[ext 17]:       start 589824:   logical 514048: len 32768
[ext 18]:       start 622592:   logical 546816: len 32768
[ext 19]:       start 655360:   logical 579584: len 32768
[ext 20]:       start 688128:   logical 612352: len 32768
[ext 21]:       start 720896:   logical 645120: len 622

この数字32768はブロック(4K)を表し、128MiBに等しくなります。そのうちのいくつかはブロック数が少なくなります。理由はわかりません。ファイルシステムが空であるため、すべてのエクステントには32768ブロックが必要です。

とにかく、メインパーティションの空き容量を確認しましたが、次のような内容がありました。

HISTOGRAM OF FREE EXTENT SIZES:
Extent Size Range :  Free extents   Free Blocks  Percent
    4K...    8K-  :          3955          3955    0.06%
    8K...   16K-  :          3495          8194    0.13%
   16K...   32K-  :          2601         13165    0.20%
   32K...   64K-  :          2622         28991    0.45%
   64K...  128K-  :          2565         58267    0.90%
  128K...  256K-  :          1576         71371    1.11%
  256K...  512K-  :          1331        118346    1.83%
  512K... 1024K-  :          1058        190532    2.95%
    1M...    2M-  :          1202        444210    6.89%
    2M...    4M-  :          1211        884489   13.71%
    4M...    8M-  :          1249       1803998   27.97%
    8M...   16M-  :           622       1643226   25.48%
   16M...   32M-  :           198       1024999   15.89%
   32M...   64M-  :            16        163082    2.53%

ご覧のとおり、128M(またはそれ以上)のスペースを提供できる無料の連続ブロックはありません。これがWikiに「最大」128Mの拡張を持つことができると書いた理由です。

関連ファイルになぜ10の範囲があるのか​​わかりません。少なくとも32Mのブロックがまだ16個あるからです。

関連情報