前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工具指南|如何将本机CFS数据快速上传COS

工具指南|如何将本机CFS数据快速上传COS

原创
作者头像
覃春善
修改2021-03-25 19:39:00
1.9K0
修改2021-03-25 19:39:00
举报

简介

腾讯云对象存储COS提供了多种工具支持将本地数据上传到COS,如COSBrowserCOSCMDCOS MigrationCOSFS等等,本文探讨Linux环境下,如何将机器上挂载的文件存储CFS的数据快速迁移到COS。

一、测试环境搭建:

1.1 购买CVM,参考快速配置Linux云服务器 ,标准型SA2机型,1核2G ,高性能云硬盘100G。

CVM 购买后需要格式化数据盘,并挂载。

代码语言:javascript
复制
# mkfs.ext4 /dev/vdb     
# mount /dev/vdb /data/   挂载数据盘
# blkid /dev/vdb    获取UUID 
#vim  /ets/fstab       写入 fstab 
UUID=f276b826-ea22-4655-906a-16b0691a7470 /data ext4 defaults 0 0  

1.2 购买CFS 并挂载至CVM,参考 在Linux客户端上使用CFS文件系统,请确保CFS 与 CVM 在同一地域,选择同样的VPC网络。本实验中,CFS、CVM、COS 都位于南京,CFS使用NFS 4.0,标准型。其性能公式为:吞吐量(MB/s) = 存储量(GB)x 0.1+100)。

代码语言:javascript
复制

# mkdir /data/locadir  

# cd /data/locadir

# dd if=/dev/zero of=1GB.file bs=1M count=1024   生成测试数据,1GB文件

# mkdir /data/cfsdir  创建挂在CFS的目录

# sudo mount -t nfs -o vers=4.0,noresvport 10.206.0.12:/ /data/cfsdir    挂在CFS

# time cp 1GB.file   /data/cfsdir     

简单测试其吞吐性能,花了11秒,与CFS描述的吞吐性能差不多
简单测试其吞吐性能,花了11秒,与CFS描述的吞吐性能差不多

1.3 在南京地域创建COS存储桶。

二、上传测试

2.1 通过cosfs上传

上传1GB文件,最快耗时在30s+。

CVM 上挂载CFS、COSF,然后通过CFS Filetruck 迁移备份工具,将CFS路径下文件迁移至本地COSFS路径,然后通过COSFS上传。

CFS Filetruck其原理是使用rsync命令来同步。这里我们使用cp命令直接从cfs路径复制文件到cosfs,来模拟测试其速度。COSFS分块上传时单个分块的大小默认为10MB,5并发。

本地通过cosfs 上传1GB文件需要37秒
本地通过cosfs 上传1GB文件需要37秒

2.2 通过coscmd 上传

上传1GB文件,最快耗时在11s+。

这里使用coscmd默认的并发配置,5并发进程,分块大小1MB,配置可在 ~/.cos.conf 查看。通过coscmd 读本地cfs路径上传,传输速率差不多,不过还有一个读CFS的时延。可通过增大并发线程数、分块大小提升上传速度,建议1核CPU最多配置10线程,分块大小10MB,采用http协议(默认是https,参数schema)。

max_thread=5,part_size=1,schema = http,本地路径上传,平均传输速度45~50MB/S
max_thread=5,part_size=1,schema = http,本地路径上传,平均传输速度45~50MB/S

coscmd 增大max_thread ,由默认5到10,平均传输速率提升到80MB/S,总耗时由36s降低到23s

max_thread=10,part_size=1,schema = http
max_thread=10,part_size=1,schema = http

进一步优化分块大小由默认的1MB调整为5MB ,平均传输速率提升到 120MB/S, 总耗时在12.5s

max_thread=10,part_size=5,schema = http
max_thread=10,part_size=5,schema = http

分块大小提升到10MB,也差不多11~12s,20MB时也是在 11~12s

max_thread=10,part_size=10,schema = http
max_thread=10,part_size=10,schema = http

2.3 使用COS Migration上传

上传1GB文件,最快耗时17s。

使用 COS Migration 默认配置从cfs路径上传耗时25s, 从本地路径上传,耗时17~18s,传输速率在57MB/S,貌似比coscmd快一些??  看起来 cos migrtation 比coscmd 快一些,实则不然,cos migrtation默认线程数是8,分块大小5MB,故默认配置情况下更快些。

调整cos migrtation 线程数为10,分块大小为10MB时,总耗时在17s。

bigFileExecutorNum=10,smallFileThreshold=10M,https=off
bigFileExecutorNum=10,smallFileThreshold=10M,https=off

三、如何选择上传工具

由以上测试结果,我们可以看到在测试大文件本地上传的时候,使用coscmd最快,其次为cos migrtation ,cosfs表现最差。那么是不是意味着使用coscmd上传最好呢?并非如此,看具体使用场景,我们来对比一下各个工具。

对比项

cosfs

coscmd

cos migrtation

分块大小

默认1MB,可调整

默认10MB,可调整

默认5MB,可调整

并发线程

不可调整

默认5,不区分大、小文件

大文件默认8,小文件默认64

文件断点续传

支持

支持

支持

对象级别续传

/

不支持,每次都是覆盖上传

本地有文件记录,可续传

  • cos migrtation   虽然比coscmd 慢,但是它的优势在于支持丰富的数据源,支持增量上传(对已上传的文件,本地有上传记录,文件不改动时不覆盖上传,而coscmd没有本地记录,直接覆盖上传)。
  • cos migrtation可针对大、小文件分别优化并发数配置,而coscmd则不行。

对于海量文件上传,耗时数十小时的情况,推荐 cos migrtation  ,即使中间因为故障断开连接,故障恢复后可以再次启动,上传之前未上传的文件,稳定可靠。

对于少量文件上传,耗时在分钟级别,推荐coscmd ,速度更快。若传输过程中进程因故障中断,重启进程会重新全量上传,已上传的对象会覆盖上传。可以通过开发脚本来记录已上传对象,避免覆盖上传的情况。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 简介
  • 一、测试环境搭建:
  • 二、上传测试
    • 2.1 通过cosfs上传
      • 2.2 通过coscmd 上传
        • 2.3 使用COS Migration上传
        • 三、如何选择上传工具
        相关产品与服务
        文件存储
        文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档