无法增长部分,因为没有 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

我试过了

  1. 正在重启实例
  2. 停止实例,并根据旧的 8GB 卷的快照安装一个大小为 16GB 的新创建的 EBS 卷
  3. 运行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" 错误还有)
  4. 运行宁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 -ireturns

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/ 并根据那里的想法解决了它。

采取的步骤:

  1. 记下根设备(例如/dev/sda1)
  2. 停止实例
  3. 分离根 EBS 卷,然后修改卷大小(如果尚未修改)
  4. 创建一个辅助实例(例如 t2.micro 个实例,或者如果您愿意,可以使用现有实例)
  5. 将步骤 2 中的卷附加到辅助实例(与哪个设备无关)
  6. 在辅助实例中,运行 lsblk确保卷已正确挂载
  7. sudo growpart /dev/xvdf 1(或类似,扩展分区)
  8. lsblk 检查分区是否增长
  9. 分离卷
  10. 将卷附加到您的原始实例,并将设备设置为您在步骤 1 中记下的设备
  11. 启动实例然后通过 SSH 进入它
  12. 如果您仍然收到消息 "Usage of /: 99.8% of X.XX GB",运行 df -h 检查根卷分区的大小(例如 /dev/xvda1
  13. 运行 sudo resize2fs /dev/xvda1(或类似的)调整分区大小
  14. 运行 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/

总结

  1. 运行 df -h 验证您的根分区已满 (100%)
  2. 运行 lsblk 然后 lsblk -f 获取块设备详细信息
  3. sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
  4. sudo growpart /dev/DEVICE_ID PARTITION_NUMBER
  5. lsblk 验证分区是否已扩展
  6. sudo resize2fs /dev/DEVICE_IDPARTITION_NUMBER
  7. 运行 df -h 验证您调整大小的磁盘
  8. 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%