生产环境的一台服务器硬盘有问题,需要更换服务器,其中有16480个小文件,总共11G左右的数据需要迁移,数据中断限制在5分钟内,拷贝数据必须限制到2分钟之内完成
尝试过用nfs、scp的方法时间消耗都比较长,最后决定用nc,2分钟之内搞定,简单记录下过程
1、新服务器1000M以太网
# ethtool em1
Settings for em1: Supported ports: [ TP ] Supported link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Supported pause frame use: No Supports auto-negotiation: Yes Advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Half 1000baseT/Full Advertised pause frame use: Symmetric Advertised auto-negotiation: Yes Link partner advertised link modes: 10baseT/Half 10baseT/Full 100baseT/Half 100baseT/Full 1000baseT/Full Link partner advertised pause frame use: No Link partner advertised auto-negotiation: Yes Speed: 1000Mb/s Duplex: Full Port: Twisted Pair PHYAD: 1 Transceiver: internal Auto-negotiation: on MDI-X: off Supports Wake-on: g Wake-on: d Current message level: 0x000000ff (255) drv probe link timer ifdown ifup rx_err tx_err Link detected: yes
2、服务端需要开16个shell等待客户端传输数据,经测试,nc服务端进程不能放在后台,必须放在前台
nc -l 990 |tar -C /home/serverrrd/ -zxf - nc -l 991 |tar -C /home/serverrrd/ -zxf - nc -l 992 |tar -C /home/serverrrd/ -zxf - nc -l 993 |tar -C /home/serverrrd/ -zxf - nc -l 994 |tar -C /home/serverrrd/ -zxf - nc -l 995 |tar -C /home/serverrrd/ -zxf - nc -l 996 |tar -C /home/serverrrd/ -zxf - nc -l 997 |tar -C /home/serverrrd/ -zxf - nc -l 998|tar -C /home/serverrrd/ -zxf - nc -l 999 |tar -C /home/serverrrd/ -zxf - nc -l 9910 |tar -C /home/serverrrd/ -zxf - nc -l 9911 |tar -C /home/serverrrd/ -zxf - nc -l 9912 |tar -C /home/serverrrd/ -zxf - nc -l 9913 |tar -C /home/serverrrd/ -zxf - nc -l 9914 |tar -C /home/serverrrd/ -zxf - nc -l 9915 |tar -C /home/serverrrd/ -zxf -
netstat -ntlup| grep nc
3、客户端开16个并发同时向服务端提交传输数据
cat batch-client.sh
#!/bin/bash for i in 1 2 3 4 5 6 7 8 9 0 a b c d e f do { expr $i "+" 10 &> /dev/null if [ $? -eq 0 ]; then port=$i else port=1`echo $i| tr "a-z" "0-5"` fi #echo $port #echo $i*.rrd tar -zcf - $i*.rrd |nc 172.30.4.219 99$port } & done wait echo "done"