概述
正好有时间记录一下怎么对 Linux 根分区进行扩容,此方式适用于目前大多数虚拟化环境,如VMware \ KVM \ PVE \ Citrix\ 新华三 \ 深信服 \ 华为 \ 天融信 。。。等各厂家的虚拟机,物理服务器亦是同样的原理。
为了更加直观,这里我使用了中文语言的Linux系统。
增加扩容硬盘
通过命令 df -h 观察当前磁盘占用情况。
本次记录演示扩容50G。
先关闭虚拟机,然后在VMware Workstation Pro的设置中选择添加一块新的硬盘。
当然也可以在不关机的情况下增加硬盘,添加好硬盘之后在操作系统内执行以下命令即可发现新增加的硬盘,同时建议使用 "精简置备" 硬盘模式。
ls /sys/class/scsi_host/
echo "- - -" > /sys/class/scsi_host/host0/scan
echo "- - -" > /sys/class/scsi_host/host1/scan
echo "- - -" > /sys/class/scsi_host/host2/scan
ls /sys/class/scsi_device/
echo 1 > /sys/class/scsi_device/0\:0\:0\:0/device/rescan
echo 1 > /sys/class/scsi_device/2\:0\:0\:0/device/rescan
配置分区
随后通过命令 lsblk
可以发现多了一个分区 sda(原来只有nvme0n1)
sda进行分区操作
[root@localhost ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.37.4)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
设备不包含可识别的分区表。
创建了一个磁盘标识符为 0x02c33d3c 的新 DOS 磁盘标签。
命令(输入 m 获取帮助):n
分区类型
p 主分区 (0 primary, 0 extended, 4 free)
e 扩展分区 (逻辑分区容器)
选择 (默认 p):p
分区号 (1-4, 默认 1):
第一个扇区 (2048-104857599, 默认 2048):
最后一个扇区,+/-sectors 或 +size{K,M,G,T,P} (2048-104857599, 默认 104857599):
创建了一个新分区 1,类型为“Linux”,大小为 50 GiB。
命令(输入 m 获取帮助):p
Disk /dev/sda:50 GiB,53687091200 字节,104857600 个扇区
磁盘型号:VMware Virtual S
单元:扇区 / 1 * 512 = 512 字节
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x02c33d3c
设备 启动 起点 末尾 扇区 大小 Id 类型
/dev/sda1 2048 104857599 104855552 50G 83 Linux
命令(输入 m 获取帮助):w
分区表已调整。
将调用 ioctl() 来重新读分区表。
正在同步磁盘。
再次观察发现有了sda1分区
查看根分区的文件系统类型
[root@localhost ~]# parted -l
型号:VMware, VMware Virtual S (scsi)
磁盘 /dev/sda:53.7GB
扇区大小 (逻辑/物理):512B/512B
分区表:msdos
磁盘标志:
编号 起始点 结束点 大小 类型 文件系统 标志
1 1049kB 53.7GB 53.7GB primary
型号:VMware Virtual NVMe Disk (nvme)
磁盘 /dev/nvme0n1:107GB
扇区大小 (逻辑/物理):512B/512B
分区表:msdos
磁盘标志:
编号 起始点 结束点 大小 类型 文件系统 标志
1 1049kB 1075MB 1074MB primary xfs 启动
2 1075MB 107GB 106GB primary lvm
格式化sda1
[root@localhost ~]# mkfs.xfs /dev/sda1
meta-data=/dev/sda1 isize=512 agcount=4, agsize=3276736 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=13106944, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6399, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none
查看卷组信息(记住LV Path 和 VG Name)
开始扩容
创建pv并加入卷组
[root@localhost ~]# pvcreate /dev/sda1
WARNING: xfs signature detected on /dev/sda1 at offset 0. Wipe it? [y/n]: y
Wiping xfs signature on /dev/sda1.
Physical volume "/dev/sda1" successfully created.
[root@localhost ~]#
[root@localhost ~]# vgextend rhel /dev/sda1
Volume group "rhel" successfully extended
查看卷组信息 (记住Free PE)
把所有空间分配给根分区
[root@localhost ~]# lvextend -l +12799 /dev/rhel/root
Size of logical volume rhel/root changed from 61.24 GiB (15678 extents) to <111.24 GiB (28477 extents).
Logical volume rhel/root successfully resized.
最后是文件系统的扩容
[root@localhost ~]# xfs_growfs /dev/rhel/root
meta-data=/dev/mapper/rhel-root isize=512 agcount=4, agsize=4013568 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1
data = bsize=4096 blocks=16054272, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=7839, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 16054272 to 29160448
核对验证
可以见到,从原来的57GB扩容到了现在的107GB,扩大了50GB至根目录。