阿里云服务器对象存储大文件如何上传
阿里云对象存储OSS是为了满足用户大存储业务而开发的产品,相较于一般的产品在文件数据存储业务方便具有更便捷、更省钱、更安全等优势。那么我们在使用对象存储时应该怎么上传大文件呢?阿里云代理商-凯铧互联就来谈谈自己的经验。
温馨提示:
阿里云对象存储OSS支持单个文件的大小,从0~48.8TB。但是当我们上传大文件的时候,可能会有以下场景:
1、当我们上传的单个文件大于5GB时,这时候一般的上传文件的方式是没有办法实现的。
2、文件比较大,虽然小于5GB,但是网络环境如果比较差,经常出现网络原因造成超时或者链接断开等错误的时候,上传文件就容易失败。
出现上述的情况,阿里云代理商推荐使用分片断点续传方式或者使用ossutil工具上传
【一】分片断点续传
在使用SDK或API上传大文件时,是可以使用分片断点续传方式的。分片上传适用于以下所述场景:
1、单个文件的大小超过5GB
2、流式上传:当对文件大小还不确定的情况下,需开始上传。比如视频监控等行业的云录像应用。
3、恶劣的网络环境,需要断点续传大文件。我们本身的网络环境差,或者是使用手机端,当出现上传失败的时候,可以对失败的Part进行独立的重试,而不需要重新上传其他的Part。
4、加速上传。上传到OSS的本地文件很大时,可以采用并行上传多个Part以加快上传。
【注】阿里云代理商温馨提醒:OSS支持单个文件最大为48.8TB
【二】ossutil上传
如果我们需要使用工具上传单个或者多个大文件,而不是使用API、SDK编写代码上传时,可以使用ossutil:
1、可以使用ossutil命令行工具的cp命令上传大文件
2、上传文件支持的文件大小范围:0~48.8TB
3、可通过--bigfile-threshold 参数控制分片并发上传的文件大小阈值
4、ossutil上传单个或多个大文件时,可以通过-jobs项和-parallel项,控制并发,优化上传性能。
【三】ossimport上传
若需要进行大批量的文件上传到OSS,还可以使用工具ossimport:
【注】阿里云代理商温馨提醒当文件数目不是特别多,建议优先使用ossutil
【四】常见问题
正常使用简单的上传(PutObject)上传大文件没有办法上传成功?
阿里云代理商原因分析:
1、文件过大,超过了5GB
解决办法:可以使用ossutil命令行工具,通过分块上传的接口将大文件分成多个小的分块进行上传
2、文件小于5GB,但可能由于网络环境原因,出现上传小文件正常,但上传较大文件,请求发出去就收不到任何响应,直至超时。这有可能是服务器的MTU设置较大导致的。用户可在ECS上执行netstat -i获取当前的MTU设置值。如下图所示获得默认的内外网网卡的MTU都是1500:
解决办法1:将本机的MTU改为较小一些。Linux下修改MTU的命令是:ip link set dev eth0 mtu 1470(以ECS通过eth0内网访问OSS调整MTU值为1470)
解决办法2:也可以使用分片上传接口或ossutil工具
3、上传单个大文件能不能并发上传?
如使用ossutil上传时,可以通过--bigfile-threshold、-jobs和-parallel选项
如使用OSS API、SDK的分片上传接口,可以根据需要编写并发调用上传接口的代码。同时,部分SDK也已实现分片上传的并发控制,如Java SDK通过taskNum,Python SDK通过num_threads参数控制。