磁盘空间不足引起ftp报"553 Could not create file"
===============================================
2021/9/29_第1次修改 ccb_warlock
===============================================
最近都在忙个人的事,很久没有整理学习笔记了,该篇是因为昨天客户联系我排查现场问题,而最终的结果我翻X出去也没搜到过,所以在这里做个记录,希望给有缘人提供一个新的方案来解决这个问题。
言归正传,客户突然联系说程序出现卡顿的问题,排查下来是上传FTP失败引起。
测试之后,使用非匿名账号,下载是正常的,上传提示“553 Could not create file”。
查了很多资料讲到了selinux对vsftpd有拦截,但是对比开发环境和生产环境两边的配置、属性都是一致的,也就是说其他资料的解决方案应该不是当前问题的解决方案(没有按资料尝试是因为生产环境的操作有严格的要求,如果服务挂了会很麻烦)
在没有任何解决方案的时候,我想使用FTP的账号登录centos,然后在目录下创建文件试试,服务器上创建文件是否还报权限问题,这时候转机出现了:
touch: 无法创建“XXX”,设备上没有空间
难道磁盘满了?于是我用‘df -h’查看的分区对应的硬盘占用情况,果然磁盘占用100%(因为客户的这个程序业务上需要不断上传图片到指定的FTP服务器,如果FTP上传失败,就会导致本地图片积压,量上来之后导致程序出现卡顿的问题)。
解决方案:
由于是磁盘满了导致报错,一种方案是停机加硬盘,另一种是移走时间较远的文件把磁盘空间腾出来。(最后现场和客户商议的还是选择了“移文件腾空间”的方式)
结论:
在本次遇到的问题中,是因为磁盘空间不足导致文件无法上传保存到服务器上,导致ftp报“553 Could not create file”。
ftp报“553 Could not create file”,大部分原因可能是用户权限的配置问题引起,然而还有一种可能就是磁盘满了导致无法保存文件,针对这种情况ftp也是报553权限问题(我没有程序无法保存的逻辑的开发经验,只能怀疑是ftp对异常的判断中不考虑磁盘满了的情况,只要无法保存统统归类为权限问题)。
参考资料:
1.https://cloud.tencent.com/developer/article/1721919