Energy and Persistence conquers

MogileFS Rebalance重新平衡文件

2015-02-27

Rebalance不是MogileFS必须的操作,但是根据实践的经验来看,关注MogileFS设备的存储情况是很有必要的。定期查看MogileFS的剩余容量,有助于预测何时需要添加新的设备,以及为新设备的上线预留足够的时间。

时机

当整个系统容量不足,新设备上线之后,从新平衡所有设备的文件是很有必要的。如果没有平衡,新的文件会存储在新的设备上,而通常新文件的访问更为频繁,这样新的设备的负载会更重。在分布式文件系统里,这样的情况是我们不愿看到的。

平衡策略

新版本的MogileFS通过制定策略来平衡文件,所谓策略其实就是一串参数组成的字符串。MogileFS评估这些参数,然后做决定如何来平衡文件。
可以通过下面的命令查看Rebalance的策略:

1
2
$ mogadm rebalance settings
rebal_policy = from_percent_used=95 to_percent_free=50 limit_type=device limit_by=size limit=5g fid_age=old

设置策略:

1
$ mogadm rebalance policy --options=“from_hosts=3 to_percent_free=50”

当一次Rebalance开始时,MogileFS开始自检,然后把源设备的列表保存下来。然后,目标设备列表每隔一小段时间就会重新评估一次。这是为了避免乒乓状态,也为了给每一个备选文件选择一个最佳的目标设备。

选项及默认值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# source
from_hosts => [], # host ids (not names).
from_devices => [], # device ids.
from_percent_used => undef, # 0.nn * 100
from_percent_free => undef,
from_space_used => undef,
from_space_free => undef,
fid_age => ‘old’, # old|new
limit_type => ‘device’, # global|device
limit_by => ‘none’, # size|count|percent|none
limit => undef, # 100g|10%|5000

# target
to_hosts => [],
to_devices => [],
to_percent_used => undef,
to_percent_free => undef,
to_space_used => undef,
to_space_free => undef,
not_to_hosts => [],
not_to_devices => [],
use_dest_devs => ‘all’, # all|N (list up to N devices to rep pol)
leave_in_drain_mode => 0,