自学内容网 自学内容网

Linux非LVM磁盘分区及文件系统在线扩容

Linux非LVM磁盘分区及文件系统在线扩容

本文主要针对已经格式化并在使用的分区和文件系统进行扩容,对于新建分区并格式化使用,本文不做介绍。

这里的在线扩容指的是磁盘分区不需要umount,可以不影响业务进行在线扩容,适用于系统盘和数据盘在非LVM管理下的在线扩容场景。

安装gdisk和growpart工具

# centos
yum install -y cloud-utils-growpart gdisk  xfsprogs

# ubuntu
sudo apt install cloud-guest-utils gdisk xfsprogs

说明

  • cloud*为分区扩容工具,必须安装。
  • GPT分区扩容需要安装gdisk,根据分区类型选择是否安装,如果是mbr分区扩容不需要安装。
  • xfs文件系统扩容需要安装xfsprogs,根据文件系统类型选择是否安装。

扩容系统盘根分区

# 根分区容量利用率较高,需要扩容
root@gitlab-devops:~# df -Th /
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/vda2      ext4   40G   35G  2.3G  94% /

# 根分区挂载到/dev/vda2分区
root@gitlab-devops:~# fdisk -l /dev/vda
GPT PMBR size mismatch (83886079 != 209715199) will be corrected by write.
The backup GPT table is not on the end of the device. This problem will be corrected by write.
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 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
Disklabel type: gpt
Disk identifier: 3940CBD5-5143-4D9C-87F8-58A68F7E7A2D

Device     Start      End  Sectors Size Type
/dev/vda1   2048     4095     2048   1M BIOS boot
/dev/vda2   4096 83884031 83879936  40G Linux filesystem

# 虚拟机环境,将vda磁盘改为100G。并使用growpart扩容分区
root@gitlab-devops:~# growpart /dev/vda 2
CHANGED: partition=2 start=4096 old: size=83879936 end=83884032 new: size=209711071 end=209715167

# 检查分区扩容成功
root@gitlab-devops:~# fdisk -l /dev/vda2
Disk /dev/vda2: 99.102 GiB, 107372068352 bytes, 209711071 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
root@gitlab-devops:~# fdisk -l /dev/vda
Disk /dev/vda: 100 GiB, 107374182400 bytes, 209715200 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
Disklabel type: gpt
Disk identifier: 3940CBD5-5143-4D9C-87F8-58A68F7E7A2D

Device     Start       End   Sectors  Size Type
/dev/vda1   2048      4095      2048    1M BIOS boot
/dev/vda2   4096 209715166 209711071  100G Linux filesystem

说明

  • 如果单盘有多个连续分区的情况,仅能扩容最后一个分区。例如数据盘/dev/vdb有三个分区/dev/vdb1/dev/vdb2/dev/vdb3。扩容时,只能扩容最后一个分区/dev/vdb3,即执行growpart /dev/vdb 3命令即可完成数据盘的分区扩容。
  • 如果是NVMe类型云盘,以分区名称/dev/nvme0n1p1为例,其中/dev/nvme0n1是设备名称。扩容时执行命令为growpart /dev/nvme0n1 1,而不是growpart /dev/nvme0n1p1 1
  • 如果您需要扩容的云盘分区是MBR分区表下的扩展分区(通常判断方式是分区号大于等于5),您需要先对扩展分区扩容后再对逻辑分区进行扩容。例如您有/dev/vdb1(主分区)、/dev/vdb2(扩展分区)、/dev/vdb5(逻辑分区)三个分区,此时您需要依次执行growpart /dev/vdb 2growpart /dev/vdb 5完成分区的扩容。
  • 使用growpart工具时,如果出现报错信息,请参见常见问题进行排查。

扩容文件系统

根据不同的文件系统类型选择相应的命令:

# ext*文件系统扩容
resize2fs /dev/vda2

# xfs文件系统扩容,后面跟文件系统挂载点
xfs_growfs /

# btrfs文件系统扩容,后面跟文件系统挂载点
btrfs filesystem resize max /mnt

如下为ext4文件系统扩容:

root@gitlab-devops:~# resize2fs /dev/vda2
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/vda2 is mounted on /; on-line resizing required
old_desc_blocks = 5, new_desc_blocks = 13
The filesystem on /dev/vda2 is now 26213883 (4k) blocks long.

# 查看扩容成功
root@gitlab-devops:~# df -Th /
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/vda2      ext4   99G   35G   59G  38% /

相关资料

  1. 在Linux操作系统内扩容分区和文件系统_云服务器 ECS(ECS)-阿里云帮助中心
  2. 离线扩容分区和文件系统(Linux数据盘)_云服务器 ECS(ECS)-阿里云帮助中心
  3. 使用fdisk扩容新分区起始位置无法与扩容前保持一致如何解决-阿里云帮助中心

原文地址:https://blog.csdn.net/codelearning/article/details/143954182

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!