如何在没有LVM的情况下调整ext2/3/4和xfs root分区的大小

时间:2020-02-23 14:40:19  来源:igfitidea点击:

本教程将向我们展示如何在运行时在没有LVM的情况下扩展或者调整ext2/3/4和XFS文件系统的大小。
这可以是使用Ext2/3/4或者XFS文件系统配置的根分区,但未配置任何LVM。
在我们之前的教程中,我们研究了如何在Linux上使用LVM扩展根文件系统。

第1步:检查当前的root磁盘容量

对于这次演示,我的CentOS 7 VM具有以下分区方案。

$lsblk 
 NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0     11:0    1 1024M  0 rom  
 vda    253:0    0   10G  0 disk 
 └─vda1 253:1    0   10G  0 part /

如从输出所示,根文件系统在没有LVM的情况下on/dev/vda1分区。

第2步:扩展OS根磁盘

我将把根块设备扩展到30GB。
我使用KVM虚拟化技术,因此本教程适用于我:

如何扩展/增加KVM虚拟机(VM)磁盘大小

$sudo virsh domblklist centos7 
 Target   Source
------------------------------------------------
 vda      /var/lib/libvirt/images/centos7.qcow2
 sda      
$sudo fdisk -l /var/lib/libvirt/images/centos7.qcow2
Disk /var/lib/libvirt/images/centos7.qcow2: 10 GiB, 10739318784 bytes, 20975232 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes/512 bytes
I/O size (minimum/optimal): 512 bytes/512 bytes
$sudo qemu-img resize /var/lib/libvirt/images/centos7.qcow2 +20G
Image resized.

如果我们在不同的虚拟化平台上,请参阅其文档,了解如何扩展OS虚拟磁盘。

第3步:生长VM分区

使用sudo权限作为用户启动VM和SSH。
首先要做的是确认新的磁盘大小。

$lsblk 
 NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0     11:0    1 1024M  0 rom  
 vda    253:0    0   30G  0 disk 
 └─vda1 253:1    0   10G  0 part /

我们可以看到磁盘已经增加了20GB,从10GB到30GB。
下一个操作是在我们的示例中展开分区(分区1),到磁盘提供的最大大小。

安装云实用程序

对于那些新的Growpart,它是一个Linux命令行工具,用于扩展分区表中的分区以填充可用空间。
此命令由Cloud Utils包提供。

在Ubuntu/Debian系统上,运行:

sudo apt -y install cloud-guest-utils gdisk

对于CentOS服务器,运行:

sudo yum -y install cloud-utils-growpart gdisk

通过通过帮助页面 -h争论

# growpart -h
growpart disk partition
   rewrite partition table so that partition takes up all the space it can
   options:
    -h | --help       print Usage and exit
         --fudge F    if part could be resized, but change would be
                      less than 'F' bytes, do not resize (default: 1048576)
    -N | --dry-run    only report what would be done, show new 'sfdisk -d'
    -v | --verbose    increase verbosity/debug
    -u | --update  R update the the kernel partition table info after growing
                      this requires kernel support and 'partx --update'
                      R is one of:
                       - 'auto'  : [default] update partition if possible
                       - 'force' : try despite sanity checks (fail on failure)
                       - 'off'   : do not attempt
                       - 'on'    : fail if sanity checks indicate no support
   Example:
    - growpart /dev/sda 1
      Resize partition 1 on /dev/sd

现在使用Growpart扩展分区。

$sudo growpart /dev/vda 1
CHANGED: partition=1 start=2048 old: size=20969472 end=20971520 new: size=62912479,end=62914527

这将在/dev/VDA上调整分区1的大小。

验证更改。

$lsblk 
 NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sr0     11:0    1 1024M  0 rom  
 vda    253:0    0   30G  0 disk 
 └─vda1 253:1    0   30G  0 part /

第4步:调整"/"分区的大小以填充所有空间

最后一步是调整文件系统大小以填补填充空间的一切途径

对于ext4文件系统,请使用Resize2FS

$sudo resize2fs /dev/vda1
resize2fs 1.42.9 (28-Dec-2013)
 Filesystem at /dev/vda1 is mounted on /; on-line resizing required
 old_desc_blocks = 2, new_desc_blocks = 4
 The filesystem on /dev/vda1 is now 7864059 blocks long.

如果文件系统是XFS,则可以使用xfs_growfs命令安装时生长:

sudo xfs_growfs /

使用DF -H确认新尺寸

$df -hT | grep /dev/vda
/dev/vda1      ext4       30G  1.2G   27G   5% /