文档中心 > 扩展Linux系统盘分区和文件系统
扩展Linux系统盘分区和文件系统

最近更新时间:2022-02-09

对于Linux操作系统,在控制台扩容后,需要将扩容部分的容量划分至原有分区内,或者为扩容部分的云硬盘分配新的分区。

对于扩容前系统盘只有一个分区(例如/dev/vda1)的情况,扩容后,如果重启了云主机实例,则扩容的容量会自动加入到当前分区(/dev/vda1)中,您可以直接使用扩容后的容量。

对于扩容前系统盘存在多个分区(例如/dev/vda1、/dev/vdb2)或者只有一个分区(例如/dev/vda1)但扩容后不重启实例的情况下,您可以参考如下步骤进行操作。

本文以CentOS 7.5 64位操作系统和CentOS 6.5 64位操作系统为例进行介绍。

扩容容量划分至原有分区

准备工作

本示例以数据盘“/dev/vda”原有容量40GB,有1个分区“/dev/vda1”为例,将数据盘容量扩大至50GB,将新增的10GB划分至已有的MBR分区“/dev/vda1”内。

操作步骤

  1. 登录Linux实例

  2. 运行如下命令,安装growpart扩容工具。

    yum install cloud-utils-growpart

    如果执行后回显为工具使用介绍,则表示已经安装,无需重复安装。

  3. 运行如下命令,查看Linux操作系统内核版本。

    uname -a

    内核版本不同,需要进行的操作也不同。

    • 当内核版本高于3.6.0时(例如Linux CentOS 7.5 64位系统),不需要重启实例即可完成扩容,具体操作请参见“扩容容量划分至原有分区(内核版本高于3.6.0)”。

      高内核版本以Linux CentOS 7.5 64位操作系统为例,回显信息如下:

      版本号为3.1.10,高于3.6.0。

    • 当内核版本低于3.6.0时(例如Linux CentOS 6.5 64位系统),需要执行reboot命令重启实例才能完成扩容,具体操作请参见“扩容容量划分至原有分区(内核版本低于3.6.0)”。

      低内核版本以CentOS 6.5 64位操作系统为例,回显信息如下:

      版本号为2.6.32,低于3.6.0。

扩容容量划分至原有分区(内核版本高于3.6.0)

  1. 运行如下命令,查看系统盘“/dev/vda”的总容量。

    fdisk -l

    回显信息如下,表示“/dev/vda”的总容量已变为扩容后的容量。

  2. 运行如下命令,查看系统盘分区“/dev/vda1”的容量和文件系统格式。

    df -TH

    回显信息如下,表示“/dev/vda1”的容量仍为扩容前的容量,文件系统格式为xfs。

  3. 运行如下命令,调用growpart为需要扩容的云硬盘和对应的第几个分区扩容。

    growpart [磁盘名称] [分区编号]

    本例中,指定系统盘分区“/dev/vda1”。磁盘名称为“/dev/vda”,分区编号为1:

    growpart /dev/vda 1

    回显信息如下:

  4. 对磁盘分区进行扩容。

    • 当文件系统为ext*类型时,运行如下命令:

      resize2fs [分区名称]

      例如,对/dev/vda1进行扩容:

      resize2fs /dev/vda1

    • 当文件系统为xfs类型时,运行如下命令:

      xfs_growfs [分区名称]

      例如,对/dev/vda1进行扩容:

      xfs_growfs /dev/vda1

    本示例中,“/dev/vda1”分区的文件系统类型为xfs,回显信息如下,表示扩容完成。

  5. 运行df -TH命令,查看是否扩容成功。

    回显信息如下,“/dev/vda1”分区的容量已变为扩容后的容量,扩容成功。


扩容容量划分至原有分区(内核版本低于3.6.0)

  1. 运行如下命令,重新生成initramfs文件。

    dracut -f

  2. 运行如下命令,查看系统盘“/dev/vda”的总容量。

    fdisk -l

    回显信息如下,表示“/dev/vda”的总容量已变为扩容后的容量。

  3. 运行如下命令,查看系统盘分区“/dev/vda1”的容量和文件系统格式。

    df -TH

    回显信息如下,表示“/dev/vda1”的容量仍为扩容前的容量,文件系统格式为ext4。

  4. 运行如下命令,调用growpart为需要扩容的云硬盘和对应的第几个分区扩容。

    growpart [磁盘名称] [分区编号]

    本例中,指定系统盘分区“/dev/vda1”。磁盘名称为“/dev/vda”,分区编号为1:

    growpart /dev/vda 1

    回显信息如下:

  5. 运行reboot命令,重启云主机实例。

    重启完成后,重新登录云主机实例,并执行以下操作。

  6. 对磁盘分区进行扩容。

    • 当文件系统为ext*类型时,运行如下命令:

      resize2fs [分区名称]

      例如,对/dev/vda1进行扩容:

      resize2fs /dev/vda1

    • 当文件系统为xfs类型时,运行如下命令:

      xfs_growfs [分区名称]

      例如,对/dev/vda1进行扩容:

      xfs_growfs /dev/vda1

    本示例中,“/dev/vda1”分区的文件系统类型为ext4,回显信息如下,表示扩容完成。

  7. 运行df -TH命令,查看是否扩容成功。

    回显信息如下,“/dev/vda1”分区的容量已变为扩容后的容量,扩容成功。

扩容容量格式化为新分区

将扩容部分的容量格式化为新的MBR分区,相当于在原有磁盘中新建一个MBR分区。

本示例以数据盘“/dev/vda”原有容量40GB,有1个分区“/dev/vda1”为例,将数据盘容量扩大至50GB,将新增的10GB划分至新的MBR分区“/dev/vda2”内。

操作步骤

  1. 登录Linux实例。

  2. 运行如下命令,查看当前磁盘分区情况。

    lsblk

    回显信息如下,表示“/dev/vda”的总容量已变为扩容后的容量。

  3. 运行如下命令,对新增数据盘执行分区操作。

    fdisk [新增数据盘]

    以新挂载的数据盘“/dev/vda”为例:

    fdisk /dev/vda

    回显信息如下:

  4. 输入“n”,按“Enter”,创建新的分区。

    磁盘有两种分区类型:

    • "p”表示主分区。

    • "e”表示扩展分区。

  5. 以创建一个主分区为例,输入“p”,按“Enter”,开始创建一个主分区。

  6. 输入分区编号。

    以分区编号选择“2”为例,输入主分区编号“2”,按“Enter”。

  7. 输入新建分区的初始磁柱值,按“Enter”。

    系统会自动提示新分区可用空间的起始磁柱值和截止磁柱值,可以输入此区间内的值,或者使用默认值。

    以选择默认初始磁柱编号为例,输出如下回显信息:

  8. 输入截止磁柱值,按“Enter”。

    系统会自动提示新分区可用空间的起始磁柱值和截止磁柱值,可以输入此区间内的值,或者使用默认值。

    以选择默认截止磁柱编号为例。输出如下回显信息,表示分区完成,即为10G的扩容容量新建了1个分区。

  9. 输入“p”,按“Enter”,查看新建分区的详细信息。

    输出如下回显信息,表示新建分区“/dev/vda2”的详细信息。

  10. 输入“w”,按“Enter”,将分区结果写入分区表中。

    输出如下回显信息。

  11. 运行如下命令,将新的分区表同步至操作系统。

    partprobe

  12. 运行如下命令,格式化文件系统为所需格式。

    mkfs -t [文件系统格式] [新建分区]

    以文件格式为EXT4为例:

    mkfs -t ext4 /dev/vda2

    回显信息如下:

    如果需要设置为xfs文件系统的,请执行命令:mkfs -t xfs /dev/vda2。

  13. 手动挂载磁盘分区


    说明:

    手动挂载硬盘后,每次重启系统都需要重新挂载。您可以修改“/etc/fstab”文件,将新建磁盘分区设置为开机自动挂载,参考步骤“开机自动挂载磁盘分区”。



    1. 运行如下命令,创建挂载点。

      mkdir [挂载点]

      例如,创建挂载点“/guazai”:

      mkdir /guazai

    2. 运行如下命令,将新建分区挂载至创建的挂载点。

      mount [新建分区] [挂载点]

      例如,将新建分区“/dev/vda2”挂载至挂载点“/guazai”:

      mount /dev/vda2 /guazai

    3. 运行df -TH命令,查看是否挂载成功。

      回显信息如下,表示挂载成功。

  14. 开机自动挂载磁盘分区

    1. 运行如下命令,查看新创建分区的UUID和TYPE。

      blkid [新建分区]

      以新建分区“/dev/vda2”为例,回显信息如下:

      请记录新建分区的UUID。

    2. 运行vi /etc/fstab命令,配置自动挂载。

    3. 输入i,进入编辑模式。

    4. 将光标移至文件末尾,按Enter,添加如下内容。

      UUID=77d446cb-b852-48b6-8c50-bdb41faf0284 /guazai ext4 defaults 0 2

      本示例仅为举例,请以实际情况为准。各字段说明如下:

      • UUID:即上一步骤中查到的UUID。

      • 挂载点:即磁盘挂载点,可以通过df -TH命令查询,本示例中为/guazai。

      • 文件系统格式:可以通过df -TH命令查询,本示例中为ext4。

      • 磁盘分区挂载选项:此处设置为defaults即可。

      • Linux dump备份选项:0表示不使用Linux dump备份,1表示使用Linux dump备份。通常设置为0,即不使用Linux dump备份。

      • fsck选项:即开机时是否使用fsck检查磁盘。0表示不检查,根目录使用1,其他分区从2开始。

    5. Esc,输入:wq,按Enter,保存退出。

    6. 运行reboot命令,重启虚拟机。重启前请先保存数据,以免丢失。

    7. 运行df -TH命令,查看是否挂载成功。

      如下回显说明“/dev/vda2”已经自动挂载到挂载点“/guazai”。