Filesystems

如何更改 ext4 文件系統中的擴展區大小?

  • February 26, 2018

正如您在此處所讀到的,ext4 文件系統具有將塊分組為擴展的擴展功能。它們每個都可以有多達 128MiB 的連續空間。在e4defrag中,有類似於以下的行:

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

文件大小約為 150MiB。所以根據wiki頁面,應該有2個extent而不是10個。

  1. 有誰知道為什麼範圍是 15MiB 而不是 128MiB?
  2. 是否有可以檢查確切範圍大小的工具?
  3. 如何更改大小以使其為 128MiB?

我想我知道它是如何工作的。

我將另一個磁碟連接到我的機器,因為它有一個幾乎空的大分區 ~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%

它只是一個連續的空閒塊。所以因為分區幾乎是空的,所以有很多可用空間,你有 228 個 1-2G 的塊。

我在分區裡面放了一個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 個擴展區,因為仍有 16 個塊至少為 32M。

引用自:https://unix.stackexchange.com/questions/214872