腾讯云对象存储COS提供了多种工具支持将本地数据上传到COS,如COSBrowser、COSCMD、COS Migration、COSFS等等,本文探讨Linux环境下,如何将机器上挂载的文件存储CFS的数据快速迁移到COS。
1.1 购买CVM,参考快速配置Linux云服务器 ,标准型SA2机型,1核2G ,高性能云硬盘100G。
CVM 购买后需要格式化数据盘,并挂载。
# 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)。
# 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
1.3 在南京地域创建COS存储桶。
上传1GB文件,最快耗时在30s+。
CVM 上挂载CFS、COSF,然后通过CFS Filetruck 迁移备份工具,将CFS路径下文件迁移至本地COSFS路径,然后通过COSFS上传。
CFS Filetruck其原理是使用rsync命令来同步。这里我们使用cp命令直接从cfs路径复制文件到cosfs,来模拟测试其速度。COSFS分块上传时单个分块的大小默认为10MB,5并发。
上传1GB文件,最快耗时在11s+。
这里使用coscmd默认的并发配置,5并发进程,分块大小1MB,配置可在 ~/.cos.conf 查看。通过coscmd 读本地cfs路径上传,传输速率差不多,不过还有一个读CFS的时延。可通过增大并发线程数、分块大小提升上传速度,建议1核CPU最多配置10线程,分块大小10MB,采用http协议(默认是https,参数schema)。
coscmd 增大max_thread ,由默认5到10,平均传输速率提升到80MB/S,总耗时由36s降低到23s
进一步优化分块大小由默认的1MB调整为5MB ,平均传输速率提升到 120MB/S, 总耗时在12.5s
分块大小提升到10MB,也差不多11~12s,20MB时也是在 11~12s
上传1GB文件,最快耗时17s。
使用 COS Migration 默认配置从cfs路径上传耗时25s, 从本地路径上传,耗时17~18s,传输速率在57MB/S,貌似比coscmd快一些?? 看起来 cos migrtation 比coscmd 快一些,实则不然,cos migrtation默认线程数是8,分块大小5MB,故默认配置情况下更快些。
调整cos migrtation 线程数为10,分块大小为10MB时,总耗时在17s。
由以上测试结果,我们可以看到在测试大文件本地上传的时候,使用coscmd最快,其次为cos migrtation ,cosfs表现最差。那么是不是意味着使用coscmd上传最好呢?并非如此,看具体使用场景,我们来对比一下各个工具。
对比项 | cosfs | coscmd | cos migrtation |
---|---|---|---|
分块大小 | 默认1MB,可调整 | 默认10MB,可调整 | 默认5MB,可调整 |
并发线程 | 不可调整 | 默认5,不区分大、小文件 | 大文件默认8,小文件默认64 |
文件断点续传 | 支持 | 支持 | 支持 |
对象级别续传 | / | 不支持,每次都是覆盖上传 | 本地有文件记录,可续传 |
对于海量文件上传,耗时数十小时的情况,推荐 cos migrtation ,即使中间因为故障断开连接,故障恢复后可以再次启动,上传之前未上传的文件,稳定可靠。
对于少量文件上传,耗时在分钟级别,推荐coscmd ,速度更快。若传输过程中进程因故障中断,重启进程会重新全量上传,已上传的对象会覆盖上传。可以通过开发脚本来记录已上传对象,避免覆盖上传的情况。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。