【问题标题】:EC2 Can't resize volume after increasing sizeEC2 增加大小后无法调整卷大小
【发布时间】:2012-06-16 09:26:26
【问题描述】:

我已按照调整 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?​​p>

我不明白我做错了什么

我也试过sudo ifs_growfs /dev/xvde1

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

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

提前感谢您的帮助

【问题讨论】:

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


    【解决方案1】:

    修改 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

    【讨论】:

      【解决方案2】:

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

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

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


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

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


      步骤 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。

      【讨论】:

      • 调整分区大小很有帮助....!!最美妙的是它甚至适用于根卷。
      • 有人会接受这个作为正确答案吗?只是因为......它是。
      • 很好,非常感谢......我对执行上述答案中提到的步骤持怀疑态度,但这太酷了......
      • 呵呵,官方文档没有提到growpart,这就是为什么我之前不能让它工作的原因。谢谢!
      • @Shihas,是的。这就是重点。即使是可启动的“根”安装驱动器也可以安全地增加而无需重新启动!
      【解决方案3】:

      姓名和号码之间加空格,例如:

      sudo growpart /dev/xvda 1
      

      注意设备名和分区号之间有空格。

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

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

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

        • 你知道如果它不增长为什么会发生吗?我在 2 台机器上执行了此操作,每台机器都有一个辅助磁盘(找到一个包含此信息的帖子),其中 1 个磁盘增长但另一个没有。
        【解决方案5】:

        所以万一有人遇到这个问题,他们在 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

        【讨论】:

        • 这个命令后面应该跟sudo resize2fs /dev/xvda1更新/etc/fstab,只有在df -h之后才会显示增长的磁盘空间
        【解决方案6】:
        1. sudo growpart /dev/xvda 1
        2. sudo resize2fs /dev/xvda1

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

        【讨论】:

          【解决方案7】:

          上面 jperelli 的完美评论。

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

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

          【讨论】:

          • 附加的第二个答案,这个答案是调整大小
          • 太棒了!在我的 t2.small 实例上工作。唷。以为会比这更血腥。谢谢!
          • 我似乎无法安装包含 growpart 的 cloud-guest-utils。 Linux 版本 3.16.0-4-amd64
          • 我遇到了同样的问题,但运行 sudo resize2fs /dev/xvda1 现在它反映了谢谢
          【解决方案8】:
          1. 登录 AWS Web 控制台 -> EBS -> 右键单击​​要调整大小的那个 -> “修改音量” -> 更改“大小”字段并单击 [修改] 按钮

          2. growpart /dev/xvda 1

          3. resize2fs /dev/xvda1

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

          【讨论】:

            【解决方案9】:

            谢谢@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 分区。

            【讨论】:

              【解决方案10】:

              感谢 Wilman,您的命令正常运行,如果我们将 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

              【讨论】:

              • "警告:DOS 兼容模式已弃用。强烈建议关闭模式(命令'c')并将显示单位更改为扇区(命令'u')" i> 这对我来说不是必需的(Ubuntu 13.04)。它已经关闭了 DOS 兼容性并默认使用扇区。按cu 实际上切换到不推荐使用的模式。
              • 该解决方案运行良好,但实例卡在“1/2 检查通过”并带有感叹号(ReadHat 6.5)。为了解决这个问题,我将 "first cylinder" 设置为 16(就像以前一样)。之后,实例以“2/2 检查通过”正常启动。希望这可以帮助某人...
              • 我也必须更改第一个柱面,但我必须将其更改为 2048。我建议在删除之前检查您当前的分区设置。
              • 重启实例后,我无法通过 SSH 连接。连接超时并且 aws 控制台显示它无法启动其状态检查。我认为它已经死了。知道该怎么做吗?
              • 这个答案现在已被弃用,因为 AWS 支持 EBS 卷的在线调整大小。
              【解决方案11】:

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

              【讨论】:

                【解决方案12】:

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

                【讨论】:

                  【解决方案13】:

                  [已解决]

                  这是必须要做的事情

                  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

                  就是这样

                  祝你好运!

                  【讨论】:

                  • 在 Amazon EBS 卷中,在 resize2fs 中使用与 fdisk 相同的挂载点似乎很重要。 df 显示 /dev/xvda1 之类的东西作为附加的 EBS 卷,但是 resize2fs 命令仅在我使用 /dev/sdf1 标识符时才对我有用,我在 fdisk 中创建新分区时使用了该标识符。
                  • 这在 AWS 文档中。糟糕的是,经过 3 年的时间,他们的程序仍然不完整。如果你有一个图像,你可以回退,当然。总是可以从运行桌面的实例中临时挂起新磁盘,但是如果您正在考虑使用 gparted,则需要挂载它以调整大小可能是个问题。 gcloud 即时调整大小。
                  • 我的存储设备 (/dev/xvda1) 从扇区 16065 开始,而不是扇区 1。所以在我的情况下,第 13 步(点击 1 设置第一个柱面)必须是 16065。
                  • 不要使用这些解决方案,您可能会丢失数据。实际上,如果在分区表中显示分区列表值,我发现不要选择删除分区选项,因为如果列表在那里,那么它实际上会删除分区,所以即使答案说“它不会删除”。有一种方法可以扩展分区大小,在底部检查是否有其他实用程序可以帮助您顺利扩展分区大小。
                  【解决方案14】:

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

                  xfs_growfs /
                  

                  【讨论】:

                  • 让我的一天...myWEEK!
                  • 也保存了我的“WEEK”
                  【解决方案15】:

                  您是否在此卷上进行了分区?如果你这样做了,你需要先扩大分区。

                  【讨论】:

                  • 不,我没有。我应该吗?我该怎么做?请记住,我附加的这个新卷应该包含以前的所有数据,因为它是原始卷的快照
                  • 没有。但是,如果附加了分区,我会收到该错误。去仔细检查你是否使卷大小正确,并仔细检查你安装了新卷。
                  • 另外,您不必停止实例来执行此操作。如果您对该卷进行写入是安全的,但您可以在实例运行时对其进行快照。
                  猜你喜欢
                  • 2023-03-21
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 2015-09-23
                  • 2010-12-02
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多