EC2增加尺寸后无法调整音量大小

时间:2012-06-13 12:13:40

标签: amazon-ec2 centos volume image-resizing snapshot

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

  1. 停止了实例
  2. 获取当前音量的快照
  3. 使用相同区域中较大尺寸的上一个快照创建新卷
  4. 从实例中删除旧卷
  5. 将新卷附加到同一安装点的实例
  6. 旧卷为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相同的数据,但我不知道如何使用它

    如何使用新卷或卸载xvde1并挂载xvde?

    我无法理解我做错了什么

    我也试过sudo ifs_growfs /dev/xvde1

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

    顺便说一下,这是一个带有centos 6.2 x86_64

    的linux盒子

    提前感谢您的帮助

15 个答案:

答案 0 :(得分:225)

无需停止实例并分离EBS卷以重新调整大小!

2017年2月13日亚马逊宣布:“Amazon EBS Update – New Elastic Volumes Change Everything

即使要扩展的卷是正在运行的实例的根卷,该过程仍然有效!

<小时/> 假设我们希望将Ubuntu的启动驱动器从8G增加到16G“即时”
步骤1)登录AWS Web控制台 - &gt; EBS - &gt;右键单击要调整大小的那个 - &gt; “修改音量” - &gt;更改“尺寸”字段,然后单击[修改]按钮

  

enter image description here

     

enter image description here

     

enter image description here

<小时/> 步骤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与删除/重新创建分区一起使用,这是一个令人讨厌,冒险,容易出错的过程,尤其是在我们更改启动驱动器时。

<小时/> 步骤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% /

因此我们没有停机时间和大量新空间 享受!

答案 1 :(得分:67)

感谢Wilman你的命令正常工作,如果我们将EBS增加到更大的尺寸,需要考虑小的改进

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

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

  10. 点击 p 显示当前分区

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

答案 2 :(得分:31)

以上jperelli的完美评论。

我今天遇到了同样的问题。 AWS文档没有明确提到growpart。我找到了困难的方法,事实上这两个命令在M4.large&amp; M4.xlarge与Ubuntu

sudo growpart /dev/xvda 1
sudo resize2fs /dev/xvda1

答案 3 :(得分:16)

[解决]

这是必须要做的事情

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

    这就是它

    祝你好运!

答案 4 :(得分:6)

  1. 登录AWS Web控制台 - &gt; EBS - &gt;右键单击要调整大小的那个 - &gt; “修改音量” - &gt;更改“大小”字段,然后单击[修改]按钮

  2. growpart /dev/xvda 1

  3. resize2fs /dev/xvda1

  4. 这是Dmitry Shevkoplyas回答的一个追逐版本。 AWS文档未显示growpart命令。这适用于ubuntu AMI。

答案 5 :(得分:6)

  1. sudo growpart / dev / xvda 1
  2. sudo resize2fs / dev / xvda1
  3. 以上两个命令为AWS ubuntu ec2实例节省了我的时间。

答案 6 :(得分:2)

您是否在此卷上创建了分区?如果您这样做,则需要首先扩展分区。

答案 7 :(得分:2)

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

sudo growpart /dev/sdb 1
sudo resize2fs /dev/sdb1

答案 8 :(得分:2)

一旦您修改了 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

如果根卷中的所有空间都已用完,并且基本上无法访问 /tmp,即出现错误消息 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

答案 9 :(得分:1)

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

xfs_growfs /

答案 10 :(得分:1)

可启动标志(a)在我的情况下没有用(EC2,centos6.5),所以我不得不从快照重新创建卷。  重复所有步骤后除了可启动标志 - 一切都运行良好,所以我能够resize2fs之后。  谢谢!

答案 11 :(得分:0)

上面没有足够的代表发表评论;但是请注意,根据上面的评论,如果从1开始,你可以破坏你的实例;如果你点击“你好”。在使用&#39; p&#39;列出分区之前启动fdisk之后这将为您提供正确的起始编号,这样您就不会破坏您的卷。对于6.5 AM AMI,也如上所述2048对我来说是正确的。

答案 12 :(得分:0)

谢谢,@ 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失败:无法分配内存错误,则可能需要更新实例上的Linux内核。有关更多信息,请参阅特定的操作系统文档。 如果你收到一个文件系统已经是nnnnnnn块长。没事做!错误,请参阅扩展Linux分区。

答案 13 :(得分:0)

所以在案例中,任何人都有问题,他们在100%使用时遇到了这个问题,甚至没有空间来运行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

答案 14 :(得分:0)

在名称和数字之间插入空格,例如:

sudo growpart /dev/xvda 1

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

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

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