一个需求,需要将50T左右的碎文件(4k左右)备份到glusterfs,通过正常的拷贝,速度基本上保持在1M左右的样子,我的天,这样备份下去,感觉会死人。。。怎么办?折腾下
首先分析一下当前的问题点,原因基本上是在glusterfs上,glusterfs对于碎文件的支持本身不好,在传输小文件的时候每个文件都要通过一次计算然后落到后端的存储节点上于是乎...速度慢的惊人。
了解到问题点后突然一个机灵,既然碎文件会每次做校验,那如果存储到glusterfs的文件不碎不就完事了?
于是乎测试了一把tar命令
tar cvf data1.tar.gz /mnt/data1/
当前在glusterfs的挂载目录下,/mnt/data1/是要备份数据的路径
执行后发现窝巢速度飞快,飙升了好几十倍,爽歪歪了
执行了几分钟,突然又想到窝巢不对啊,直接给这个目录打包,后端存储的某个节点还不直接写爆炸了啊,不行,不能这么备,得对打包文件做个拆分,嘿嘿嘿 怎么拆?
[root@localhost data1]# tar cvf - /mnt/data1/ |split -b 4G - data1.tar
执行后看备份的文件,就是下边这个熊样子了
[root@localhost data1]# ll
total 4003520
-rw-r--r-- 1 root root 4294967296 Apr 17 22:33 data1.taraa
-rw-r--r-- 1 root root 765132800 Apr 17 22:33 data1.tarab
然后就让他备份吧...
当然,恢复也是需要测一把的,要不然备份了不能用不扯淡了
[root@localhost data1]# cat data1.tar* |tar xv -C /root/
解压后就是这个熊样子(测试生成)
[root@localhost ~]# ls
mnt
嘿嘿嘿 然后丢后台跑吧,我老人家回家了