我正在使用 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 GB(已使用:顶部块中的条目,以及可用:同一块中的条目)”。我认为这很清楚。
但仍然:No space left on device
。
那么 - 我错了吗?我该如何解读这个?为什么我不能再在 BTRFS 分区中创建文件了?我该如何解读这个输出?这是怎么回事?
答案1
读这个:http://marc.merlins.org/perso/btrfs/post_2014-05-04_Fixing-Btrfs-Filesystem-Full-Problems.html
看来您遇到了文章中提到的“元数据已满的情况”,因为 Btrfs 为自己保留了 0.5 GB,这意味着它已满,因此阻止了任何新的写入。文章建议您对其进行完全重新平衡。
还请记住,正常的 df 会撒谎,它永远不会告诉您真实的 btrfs 使用情况统计数据。