本文将介绍和演示部分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
写入测试: # /usr/local/tfs/bin/tfstool -s 192.168.1.229:8108 TFS> put /etc/security/limits.conf put /etc/security/limits.conf => T1RtZTByJT1RCvBVdK success.
关闭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.
show > server -m //发现找不到master块
二:下列配置环境下,重新测试
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> put /etc/security/limits.conf //可成功写入 put /etc/security/limits.conf => T1btxTByhT1RCvBVdK success.
上传文件成功后,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的设置值。例如3台data server存活情况下,如果max_replication参数设置为3,那么data server 宕机一台,则会写入失败。
2: 当只存在一台data server的情况下,max_replication和min_replication参数值均要设置为1,否则将会写入失败。
3: 猜想tfs的数据容灾机制
例如:3台data server服务器,每台服务器提供三个mount point,一个mount point 可写入数据为200G; max_replication和min_replication参数均设置为2。那么实际上,总的tfs可用空间应该为200G * 3 * 3 = 1.8T 。
由于max_replication和min_replication参数均设置为2,也就是说数据至少要存两份。由此得出实际tfs的可用空间为900G。