我使用 btrfs 作为我的主目录,它跨多个设备。总的来说,我应该有大约 7.3TB 的空间 - 这就是df
显示的,但我在仅使用了 5.7TB 数据后就用完了空间:
# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sdd3 7.3T 5.7T 63G 99% /home
btrfs 有这样一段话:
# btrfs fi df /home
Data, RAID0: total=5.59TB, used=5.59TB
System, RAID1: total=8.00MB, used=328.00KB
System: total=4.00MB, used=0.00
Metadata, RAID1: total=11.50GB, used=8.22GB
这很奇怪,因为应该有足够的分区来支持 7.3TB(此外,btrfs 数据配置应该是“单一”而不是 RAID0)。
以下是内容btrfs show
:
# btrfs fi show
Label: none uuid: 2dd4a2b6-c672-49b1-856b-3abdc12d56a5
Total devices 9 FS bytes used 5.59TB
devid 2 size 303.22GB used 303.22GB path /dev/sdb1
devid 3 size 303.22GB used 303.22GB path /dev/sdb2
devid 4 size 325.07GB used 324.50GB path /dev/sdb3
devid 1 size 2.73TB used 1.11TB path /dev/sdc1
devid 5 size 603.62GB used 589.05GB path /dev/sdd1
devid 6 size 632.22GB used 617.65GB path /dev/sdd2
devid 7 size 627.18GB used 612.61GB path /dev/sdd3
devid 8 size 931.51GB used 931.51GB path /dev/sde1
devid 9 size 931.51GB used 931.51GB path /dev/sde2
如您所见,devid 1(我添加的最后一个磁盘)只使用了 1.11TB,而该分区共有 2.73TB 可用空间(它应该是 3TB 的驱动器,但只有 2.7TB 可用:-[ )。
我搜索了好久,还是没找到如何让 btrfs 充分利用分区的方法。我遗漏了什么?
笔记:
- 我正在使用 Ubuntu 12.04.2,当前内核是 3.2.0-23。
- 这是我跑步
btrfs fi resize max /home
之后btrfs fi balance /home
答案1
您使用的是数据 raid0,即无奇偶校验的条带化。一旦您填满 raid0 阵列中的任何磁盘,该阵列就会变满,因为该磁盘上不再有空间来写入其条带部分。
该 ~3TB 设备比您在 btrfs-raid0 实践中充分利用的其他设备大得多。要尝试强制系统使用整个磁盘,您最终需要对其进行分区,然后将两个分区添加为单独的磁盘。顺便说一句,不要这样做,因为它会对性能产生奇怪而可怕的影响,如果您使用 raid0,我认为这对您来说非常关键……?
另一点需要注意的是:在我看来,3.2 版内核对于运行 btrfs 来说已经是相当老了。Btrfs 仍处于高度开发阶段,如果您要运行 btrfs,您确实应该跟踪更新的内核。
在多个设备上使用 Btrfs - 文件系统创建: 当您拥有不同大小的驱动器并想要使用每个驱动器的全部容量时,您必须对数据块使用单个配置文件,而不是 raid0:
# Use full capacity of multiple drives with different sizes (metadata mirrored, data not mirrored and not striped)
mkfs.btrfs -d single /dev/sdb /dev/sdc