• 淘宝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

    问题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

    问题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:  }

    问题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,错误消失

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

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

    问题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

    问题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以内

    问题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的健康报告

    问题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的日常会做存储均衡
  • 相关阅读:
    判断文件是否正在使用
    批量复制文件
    PAT 甲级 1116 Come on! Let's C (20 分)
    PAT 甲级 1116 Come on! Let's C (20 分)
    1123 Is It a Complete AVL Tree (30 分)
    1123 Is It a Complete AVL Tree (30 分)
    C++ sort()和is_sorted()的升序降序和自定义排序
    C++ sort()和is_sorted()的升序降序和自定义排序
    PAT 甲级 1103 Integer Factorization (30 分)
    PAT 甲级 1103 Integer Factorization (30 分)
  • 原文地址:https://www.cnblogs.com/tutuye/p/3949464.html
Copyright © 2020-2023  润新知