首页 > 代码库 > 淘宝TFS使用笔记(二):Q&A

淘宝TFS使用笔记(二):Q&A

问题 1、nameserver主无法启动,提示服务已存在

   1:  [root@localhost keepalived]# /usr/local/tfs/scripts/tfs start_ns   #启动ns出现错误,message和nameserver.log没有相关信息
   2:  /usr/local/tfs-2.2.16/bin/nameserver has been exist: pid: 3680
   3:   nameserver FAIL to up ... CHECK IT
   4:  [root@localhost keepalived]# ps -ef|grep 3680  #查看对应的pid,发现是keepalived?
   5:  root      3680  3678  0 14:22 ?        00:00:00 keepalived -D
   6:  root      3819  3052  0 14:23 pts/0    00:00:00 grep 3680
   7:  [root@localhost keepalived]# /etc/init.d/keepalived stop   #停止keepalived
   8:  Stopping keepalived:                                       [  OK  ]
   9:  [root@localhost keepalived]# /usr/local/tfs/scripts/tfs start_ns   #再启动ns,ok了
  10:   nameserver is up SUCCESSFULLY pid: 3961
<style></style>

 

问题2、nameserver无法启动,提示:error while loading shared libraries...

   1:  export LD_LIBRARY_PATH=/usr/local/lib   #找不到lib,添加一下share lib就行了
   2:  把这行加入/etc/profile,开机加载
   3:  echo "export LD_LIBRARY_PATH=/usr/local/lib" >> /etc/profile
   4:  20140819 现有tfs设备已改为加入到/etc/ld.so.conf
   5:      if [ ! `grep -l ‘/usr/local/lib‘ ‘/etc/ld.so.conf‘` ]; then echo "/usr/local/lib" >> /etc/ld.so.conf; /sbin/ldconfig; fi
<style></style><style></style>

 

问题3、使用tfstool写入文件失败,提示error: current nameserver only read...tfs open fail: get block info fail...等等

   1:  同时间查看nameserver的nameserver.log,发现一段:
   2:  owner role: slave, other side role: slave, owner status: initialize, other side status: uninitialize
   3:  主备ns都把自己置为slave角色,分别通过VIP/ns_master_IP/ns_slave_IP测试上传,得到同样的错误
   4:  可以确认:slave_nameserver只读、不可写
   5:  此问题为vip挂载方式问题,通过修改keepalived将vip挂载到eth1:0解决
   6:  配置内容为:keepalived.conf
   7:  virtual_ipaddress {
   8:      192.168.1.1/16 brd 192.168.1.255 dev eth1 label eth1:0
   9:  }
<style></style><style></style>

 

问题4、安装tfs时遇见错误:“session_util.cpp:2:23: error: uuid/uuid.h: No such file or directory”

   1:  搜了一下发现这个http://code.taobao.org/p/tfs/issue/601/,但没有有效的解决方法
   2:  重新过了一遍,发现是openssl-devel缺失,导致mysql相关包都没有安装上
   3:  yum install openssl-devel
   4:  并安装mysql的包后
   5:  再安装tfs,错误消失
<style></style><style></style>

 

问题5、安装tfs时遇见错误:“performance.cpp:25:20: error: curses.h: No such file or directory”

   1:  curses.h 这个文件搜索了一下,好像是图形库的文件?根据信息把缺失的东西安装一下
   2:  yum install ncurses ncurses-devel
   3:  再安装时,问题解决
<style></style>

 

问题6、启动dataserver时报错:/usr/local/tfs-2.2.16/bin/dataserver: error while loading shared libraries: libjemalloc.so.1: cannot open shared object file: No such file or directory

   1:  同问题2,将/usr/local/lib加入到/etc/ld.so/conf
   2:      if [ ! `grep -l ‘/usr/local/lib‘ ‘/etc/ld.so.conf‘` ]; then echo "/usr/local/lib" >> /etc/ld.so.conf; /sbin/ldconfig; fi
<style></style>

 

问题7、使用keepalived做nameserver主从,又使用了虚拟机,发现主从切换频繁

   1:  从日志:forcing a new MASTER election
   2:  主日志:Received higher prio advert
   3:  暂时不解,可能为双机通信问题导致
   4:  20140818新增:更换为物理机后运行了将近一周,日志中无切换记录了

 

===== 以下为TFS功能测试中的自问自答了~ =====

问题8、主备nameserver切换时上传报错,影响有多大?

   1:  搜了一下发现这个~http://code.taobao.org/p/tfs/issue/55118/
   2:  问题:nameserver能在主备节点切换,但是上传文件时报error: current nameserver only read, 192.168.41.173:53979, status: -5014
   3:  答(by淘宝人员):切换过程中,有部分请求看到的vip还是在master上,所以还是向master发了请求,就会出现上面的错误,可以忽略。
   4:  个人测试结论:
   5:  做了近10次主从间切换测试,完整的切换过程最长两次7sec,最短一次3sec
   6:  可以认为主从切换不超过10sec,一般都会在7sec以内
<style></style>

 

问题9、nameserver上是否储存影响tfs运行的关键数据?例如元数据,寻址数据or其它~

   1:  参考wiki与实际测试,nameserver上的数据在tfs系统中是无足轻重的:ns数据丢失不会造成ds读异常、ds数据丢失等
   2:  测试环境中的nameserver,删除tfs工作目录的磁盘数据,重启服务器(清理内存);nameserver再次启动后即可工作
   3:  抽查了30个文件均可以正确返回数据(使用命令:usr/local/tfs/bin/tfstool -s 192.168.1.100:8108 -i "cfi ${tfs_url}"
   4:  检查nameserver日志,服务启动后马上就收到了各block的健康报告
<style></style>

 

问题10、dataserver间的数据迁移是怎样的?

   1:  ds间的数据迁移为块(block)迁移,在master ns的nameserver.log中经常可以看到以下内容日志
   2:      send move command successful, block: 134093, : 192.168.1.21:10002===>: 192.168.1.22:10004   #block开始迁移记录
   3:      show result plan seqno: 91730, type: move ,status: finish, priority: normal , block_id: 415183, expired_time: 10211650,runer: 192.168.1.21:10004/192.168.1.23:10008/    #block迁移完毕记录
   4:  备份&冗余:
   5:      在某块磁盘或某台DS故障(下线后,无心跳后),ns日志就马上有了迁移block的指令;
   6:      在总量22G的磁盘中抽查了10个文件,17.56分人为kill该磁盘的ds服务,同一时间确认这10个文件仅剩1个副本
   7:      这期间开始恢复文件副本数,18:11分监测到抽查的所有10个文件都在另外地方复制了第二个副本
   8:  故障后又复原的情况:
   9:      现在抽查的10个文件已有2个副本,且故障盘中有一个副本,是否故障盘开启后有3个副本,这样tfs会如何处理?
  10:      故障盘开启后检查,未查询到3个副本
  11:  存储均衡:
  12:      某日下午下班发现大量的块迁移日志,同时期没有任何磁盘故障;查询每个ds服务存储量都在224~227G之间;
  13:      第二日上班查询日志发现块已经不再迁移,每个ds服务的使用量都在225.01~225.34G;
  14:      由此基本确认tfs的日常会做存储均衡
<style></style>

淘宝TFS使用笔记(二):Q&A