本文将介绍和演示部分data server故障条件下的tfs数据写入问题。

 

环境介绍:

Tfs name server vip:  192.168.1.229

Tfs namerver 1: 192.168.1.225

Tfs namerver 2: 192.168.1.226

Data server 1:  192.168.1.226

Data server 2:  192.168.1.227

Data server 3:  192.168.1.228 

 

一:下列配置环境下,模拟单台data server 故障

max_replication = 3   #Block 最大备份数, default: 2
min_replication = 2   #Block 最小备份数, default: 2


修改完成后重启name server服务,本文中测试均采用一个data server 挂载点 

225服务器:
# /usr/local/tfs/scripts/tfs  check_ns
 nameserver is running pid: 1061 
 
226服务器:
# /usr/local/tfs/scripts/tfs  check_ns
 nameserver is running pid: 32506 
# /usr/local/tfs/scripts/tfs  check_ds
 dataserver [ 1 ] is running 
 
227服务器:
# /usr/local/tfs/scripts/tfs  check_ds
 dataserver [ 1 ] is running 
 
228服务器:
# /usr/local/tfs/scripts/tfs  check_ds
 dataserver [ 1 ] is running


使用ssm工具查看当前的状态:


# /usr/local/tfs/bin/ssm -s 192.168.1.229:8108
show > server -m

TFS dataserver故障测试_第1张图片


写入测试:
# /usr/local/tfs/bin/tfstool -s 192.168.1.229:8108 
TFS> put /etc/security/limits.conf
put /etc/security/limits.conf => T1RtZTByJT1RCvBVdK success.


wKiom1QqAvrxS_rEAAYaJFehgbg241.jpg


关闭226的data server后再次写入测试
# /usr/local/tfs/scripts/tfs  stop_ds 1
 dataserver 1 exit SUCCESSFULLY 
 
TFS> put /etc/security/limits.conf  //发现写入失败
put /etc/security/limits.conf =>  fail.


TFS dataserver故障测试_第2张图片


show > server -m //发现找不到master块

TFS dataserver故障测试_第3张图片


二:下列配置环境下,重新测试

max_replication = 2   #Block 最大备份数, default: 2
min_replication = 2   #Block 最小备份数, default: 2
 
# /usr/local/tfs/bin/ssm -s 192.168.1.229:8108
show > server -m


TFS dataserver故障测试_第4张图片


TFS> put /etc/security/limits.conf  //可成功写入
put /etc/security/limits.conf => T1btxTByhT1RCvBVdK success.

TFS dataserver故障测试_第5张图片


上传文件成功后,tfs会返回三个重要的参数:block_id,file_id和filename。我们可以通过admintool工具查询block_id在哪些dataserver上,然后用ds_clinet工具列出对应block上的所有的file_id和filename


# /usr/local/tfs/bin/admintool -s 192.168.1.229:8108
TFS > listblk 1011
list block 1011 success.
------block: 1011, has 2 replicas------
block: 1011, (0)th server: 192.168.1.226:10000 
block: 1011, (1)th server: 192.168.1.227:9998


三:总结

1: 如果想要成功写入,那么实际存活的data server的数量要大于或等于max_replication的设置值。例如3data server存活情况下,如果max_replication参数设置为3,那么data server 宕机一台,则会写入失败。

 

2: 当只存在一台data server的情况下,max_replicationmin_replication参数值均要设置为1,否则将会写入失败。


3: 猜想tfs的数据容灾机制

例如:3data server服务器,每台服务器提供三个mount point,一个mount point 可写入数据为200G; max_replicationmin_replication参数均设置为2那么实际上,总的tfs可用空间应该为200G * 3  *  3 = 1.8T 。 

由于max_replicationmin_replication参数均设置为2,也就是说数据至少要存两份。由此得出实际tfs的可用空间为900G