web-dev-qa-db-ja.com

BTRFS: "デバイスにスペースが残っていません"が、btrfsコマンドはそれ以外を示します

BTRFSを使用して、2つのディスクからRAID0ボリュームを作成しています。どちらもAWS EC2インスタンス上にあり、それぞれ30 GBの空き容量があります。ファイルシステムの作成に使用したコマンドはbtrfs -d raid0 -L MYLABEL /dev/xvdf /dev/xvdgです。

Ubuntuは、BTRFSと同様に、ディスク領域がいっぱいであることを通知します。

root@Host:/var/docker-apps/prometheus# btrfs balance start -dconvert=raid0 .
ERROR: error during balancing '.': No space left on device
There may be more info in syslog - try dmesg | tail
root@Host:/var/docker-apps/prometheus#

面白いのは、btrfs filesystem usageを見ると次のようになっていることです。

root@Host:/var/docker-apps/prometheus# btrfs filesystem usage .
Overall:
    Device size:          60.00GiB
    Device allocated:     60.00GiB
    Device unallocated:   2.00MiB
    Device missing:       0.00B
    Used:                 25.26GiB
    Free (estimated):     34.22GiB    (min: 34.22GiB)
    Data ratio:           1.00
    Metadata ratio:       2.00
    Global reserve:       256.00MiB    (used: 0.00B)

Data,RAID0: Size:57.98GiB, Used:23.76GiB
   /dev/xvdf      28.99GiB
   /dev/xvdg      28.99GiB

Metadata,RAID1: Size:1.00GiB, Used:766.11MiB
   /dev/xvdf       1.00GiB
   /dev/xvdg       1.00GiB

System,RAID1: Size:8.00MiB, Used:16.00KiB
   /dev/xvdf       8.00MiB
   /dev/xvdg       8.00MiB

Unallocated:
   /dev/xvdf       1.00MiB
   /dev/xvdg       1.00MiB
root@Host:/var/docker-apps/prometheus# 

さて、「私は60 GBのRAID0スペースが利用可能であり、現在約25を使用しています(同じブロック内のFree:エントリーと一緒に、使用済み:上部ブロックのエントリー)。これはかなり明確だと思います。

それでも:No space left on device

だから-私は間違っていますか?これをどのように読む必要がありますか? BTRFSパーティションにファイルを作成できなくなるのはなぜですか?この出力を読み取るにはどうすればよいですか?何が起きてる?

3
flypenguin

これを読んでください: http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html

Btrfsが0.5 GBを予約しているため、記事の「メタデータは完全な場合」に苦しんでいるようです。つまり、Btrfsは完全であり、新しい書き込みを妨げます。この記事は、完全にリバランスする必要があることを示唆しています。

また、通常のdfが存在することも覚えておいてください。実際のbtrfsの使用状況を示すことは決してありません。

4
Marc Stürmer