情况更糟了,但这可能更接近真正的问题……假设我需要更多磁盘空间,我这次用 100 GB(之前是 50 GB)从镜像创建了一个新实例。(每个备份为 5 GB,存储在 S3 上。)这次我得到了一个明确的错误:“设备上没有剩余空间”。然而,df 命令显示还有大量可用空间。
> [2019-11-29 22:42:58] 确保 /var/www/discourse/tmp/restores/default/2019-11-29-224258 存在...
> [2019-11-29 22:42:58] 正在将归档下载到临时目录...
> [2019-11-29 22:45:46] 正在解压缩归档,这可能需要一些时间...
> [2019-11-29 22:51:46] 没有要提取的元数据文件。
> [2019-11-29 22:51:46] 正在验证元数据...
> [2019-11-29 22:51:46] 当前版本:20191129144706
> [2019-11-29 22:51:46] 恢复版本:20191108000414
> [2019-11-29 22:51:46] 正在提取转储文件...
> [2019-11-29 22:53:47] 异常:设备上没有剩余空间 @ io_write - /shared/tmp/restores/default/2019-11-29-224258/dump.sql
> [ec2-user@ip-172-31-47-237 discourse]$ df / -h
> 文件系统 容量 已用 可用 已用% 挂载点
> /dev/xvda1 99G 28G 71G 28% /
有趣的是,所引用的目录中没有任何内容:
> /var/www/discourse# ls /shared/tmp/*
> /shared/tmp/backups:
> < 空 >
> /shared/tmp/restores:
> < 空 >
这会不会是交换文件的问题?EC2 实例是 t2.small,拥有 2 GB 内存,因此我很久以前就在正常运行的论坛上 创建了交换文件。我假设交换文件会在新的实例上被复制。我不是专家,但我认为交换文件确实存在,因为它不允许我创建新的交换文件,而且:
> /var/www/discourse# swapon -s
> 文件名 类型 大小 已用 优先级
> /swapfile 文件 2097148 1024 -2