AWS EFS显示占用空间但文件消失,求助排查解决
问题:EFS控制台显示存储占用,但Elastic Beanstalk挂载后为空
我有一个多可用区AWS EFS,AWS控制台显示已存储180MB数据,但从Elastic Beanstalk环境访问时该EFS为空。此前该EFS存有文件且重新部署正常,如今文件突然消失但存储占用仍显示180MB。
我是按照官方提供的配置文件完成EFS挂载配置的,该EFS未设置为公开可用。
编辑补充
执行df -H命令输出如下:
$ df -H Filesystem Size Used Avail Use% Mounted on devtmpfs 507M 0 507M 0% /dev tmpfs 515M 0 515M 0% /dev/shm tmpfs 515M 59M 457M 12% /run tmpfs 515M 0 515M 0% /sys/fs/cgroup /dev/xvda1 8.6G 3.9G 4.8G 45% / 127.0.0.1:/ 9.3E 0 9.3E 0% /efs <- (AWS控制台显示EFS容量为500MB) tmpfs 103M 0 103M 0% /run/user/1000
我尝试恢复多个备份,但每次恢复仅增加EFS容量,文件仍未出现。
编辑补充2
执行mount | grep nfs命令输出如下:
mount | grep nfs sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime) 127.0.0.1:/ on /efs type nfs4 (rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,namlen=255,hard,noresvport,proto=tcp,port=20644,timeo=600,retrans=2,sec=sys,clientaddr=127.0.0.1,local_lock=none,addr=127.0.0.1)
解决方案
从挂载命令的输出可以直接定位问题:当前挂载的是本地回环地址127.0.0.1:/,也就是本地NFS服务,而非真正的AWS EFS文件系统。正常EFS挂载点格式应为fs-xxxx.efs.[区域].amazonaws.com:/。
排查与修复步骤
检查Beanstalk配置文件
确认配置文件中EFSFileSystemId和EFSMountTarget参数是否与你的EFS实例信息完全匹配,同时查看Beanstalk环境事件日志,确认挂载脚本执行过程中是否存在错误。验证EFS挂载目标状态
登录AWS控制台进入EFS管理页面,确保你的EFS在Beanstalk环境所在的可用区有正常运行的挂载目标,且挂载目标的安全组允许Beanstalk实例安全组通过NFS端口(2049)访问。手动修复挂载
- 卸载错误挂载:执行
sudo umount /efs - 手动挂载正确的EFS:替换命令中的EFS域名和挂载路径后执行
sudo mount -t nfs4 -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 fs-xxxx.efs.your-region.amazonaws.com:/ /efs - 若手动挂载成功,修正Beanstalk配置文件后重新部署环境。
- 卸载错误挂载:执行
处理备份恢复问题
之前恢复备份时,因挂载错误导致数据未写入真正的EFS,而是写入了本地路径或错误挂载点。修复挂载后,重新将备份恢复到正确的EFS挂载路径即可。
内容的提问来源于stack exchange,提问作者Code Spirit
相关产品推荐
相关产品推荐

