客户使用ossfs上传超过超过100G的文件异常怎么处理
排查: 1) 先了解 ossfs 的大文件上传原理,ossfs 上传大文件,是通过分片来做的,默认分片时 10M,分片数量最大时 1000 个,也就是默认限制大小为 100G。 2) 出现这种本地磁盘空间不够的情况,是因为 OSS 再上传会写一些临时缓存 文件到 /tmp 目录下,再写之前先要判断下磁盘的管理空间是否小于用户上 传的文件总量。
// check free disk space
if(!FdManager::IsSafeDiskSpace(NULL, S3fsCurl::GetMultipartSize() *
S3fsCurl::GetMaxParallelCount())){
S3FS_PRN_EXIT("There is no enough disk space for used as cache(or
temporary) directory by s3fs.");
S3fsCurl::DestroyS3fsCurl();
s3fs_destroy_global_ssl();
exit(EXIT_FAILURE);
}
3) 而用户上传的文件是一个 300G 的文件,本地磁盘冗余 600G,不可能不够 的,但是代码统计不会说谎,当时磁盘空间预判确实不够,ossfs 唯一能够 控制分片的就是 ,multipart_size 和 控制线程的数量。但是默认是 5 个,不 可能是线程数量导致的,唯一可能就是 multipart_size 导致。通过分析发现 用户 multipart_size 是 300G * 5 = 1.5T,这个 multipart_size 分片大小是 M ,结果自然超过了本地的磁盘安全空间,所以导致的无法上传,将分片大 小降低后就解决了。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。