zfs destroyしても空き容量はすぐには増えない?

ここに16TiBのRAID-Z2プールがあるじゃろ。

$ zpool list
NAME    SIZE  ALLOC   FREE    CAP  DEDUP  HEALTH  ALTROOT
zdata  16.2T  5.63T  10.5T    34%  1.00x  ONLINE  -

$ zfs list
NAME              USED  AVAIL  REFER  MOUNTPOINT
zdata            5.63T  5.02T   304K  /mnt/zdata
zdata/ROOT       5.63T  2.37T   304K  /mnt/zdata/ROOT
zdata/ROOT/data  5.63T  2.37T  5.63T  /mnt/zdata/ROOT/data

それを消したんじゃ。

$ sudo zfs destroy -R zdata/ROOT

そして再度ファイルシステムを確認すると…

$ zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
zdata  5.61T  5.04T   288K  /mnt/zdata

なんと、空き容量が増えておらんのじゃ!

もう少し詳しく見てみる。

$ zpool iostat zdata 1
               capacity     operations    bandwidth
pool        alloc   free   read  write   read  write
----------  -----  -----  -----  -----  -----  -----
zdata       8.20T  8.05T    403    161  2.35M   659K
zdata       8.20T  8.05T    445      0  1.86M      0
zdata       8.20T  8.05T    359      0  1.64M      0
zdata       8.20T  8.05T    494      0  2.65M      0
zdata       8.20T  8.05T    446      0  1.75M      0
zdata       8.20T  8.05T    309      0  1.42M      0
zdata       8.19T  8.06T    416    266  2.17M  1.62M
zdata       8.19T  8.06T    415      0  1.88M      0
zdata       8.19T  8.06T    438      0  2.47M      0
zdata       8.19T  8.06T    328      0  1.49M      0
zdata       8.19T  8.06T    379      0  1.82M      0
zdata       8.19T  8.06T    494      0  2.65M      0
zdata       8.19T  8.06T    314    158  1.46M   647K
zdata       8.18T  8.07T    349      8  1.40M  36.0K
zdata       8.18T  8.07T    549      0  2.71M      0
zdata       8.18T  8.07T    444      0  1.85M      0
zdata       8.18T  8.07T    660      0  3.09M      0
zdata       8.18T  8.07T    408      0  1.72M      0
zdata       8.18T  8.07T    310      0  1.83M      0
zdata       8.16T  8.09T    303    161  1.28M   659K
zdata       8.16T  8.09T    469      0  2.61M      0
zdata       8.16T  8.09T    350      0  1.89M      0
zdata       8.16T  8.09T    269      0  1.86M      0
zdata       8.16T  8.09T    272      0  1.72M      0
zdata       8.16T  8.09T    264      0  1.76M      0
zdata       8.15T  8.10T    196    170  1.29M   695K
^C
$ zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
zdata  5.39T  5.27T   288K  /mnt/zdata

$ df -h
Filesystem                     Size    Used   Avail Capacity  Mounted on
zdata                          6.6T    287k    6.6T     0%    /mnt/zdata

なんか頑張って回収しとるのぉ…。この状態でファイルを作るとどうなるんじゃろ?iostatを見ながらddしてみる。

$ sudo zfs create zdata/ROOT
$ dd if=/dev/zero of=/mnt/zdata/ROOT/zero.tmp bs=8m
^C
601+0 records in
600+0 records out
5033164800 bytes transferred in 24.909500 secs (202058043 bytes/sec)

----------

$ zpool iostat zdata 1
zdata       3.92T  12.3T    231  1.43K  1.71M   141M
zdata       3.92T  12.3T    274      0  1.48M      0
zdata       3.90T  12.3T    102  1.36K   464K   141M
zdata       3.88T  12.4T    202    720   811K  59.7M
zdata       3.88T  12.4T    548    667  2.63M  81.2M
zdata       3.88T  12.4T    117  1.75K   472K   192M
zdata       3.88T  12.4T    212    208   872K   856K
zdata       3.88T  12.4T    197  2.36K  1.06M   293M
zdata       3.88T  12.4T    203    796   827K  68.5M
zdata       3.88T  12.4T    242  1.78K   979K   225M
zdata       3.88T  12.4T    159  1.39K   647K   146M
zdata       3.88T  12.4T    134  1.51K   539K   191M
zdata       3.87T  12.4T    120  1.33K   484K   143M
zdata       3.87T  12.4T    380  1.80K  2.12M   224M
zdata       3.87T  12.4T    504    953  1.97M  83.2M
zdata       3.87T  12.4T    350  2.42K  1.37M   304M
zdata       3.86T  12.4T    674    913  3.13M  80.2M
zdata       3.86T  12.4T    338  2.50K  1.33M   314M
zdata       3.86T  12.4T   1005    606  4.41M  47.1M
zdata       3.86T  12.4T    289  2.86K  1.13M   360M
zdata       3.86T  12.4T    704    184  2.75M   749K
zdata       3.86T  12.4T    103  3.36K   415K   418M
zdata       3.86T  12.4T    867    191  3.88M   779K
zdata       3.86T  12.4T     63  3.17K   255K   396M
zdata       3.86T  12.4T    954    149  4.22M   611K
zdata       3.86T  12.4T     38  3.46K   156K   432M
zdata       3.86T  12.4T    797     66  3.11M   276K
zdata       3.86T  12.4T      0  3.07K      0   375M
zdata       3.86T  12.4T    761    532  3.47M  62.6M
zdata       3.86T  12.4T    651    263  2.54M  7.09M ★ここでddを終了
zdata       3.86T  12.4T  1.02K    182  4.55M   743K 
zdata       3.86T  12.4T  1.01K      0  4.55M      0
zdata       3.86T  12.4T  1.24K      0  5.46M      0
zdata       3.86T  12.4T  1.09K      0  4.87M      0
zdata       3.86T  12.4T  1.37K      0  5.99M      0
zdata       3.86T  12.4T  1.45K      0  6.27M      0
zdata       3.86T  12.4T  1.04K    167  4.68M   683K
^C

当然じゃが普通に動くようじゃ。dd終了後は、また領域の回収?に戻っておるの。

暫く放置したら回収?作業が終わったようじゃ。

$ zfs list
NAME    USED  AVAIL  REFER  MOUNTPOINT
zdata  90.2M  10.7T   288K  /mnt/zdata

$ df -h
Filesystem                     Size    Used   Avail Capacity  Mounted on
zdata                           10T    288k     10T     0%    /mnt/zdata

じゃがしかし!AVAILが10.7T止まりなのは何故じゃ!?や、RAID-Z2であるからして、パリティ2台分の容量を考慮すると妥当な値なんじゃが、プール作成直後は16Tになってた気がするんだがのぉ……こっちの値が不正確と言われればそれまでなんじゃが、気になる………。




  • blog/2015/2015-12-22.txt
  • 最終更新: 2015-12-23 14:16
  • by Decomo