108

我已按照调整 EC2 卷大小的步骤进行操作

  1. 停止实例
  2. 拍摄当前卷的快照
  3. 在同一区域中从以前的快照创建一个更大的新卷
  4. 从实例中分离旧卷
  5. 将新卷附加到同一挂载点的实例

旧卷是 5GB,我创建的卷是 100GB 现在,当我重新启动实例并运行时df -h I仍然看到这个

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm

这是我跑步时得到的

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!

如果我跑cat /proc/partitions我会看到

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2

据我了解,如果我遵循了正确的步骤,xvde 应该具有与 xvde1 相同的数据,但我不知道如何使用它

如何使用新卷或 umount xvde1 并改为 mount xvde?

我无法理解我做错了什么

我也试过sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem

顺便说一句,这是一个带有 centos 6.2 x86_64 的 linux 机器

在此先感谢您的帮助

4

15 回答 15

356

不再需要停止实例并分离 EBS 卷来调整它的大小!

2017 年 2 月 13 日亚马逊宣布:“亚马逊 EBS 更新 – 新的弹性卷改变一切

即使要扩展的卷是正在运行的实例的根卷,该过程也能正常工作!


假设我们想“即时”将 Ubuntu 的启动驱动器从 8G 增加到 16G。

步骤 1) 登录 AWS Web 控制台 -> EBS -> 鼠标右键单击要调整大小的那个 -> “修改音量” -> 更改“大小”字段并单击 [修改] 按钮

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述


step-2) ssh 进入实例并调整分区大小:

让我们列出连接到我们盒子的块设备:
lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0   8G  0 part /

如您所见,/dev/xvda1 仍然是 16 GiB 设备上的 8 GiB 分区,并且该卷上没有其他分区。让我们使用“growpart”将 8G 分区调整为 16G:

# install "cloud-guest-utils" if it is not installed already
apt install cloud-guest-utils

# resize partition
growpart /dev/xvda 1

让我们检查一下结果(可以看到 /dev/xvda1 现在是 16G):

lsblk
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
xvda    202:0    0  16G  0 disk
└─xvda1 202:1    0  16G  0 part /

许多 SO 答案建议将 fdisk 与删除/重新创建分区一起使用,这是一个讨厌的、有风险的、容易出错的过程,尤其是在我们更改引导驱动器时。


step-3) 调整文件系统的大小以一直增长以充分利用新的分区空间
# Check before resizing ("Avail" shows 1.1G):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1      7.8G  6.3G  1.1G  86% /

# resize filesystem
resize2fs /dev/xvda1

# Check after resizing ("Avail" now shows 8.7G!-):
df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/xvda1       16G  6.3G  8.7G  42% /

所以我们有零停机时间和大量新空间可供使用。
享受!

更新:更新:在 XFS 文件系统时使用 sudo xfs_growfs /dev/xvda1 而不是 resize2fs。

于 2017-03-14T16:10:20.453 回答
72

谢谢威尔曼,您的命令正常运行,如果我们将 EBS 增加到更大的尺寸,则需要考虑小的改进

  1. 停止实例
  2. 从卷创建快照
  3. 根据快照增加大小创建新卷
  4. 检查并记住当前的卷挂载点(即/dev/sda1
  5. 分离当前音量
  6. 将最近创建的卷附加到实例,设置确切的挂载点
  7. 重启实例
  8. 通过 SSH 访问实例并运行fdisk /dev/xvde

    警告:不推荐使用 DOS 兼容模式。强烈建议关闭模式(命令'c')并将显示单位更改为扇区(命令'u')

  9. 点击p以显示当前分区

  10. 点击d删除当前分区(如果有多个,您必须一次删除一个)注意:不要担心数据不会丢失
  11. 点击n创建新分区
  12. 点击p将其设置为主要
  13. 点击1设置第一个气缸
  14. 设置所需的新空间(如果为空则保留整个空间)
  15. 点击a使其可启动
  16. 点击1w写入更改
  17. 重启实例或使用partprobe(从parted包中)告诉内核新的分区表
  18. 通过 SSH 登录并运行 resize2fs /dev/xvde1
  19. 最后检查运行 df -h 的新空间
于 2013-02-18T06:15:42.870 回答
46

上面 jperelli 的完美评论。

我今天面临同样的问题。AWS 文档没有明确提到 growpart。我想出了艰难的方法,确实这两个命令在 M4.large 和 M4.xlarge 上与 Ubuntu 完美配合

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1
于 2017-06-04T13:16:29.553 回答
16

[解决了]

这是必须要做的

  1. 停止实例
  2. 从卷创建快照
  3. 根据快照增加大小创建新卷
  4. 检查并记住当前的卷挂载点(即 /dev/sda1)
  5. 分离当前音量
  6. 将最近创建的卷附加到实例,设置确切的挂载点
  7. 重启实例
  8. 通过 SSH 访问实例并运行fdisk /dev/xvde
  9. 点击p以显示当前分区
  10. 点击d删除当前分区(如果有多个,您必须一次删除一个)注意:不要担心数据不会丢失
  11. 点击n创建新分区
  12. 点击p将其设置为主要
  13. 点击1设置第一个气缸
  14. 设置所需的新空间(如果为空则保留整个空间)
  15. 点击a使其可启动
  16. 点击1w写入更改
  17. 重启实例
  18. 通过 SSH 登录并运行resize2fs /dev/xvde1
  19. 最后检查新空间运行df -h

就是这个

祝你好运!

于 2012-07-03T20:52:02.257 回答
7
  1. sudo growpart /dev/xvda 1
  2. 须藤 resize2fs /dev/xvda1

以上两个命令为我节省了 AWS ubuntu ec2 实例的时间。

于 2018-05-17T22:19:46.280 回答
6

这将适用于 xfs 文件系统只需运行此命令

xfs_growfs /
于 2013-02-04T08:15:02.577 回答
6
  1. 登录 AWS Web 控制台 -> EBS -> 鼠标右键单击要调整大小的那个 -> “修改卷” -> 更改“大小”字段并单击 [修改] 按钮

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

这是 Dmitry Shevkoplyas 回答的最简单的版本。AWS 文档未显示该growpart命令。这适用于 ubuntu AMI。

于 2017-05-24T11:39:32.820 回答
5

以防万一有人在这里使用 GCP 谷歌云平台,
试试这个:

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1
于 2019-01-18T10:07:37.677 回答
3

因此,以防万一有人遇到 100% use 遇到这个问题,甚至没有空间运行 growpart 命令(因为它在 /tmp 中创建了一个文件)

这是我发现即使在使用 EBS 卷时也会绕过的命令,并且如果您的 ec2 上没有剩余空间,并且您处于 100%

/sbin/parted ---pretend-input-tty /dev/xvda resizepart 1 yes 100%

在这里看到这个网站:

https://www.elastic.co/blog/autoresize-ebs-root-volume-on-aws-amis

于 2018-05-29T22:03:42.610 回答
3

修改 EBS 的大小后,

列出块设备

sudo lsblk

NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:2    0  10G  0 disk
|-nvme0n1p1 259:3    0   1M  0 part
`-nvme0n1p2 259:4    0  10G  0 part /

展开分区

假设您要扩展安装在 上的第二个分区/

sudo growpart /dev/nvme0n1 2

如果根卷中的所有空间都用完了,并且基本上您无法访问/tmpie 并显示错误消息Unable to growpart because no space left

  1. 临时挂载一个/tmp卷:sudo mount -o size=10M,rw,nodev,nosuid -t tmpfs tmpfs /tmp
  2. 完全调整大小完成后卸载:sudo umount -l /tmp

验证新尺寸

NAME        MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1     259:2    0  20G  0 disk
|-nvme0n1p1 259:3    0   1M  0 part
`-nvme0n1p2 259:4    0  10G  0 part /

调整文件系统的大小

对于 XFS(使用挂载点作为参数)

sudo xfs_growfs /

对于 EXT4(使用分区名称作为参数)

sudo resize2fs /dev/nvme0n1p2

于 2021-02-11T06:47:36.367 回答
2

你在这个卷上做了一个分区吗?如果你这样做了,你将需要首先扩大分区。

于 2012-06-13T15:41:53.440 回答
1

可引导标志 (a) 在我的情况下不起作用(EC2,centos6.5),所以我不得不从快照重新创建卷。重复所有步骤后,除了可启动标志 - 一切都完美无缺,所以我能够在之后调整 2fs 大小。谢谢!

于 2014-02-17T16:04:57.803 回答
1

谢谢@Dimitry,它就像一个魅力,只需稍加改动即可匹配我的文件系统。

来源:http ://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-expand-volume.html#recognize-expanded-volume-linux

然后使用以下命令,替换文件系统的挂载点(必须挂载 XFS 文件系统以调整它们的大小):

[ec2-user ~]$ sudo xfs_growfs -d /mnt
meta-data=/dev/xvdf              isize=256    agcount=4, agsize=65536 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=262144, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 262144 to 26214400

注意 如果您收到 xfsctl failed: Cannot allocate memory 错误,您可能需要更新实例上的 Linux 内核。有关详细信息,请参阅您的特定操作系统文档。如果您收到一个 The filesystem is already nnnnnnn blocks long。没事做!错误,请参阅扩展 Linux 分区。

于 2017-04-17T19:28:41.687 回答
0

没有足够的代表在上面发表评论;但还请注意,如果您从 1 开始,您可能会破坏您的实例;如果您在启动 fdisk 之后在使用“p”列出分区之前点击“u”,这实际上会为您提供正确的开始编号,这样您就不会损坏您的卷。对于centos 6.5 AMI,同样如上所述,2048 对我来说是正确的。

于 2015-03-26T20:57:10.197 回答
0

在名称和数字之间放置空格,例如:

sudo growpart /dev/xvda 1

请注意,设备名称和分区号之间有一个空格。

要扩展每个卷上的分区,请使用以下 growpart 命令。请注意,设备名称和分区号之间有一个空格。

https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/recognize-expanded-volume-linux.html

于 2020-04-05T09:19:25.133 回答