如何在Linux数据中心服务器上重新平衡btrfs文件系统?

btrfs文件系统正在迅速普及,它在许多Linux发行版上使用,并提供了许多在数据中心环境中很有意义的功能–比如快照、负载平衡、在线碎片整理、池化和错误检测。
要充分利用btrfs文件系统,你需要知道如何使用一些更高级的功能。其中一个这样的功能叫做平衡(或重新平衡)。
为什么你需要平衡
btrfs文件系统使用一个两级分配器。第一阶段为特定类型的数据(数据、元数据、系统)分配大块。第二阶段分配较小的块,如文件系统。
然而,可能发生的情况是,当文件系统用完了数据或元数据的空间,无法分配新的块。
如何运行测试
当你的系统没有足够的空间来创建新的块时,事情就会很快发生变化。当这种情况发生时,你就会转向命令行。为了测试你的系统是否已经没有空间了,你可以发出命令。
btrfs filesystem df MOUNT
其中MOUNT是btrfs文件系统的挂载点。如果你的btrfs文件系统被挂载在/data,你会发出命令。
btrfs filesystem df /data
你应该看到一行跟下面差不多的输出。
Data, single: total=50.00GiB, used=45GiB
所以我们有50 GB - 45 GB = 5 GB,相当于90%的使用率。在这个例子中,重新平衡可以释放文件系统的空间。
如何重新平衡btrfs
当你平衡btrfs的时候,它将通过分配器将所有内容发送回去并压缩块。如果你有两个元数据chunks都是45%,在运行平衡后,你将只有一个元数据chunks是90%满。然后,平衡将删除新抢占的chunks,以腾出空间来分配新的chunks。
这是一项重要的任务,可以为你省去不少麻烦。如何运行平衡?让我们坚持以/data为例。假设你发现数据分区的元数据块已满,需要运行平衡。要做到这一点,你需要发出以下命令。
sudo btrfs balance /data
这里需要注意的是:平衡可能需要相当长的时间,这取决于分区上有多少数据以及分块有多满,并且可能会中断操作。正因为如此,你会希望在不会造成任何问题的时候运行平衡。
一旦平衡完成,你应该看到这样的内容。
Done, had to relocate 12 out of 12 chunks
当你看到这一点时,你的 btrfs 文件系统又恢复了平衡,应该不会有任何问题–至少在分块分配方面。重新运行这个命令。
btrfs filesystem df /data
现在,你应该可以看到总数和使用量之间的差异更容易接受。
您还可以使用使用率过滤器运行平衡。该过滤器允许您增加或减少使用率过滤器,它只平衡使用率低于给定百分比的区块组。例如,假设你想只平衡使用率低于85%的区块。要做到这一点,你可以运行平衡命令,比如。
sudo btrfs balance start -dusage=85 /data…
当然,其实比这复杂得多。在某些圈子里,有人说你不应该进行手动重新平衡,但如果你遇到btrfs已经用完了分配块的空间的情况,你可能没有任何选择。
至少现在你可以在数据中心中使用你的支持btrfs的Linux系统,为自己省去停机的麻烦。香港服务器www.a5idc.net
与所有事情一样,你应该在非生产系统上试验btrfs平衡。一旦你了解了这个工具的工作原理,并成功地使用了它,你就可以转移到你的生产系统上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值