无法生长,因为没有剩余空间

lla*_*ama 24 amazon-ec2 amazon-ebs amazon-web-services

我正在运行一个 AWS EC2 Ubuntu 实例,最初的 EBS 存储为 8GB。

现在 99.8% 已满,因此我已按照 AWS 文档说明将 EBS 卷增加到 16GB。我现在需要将我的分区 /dev/xvda1 扩展到 16GB,但是当我运行命令时

$ growpart /dev/xvda 1
Run Code Online (Sandbox Code Playgroud)

我收到错误

mkdir: cannot create directory ‘/tmp/growpart.2626’: No space left on device
Run Code Online (Sandbox Code Playgroud)

我试过了

  1. 重启实例
  2. 停止实例,并根据旧的 8GB 卷的快照挂载新创建的 16GB 大小的 EBS 卷
  3. 正在运行docker system prune -a(导致“无法连接到 unix:/var/run/docker.sock 上的 Docker 守护进程。docker 守护进程是否正在运行?”错误。当我尝试使用 启动守护进程时sudo dockerd,我得到一个“没有剩余空间”设备”错误)
  4. 跑步 resize2fs /dev/xvda1

一切都无济于事。

运行lsblk返回

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 /
Run Code Online (Sandbox Code Playgroud)

df -h 返回

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
Run Code Online (Sandbox Code Playgroud)

df -i返回

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
Run Code Online (Sandbox Code Playgroud)

小智 85

对于遇到此问题的任何人,这里是答案的链接: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

  • 非常简单的分步指南。好答案! (2认同)
  • 就我而言,步骤#3 是关键 `sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp`,如果步骤#6 根本不起作用,我必须重新启动实例本身使其发挥作用。 (2认同)

d1j*_*i1b 14

只需确保tmp在运行命令之前清除文件夹,方法是growpart /dev/xvda 1运行另一个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 /
Run Code Online (Sandbox Code Playgroud)

tmp稍微清理一下文件夹

sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp

最后增加分区空间

sudo growpart /dev/xvda 1

CHANGED: partition=1 start=4096 old: size=16773087 end=16777183 new: size=41938911 end=41943007
Run Code Online (Sandbox Code Playgroud)

最后等待sudo reboot实例完全重新加载,ssh 进入实例并运行df -h应该显示添加的新空间:

/dev/xvda1       20G  8.1G   12G  41% /
Run Code Online (Sandbox Code Playgroud)

注意新的可用空间,看看它如何不再满了(现在不是100%满了41%