扩容数据盘(Linux

随着业务的增长,您的磁盘容量可能无法满足数据存储的需要,这时您可以扩容磁盘。

本文档介绍的方法只适用于数据盘

扩容须知

扩容前

  • 建议在扩容磁盘之前 手动创建快照,以备份数据。

    wKioL1fBCOOyKT_yAADeLwgDvxc405.png

    wKiom1fBCO_RMjuJAABVystIjQ0889.png

创建完成后,可以查看到,这样后面操作出现问题,可以回滚

wKioL1fBCQjxJ5ZqAAAn4GCQGuE340.png

  • 磁盘上如果正在执行创建快照的操作,则此时不允许进行扩容操作。

  • 只做磁盘容量的扩容,不做文件系统的扩容。

  • 支持普通盘的扩容,不支持本地盘(本地磁盘、本地 SSD 盘)的扩容。

  • 挂载在实例上的数据盘,只有实例 运行中 (Running) 或者 已停止 (Stopped) 状态时,才可以进行扩容操作。

扩容后

  • 使用 ECS 控制台或者 Open API 扩容磁盘之后,需要在 ECS 控制台或者使用 Open API 重启实例之后才可以生效。

  • 扩容生效之后的磁盘,仍然需要用户手动格式化扩展的存储空间。

操作步骤

本文档以 Centos6.5系统为例,介绍如何进行磁盘扩容。其他 Linux 系统的操作相似。

本实例中,选定最初的磁盘大小为 63 GB,我们将其扩容到 70 GB。

  1. 登录 云服务器管理控制台

  2. 单击左侧导航中的 实例。然后选择页面顶部的地域。

  3. 首先进入磁盘列表页面,点击 更多 > 磁盘扩容。注意只有 数据盘 才有该选项。对于 系统盘, 需要通过 更换系统盘 的方式进行扩容。 
    wKiom1fBCUvgJxc8AAC1EX4RDB4081.png

  4. 进入扩容页后,填写扩容后的磁盘容量大小,单击 去扩容 
    wKioL1fBCV7wSBCOAABHMex1Qek024.png

  5. 重启服务器。进入实例列表页面,点击 更多,选择 重启 
    wKiom1fBCXSjBzHBAAEJenq3zjQ746.png

  6. 登录到 ECS 实例。

  7. 如果磁盘是之前是 mount 在服务器上的,先 umount 磁盘。

1.   umount /mnt

          umount: /data: device is busy.

                  (In some cases useful info about processes that use

                   the device is found by lsof(8) or fuser(1))

          这时只能强制umount

  2. umount -lf /mnt

8.   删除原有分区并新建分区。如果此前未分区,直接格式化使用。

有些用户使用 parted 工具来操作分区,但是 parted 和 fdisk 不能交叉使用的,否则会导致分区的起始扇区不一致的问题。因此删除原有分区建新分区的时候,请按照如下步骤进行操作:

1). 使用 fdisk -l 罗列一下分区信息并记录一下即将扩容磁盘的最终容量、起始扇区位置。

2). 使用 fdisk 指令,输入 d 来删除原有的分区。

3). 依次输入 np1 来新建分区。

4). 选择 sector 时,在此示例中直接回车选择默认值,您也可以按照自己的需求来选择。为了保证数据的一致性,First sector 建议和之前的分区保持一致。


下面是使用 fdisk的示例:

    #fdisk /dev/xvdb

            Command (m for help): d
            Selected partition 1

            Command (m for help): n 
            Command action
           e   extended
           p   primary partition (1-4)
        p
            Partition number (1-4): 1
            First cylinder (1-130541, default 1):
            Using default value 1
            Last cylinder, +cylinders or +size{K,M,G} (1-130541, default 130541):
            Using default value 130541

            Command (m for help): wq
            The partition table has been altered!

            Calling ioctl() to re-read partition table.

在操作过程中出现下面告警,需要重启

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

    #reboot

如果在 First sector 这发现位置和之前记录的不一致,说明之前可能使用了 parted 来分区的,那么就停止当前的 fdisk 操作,使用 parted 重新操作。使用 parted 指令,输入p罗列当前的分区情况,如有则使用 rm+ 序列号来删除老的分区表,然后使用 unit s 定义起始位置单位使用扇区个数计量,最后使用 mkpart 命令来创建即可,如下图所示。

wKiom1fBCLKxdF3HAALSufCRGB0074.png

9. 检查文件系统,并变更文件系统大小。

使用 e2fsck 的时候由于系统需要检查并订正文件系统元数据,所以速度较慢、耗时较长,请耐心等待。

使用 e2fsck 和 resize2fs 指令,正确操作情况下,不会造成原有数据丢失的。

     #e2fsck -f /dev/xvdb1

     #resize2fs /dev/xvdb1

10. 将扩容完毕的磁盘挂载回原有的挂载点。

    #mount /dev/xvdb1 /mnt

        用 df -TH 指令可以查看到磁盘的信息。

   #df -TH

        Filesystem     Type      Size  UsedAvailUse%Mounted on
        /dev/xvda1     ext4       22G  1.4G   19G   7%/
        udev           devtmpfs  510M  4.1k  510M   1%/dev
        tmpfs          tmpfs     105M  381k  104M   1%/run
        none           tmpfs     521M     0  521M   0%/run/shm
        /dev/xvdb1     ext4       74G   55M   71G   1%/mnt

遇到的问题:

1、       数据盘umount不了,强制umount

umount: /mnt: device is busy.

 (In some cases useful info about processes that use  the device is found by lsof(8) or fuser(1))

     #umount -lf /mnt

2、       分区后,不能更新分区表,需要重启

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

     按照提示执行partprobe解决不了,要重启

    # partprobe

Warning: WARNING: the kernel failed to re-read the partition table on /dev/xvda (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

Warning: WARNING: the kernel failed to re-read the partition table on /dev/xvdb (Device or resource busy).  As a result, it may not reflect all of your changes until after reboot.

    #reboot

3、       分区后,更新分区表没有更新至内核,检查文件系统命令不能执行

由于第二步分区表没有成功更新

e2fsck -f /dev/xvdb1

e2fsck 1.41.12 (17-May-2010)

/dev/xvdb1 is in use.

e2fsck: Cannot continue, aborting.

要据上面分区的提示,使用partprobe命令刷新分区表,还是不行,重启后就OK。

 

相关阿里云帮助文档参考:

https://help.aliyun.com/document_detail/25452.html?spm=5176.doc35095.2.2.KtAyxz