我在 EC2 上运行 Linux 实例(我安装了 MongoDB 和 node.js)并且出现此错误:
Cannot write: No space left on device
我想我已经找到这个文件了,这里是 df 输出
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/xvda1 1032088 1032088 0 100% /
问题是,我不知道这个文件是什么,甚至不知道这个文件是否有问题。
所以我的问题是:如何修复“设备上没有剩余空间”错误?
答案1
该文件/
是您的根目录。如果它是您在 中看到的唯一文件系统df
,那么它就是一切。您有一个 1GB 的文件系统,并且它已 100% 满了。您可以开始弄清楚它是如何使用的,如下所示:
sudo du -x / | sort -n | tail -40
然后,您可以/
用占用空间最多的路径进行替换。(由于 ,它们将位于末尾sort
。该命令可能需要一段时间。)
答案2
我知道我在这个帖子里回复了将近 5 年,但它可能会对某些人有所帮助,我遇到了同样的问题,我有一个 m4.xlarge 实例 df -h 被告知 /dev/xvda1 已满,- 100%
Filesystem Size Used Avail Use% Mounted on
udev 7.9G 0 7.9G 0% /dev
tmpfs 1.6G 177M 1.4G 12% /run
/dev/xvda1 7.7G 7.7G 0 100% /
tmpfs 7.9G 0 7.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 7.9G 0 7.9G 0% /sys/fs/cgroup
tmpfs 1.6G 0 1.6G 0% /run/user/1000
我尝试解决它,步骤如下
sudo find / -type f -printf '%12s %p\n' 2>/dev/null|awk '{if($1>999999999)print $0;}'
帮助我知道是 docker 容器占用了我所有的空间,所以我将所有容器推送到我的 docker 注册表,然后执行 sudo rm -rf /var/lib/docker/ 它清理了我的空间:) 希望它能对某人有所帮助:)
答案3
如果您正在运行 EBS 启动实例(推荐),那么您可以使用我在本文中描述的过程增加根(/)卷的大小:
调整正在运行的 EBS Boot EC2 实例上的根磁盘大小
http://alestic.com/2010/02/ec2-resize-running-ebs-root
如果您正在运行实例存储实例(不推荐),则无法更改根磁盘的大小。您必须删除文件或将文件移动到临时存储(例如 /mnt)或附加 EBS 卷并将文件移动到那里。
这是我写的一篇文章,介绍了如何将 MySQL 数据库从根磁盘移动到 EBS 卷:
使用 EBS 在 Amazon EC2 上运行 MySQL
http://aws.amazon.com/articles/1663
...并考虑迁移到 EBS 启动实例。有许多原因让您日后会感谢自己。
答案4
保罗对我来说是正确的,但当我试图跑的时候
sudo apt autoremove
它回应说:
Reading package lists... Error!
E: Write error - write (28: No space left on device)
E: IO Error saving source cache
E: The package lists or status file could not be parsed or opened.
首先,我必须跑
sudo apt-get clean
这样就清理出了足够的空间让我可以运行“sudo apt autoremove”,并且使 /dev/xvda1 上的空间从 100% 降至 28%。