我最近将一台有 2 个驱动器(1TB+3TB)的台式服务器升级为一台有 1x1TB 和 3x3TB 驱动器的台式服务器。在此过程中,我安装了 btrfs 并一起创建了 3TB 驱动器,将 1TB 驱动器留作启动卷。
我使用以下方法将原来的 3TB 驱动器转换为 btrfs 文件系统:
sudo btrfs-convert /dev/sdb
,添加了两个新驱动器并重新平衡了整个文件系统:
btrfs balance start -dconvert=raid1 -mconvert=raid1 /media/HD2
重新平衡后,每个驱动器使用的空间总量不同:
$ sudo btrfs fi show
Label: 'hd2' uuid: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Total devices 3 FS bytes used 2.51TiB
devid 1 size 2.73TiB used 1.89TiB path /dev/sdc1
devid 2 size 2.73TiB used 2.47TiB path /dev/sdb
devid 3 size 2.73TiB used 2.47TiB path /dev/sdd
和:
$ sudo btrfs fi df /media/HD2
Data, RAID1: total=2.51TiB, used=2.51TiB
System, RAID1: total=32.00MiB, used=500.00KiB
Metadata, RAID1: total=931.00GiB, used=4.44GiB
GlobalReserve, single: total=512.00MiB, used=0.00B
$
这仅仅是由于设备#1上坏扇区积累造成的吗?
答案1
嗯,从数字来看,这似乎很有道理。虽然我不是 btrfs 方面的专家,所以请谨慎对待我提供的解释。
btrfs 维基解释了 btrfs 中可用空间的工作原理。 中看到的btrfs fi show
是为某些目的分配的空间。 这并不一定意味着 上的数据较少/dev/sdc1
。
如果加上使用量 (1.89+2.47+2.47),则得到 3.415TiB,这大致相当于btrfs fi df
(2.51+0.93=3.44TiB) 分配的区域。当前使用的空间约为 2.514TiB。如果将其乘以 2 并分成 3 个驱动器 (2.514*2/3),则每个驱动器大约有 1.67TiB。如果文件系统完全平衡,那么这就是每个驱动器上的数据量,尽管您可能无法实现这一点。
现在,由于 BTRFS 确实以较大的块分配空间,因此您有一些分配的空间(在元数据中)未被使用。如果元数据空间碎片化(这可能是平衡的结果 - 仅将一些元数据移动到新驱动器),则无法将这些块回收为未分配(如图所示free
)fi show
。
如果我想清除它,将尝试defrag
在文件系统上运行,然后balance
再次运行。
顺便问一下。转换后您是否删除了 ext4 备份子卷?说实话,我不知道这算在哪里。