无法增长部分,因为没有 space 剩余
Unable to growpart because no space left
我运行正在使用 EBS 存储最初为 8GB 的 AWS EC2 Ubuntu 实例。
现在已满 99.8%,因此我已按照 AWS 文档说明将 EBS 容量增加到 16GB。我现在需要将分区 /dev/xvda1 扩展到 16GB,但是当我 运行 命令
$ growpart /dev/xvda 1
我收到错误
mkdir: cannot create directory ‘/tmp/growpart.2626’: No space left on device
我试过了
- 正在重启实例
- 停止实例,并根据旧的 8GB 卷的快照安装一个大小为 16GB 的新创建的 EBS 卷
- 运行ning
docker system prune -a
(导致 "Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running?" 错误。当我尝试使用 sudo dockerd
启动守护程序时,出现 "no space left on device" 错误还有)
- 运行宁
resize2fs /dev/xvda1
都无济于事。
运行 lsblk
returns
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 89M 1 loop /snap/core/7713
loop1 7:1 0 18M 1 loop /snap/amazon-ssm-agent/1480
loop2 7:2 0 89.1M 1 loop /snap/core/7917
loop3 7:3 0 18M 1 loop /snap/amazon-ssm-agent/1455
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 8G 0 part /
df -h
returns
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 16M 379M 4% /run
/dev/xvda1 7.7G 7.7G 0 100% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 90M 90M 0 100% /snap/core/7713
/dev/loop1 18M 18M 0 100% /snap/amazon-ssm-agent/1480
/dev/loop2 90M 90M 0 100% /snap/core/7917
/dev/loop3 18M 18M 0 100% /snap/amazon-ssm-agent/1455
tmpfs 395M 0 395M 0% /run/user/1000
和df -i
returns
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 501743 296 501447 1% /dev
tmpfs 504775 457 504318 1% /run
/dev/xvda1 1024000 421259 602741 42% /
tmpfs 504775 1 504774 1% /dev/shm
tmpfs 504775 3 504772 1% /run/lock
tmpfs 504775 18 504757 1% /sys/fs/cgroup
/dev/loop0 12827 12827 0 100% /snap/core/7713
/dev/loop1 15 15 0 100% /snap/amazon-ssm-agent/1480
/dev/loop2 12829 12829 0 100% /snap/core/7917
/dev/loop3 15 15 0 100% /snap/amazon-ssm-agent/1455
tmpfs 504775 10 504765 1% /run/user/1000
我看到这篇文章 http://www.daniloaz.com/en/partitioning-and-resizing-the-ebs-root-volume-of-an-aws-ec2-instance/ 并根据那里的想法解决了它。
采取的步骤:
- 记下根设备(例如/dev/sda1)
- 停止实例
- 分离根 EBS 卷,然后修改卷大小(如果尚未修改)
- 创建一个辅助实例(例如
t2.micro
个实例,或者如果您愿意,可以使用现有实例)
- 将步骤 2 中的卷附加到辅助实例(与哪个设备无关)
- 在辅助实例中,运行
lsblk
确保卷已正确挂载
sudo growpart /dev/xvdf 1
(或类似,扩展分区)
lsblk
检查分区是否增长
- 分离卷
- 将卷附加到您的原始实例,并将设备设置为您在步骤 1 中记下的设备
- 启动实例然后通过 SSH 进入它
- 如果您仍然收到消息 "Usage of /: 99.8% of X.XX GB",运行
df -h
检查根卷分区的大小(例如 /dev/xvda1
)
- 运行
sudo resize2fs /dev/xvda1
(或类似的)调整分区大小
- 运行
df -h
检查您的 Use%
of /dev/xvda1
不再是 ~100%
首先我删除缓存和不需要的文件。
sudo apt-get autoclean
sudo apt-get autoremove
之后,我关注了这个博客:
https://devopsmyway.com/how-to-extend-aws-ebs-volume-with-zero-downtime/
对于遇到此问题的任何人,这里有一个 link 的答案:https://aws.amazon.com/premiumsupport/knowledge-center/ebs-volume-size-increase/
总结
- 运行
df -h
验证您的根分区已满 (100%)
- 运行
lsblk
然后 lsblk -f
获取块设备详细信息
sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
sudo growpart /dev/DEVICE_ID PARTITION_NUMBER
lsblk
验证分区是否已扩展
sudo resize2fs /dev/DEVICE_IDPARTITION_NUMBER
- 运行
df -h
验证您调整大小的磁盘
sudo umount /tmp
只需确保在 运行 执行命令 growpart /dev/xvda 1
之前清除 tmp
文件夹,方法是 运行 执行其他命令 sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
应该可以解决问题.
以下是调整 EBS 卷大小的完整回顾:
运行 df -h
验证您的磁盘已满 (100%)
/dev/xvda1 8.0G 8.0G 20K 100% /
运行 lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
`-xvda1 202:1 0 8G 0 part /
稍微清除tmp
个文件夹
sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
最后在分区
中增加space
sudo growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=41938911 end=41943007
最后做一个 sudo reboot
等待实例完全重新加载,ssh 进入实例并且 运行 df -h
应该显示新的 space 添加:
/dev/xvda1 20G 8.1G 12G 41% /
注意新的可用 space,看看它是如何不再满的(不在 100%
现在在 41%
)
我运行正在使用 EBS 存储最初为 8GB 的 AWS EC2 Ubuntu 实例。
现在已满 99.8%,因此我已按照 AWS 文档说明将 EBS 容量增加到 16GB。我现在需要将分区 /dev/xvda1 扩展到 16GB,但是当我 运行 命令
$ growpart /dev/xvda 1
我收到错误
mkdir: cannot create directory ‘/tmp/growpart.2626’: No space left on device
我试过了
- 正在重启实例
- 停止实例,并根据旧的 8GB 卷的快照安装一个大小为 16GB 的新创建的 EBS 卷
- 运行ning
docker system prune -a
(导致 "Cannot connect to the Docker daemon at unix:/var/run/docker.sock. Is the docker daemon running?" 错误。当我尝试使用sudo dockerd
启动守护程序时,出现 "no space left on device" 错误还有) - 运行宁
resize2fs /dev/xvda1
都无济于事。
运行 lsblk
returns
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 89M 1 loop /snap/core/7713
loop1 7:1 0 18M 1 loop /snap/amazon-ssm-agent/1480
loop2 7:2 0 89.1M 1 loop /snap/core/7917
loop3 7:3 0 18M 1 loop /snap/amazon-ssm-agent/1455
xvda 202:0 0 16G 0 disk
└─xvda1 202:1 0 8G 0 part /
df -h
returns
Filesystem Size Used Avail Use% Mounted on
udev 2.0G 0 2.0G 0% /dev
tmpfs 395M 16M 379M 4% /run
/dev/xvda1 7.7G 7.7G 0 100% /
tmpfs 2.0G 0 2.0G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup
/dev/loop0 90M 90M 0 100% /snap/core/7713
/dev/loop1 18M 18M 0 100% /snap/amazon-ssm-agent/1480
/dev/loop2 90M 90M 0 100% /snap/core/7917
/dev/loop3 18M 18M 0 100% /snap/amazon-ssm-agent/1455
tmpfs 395M 0 395M 0% /run/user/1000
和df -i
returns
Filesystem Inodes IUsed IFree IUse% Mounted on
udev 501743 296 501447 1% /dev
tmpfs 504775 457 504318 1% /run
/dev/xvda1 1024000 421259 602741 42% /
tmpfs 504775 1 504774 1% /dev/shm
tmpfs 504775 3 504772 1% /run/lock
tmpfs 504775 18 504757 1% /sys/fs/cgroup
/dev/loop0 12827 12827 0 100% /snap/core/7713
/dev/loop1 15 15 0 100% /snap/amazon-ssm-agent/1480
/dev/loop2 12829 12829 0 100% /snap/core/7917
/dev/loop3 15 15 0 100% /snap/amazon-ssm-agent/1455
tmpfs 504775 10 504765 1% /run/user/1000
我看到这篇文章 http://www.daniloaz.com/en/partitioning-and-resizing-the-ebs-root-volume-of-an-aws-ec2-instance/ 并根据那里的想法解决了它。
采取的步骤:
- 记下根设备(例如/dev/sda1)
- 停止实例
- 分离根 EBS 卷,然后修改卷大小(如果尚未修改)
- 创建一个辅助实例(例如
t2.micro
个实例,或者如果您愿意,可以使用现有实例) - 将步骤 2 中的卷附加到辅助实例(与哪个设备无关)
- 在辅助实例中,运行
lsblk
确保卷已正确挂载 sudo growpart /dev/xvdf 1
(或类似,扩展分区)lsblk
检查分区是否增长- 分离卷
- 将卷附加到您的原始实例,并将设备设置为您在步骤 1 中记下的设备
- 启动实例然后通过 SSH 进入它
- 如果您仍然收到消息 "Usage of /: 99.8% of X.XX GB",运行
df -h
检查根卷分区的大小(例如/dev/xvda1
) - 运行
sudo resize2fs /dev/xvda1
(或类似的)调整分区大小 - 运行
df -h
检查您的Use%
of/dev/xvda1
不再是 ~100%
首先我删除缓存和不需要的文件。
sudo apt-get autoclean
sudo apt-get autoremove
之后,我关注了这个博客:
https://devopsmyway.com/how-to-extend-aws-ebs-volume-with-zero-downtime/
对于遇到此问题的任何人,这里有一个 link 的答案:https://aws.amazon.com/premiumsupport/knowledge-center/ebs-volume-size-increase/
总结
- 运行
df -h
验证您的根分区已满 (100%) - 运行
lsblk
然后lsblk -f
获取块设备详细信息 sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
sudo growpart /dev/DEVICE_ID PARTITION_NUMBER
lsblk
验证分区是否已扩展sudo resize2fs /dev/DEVICE_IDPARTITION_NUMBER
- 运行
df -h
验证您调整大小的磁盘 sudo umount /tmp
只需确保在 运行 执行命令 growpart /dev/xvda 1
之前清除 tmp
文件夹,方法是 运行 执行其他命令 sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
应该可以解决问题.
以下是调整 EBS 卷大小的完整回顾:
运行 df -h
验证您的磁盘已满 (100%)
/dev/xvda1 8.0G 8.0G 20K 100% /
运行 lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda 202:0 0 20G 0 disk
`-xvda1 202:1 0 8G 0 part /
稍微清除tmp
个文件夹
sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
最后在分区
中增加spacesudo growpart /dev/xvda 1
CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=41938911 end=41943007
最后做一个 sudo reboot
等待实例完全重新加载,ssh 进入实例并且 运行 df -h
应该显示新的 space 添加:
/dev/xvda1 20G 8.1G 12G 41% /
注意新的可用 space,看看它是如何不再满的(不在 100%
现在在 41%
)