Centos7.x根分区扩容
背景说明
我们在部署好的系统中,随着数据的不断增加, 发现根分区频繁出现满载问题,这种情况下,我们需要对根分区进行扩容。
方案说明
• 使用空闲磁盘扩容到根分区
• 使用空闲的分区扩容到根分区
• 使用卷组剩余的空间
限制条件
• 系统根分区必须为逻辑卷分区
扩容方案
方案1:空闲磁盘扩容到根分区
[root@yuhaohao ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xfc6b642b 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-4194303,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-4194303,默认为 4194303):
将使用默认值 4194303
分区 1 已设置为 Linux 类型,大小设为 2 GiB
# 这里是将磁盘转换为lvm分区
命令(输入 m 获取帮助):T
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):p
磁盘 /dev/sdb:2147 MB, 2147483648 字节,4194304 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfc6b642b
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 4194303 2096128 8e Linux LVM
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
# 创建物理卷
[root@yuhaohao ~]# pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created.
# 扩展新增的物理卷到根分区的卷组中,说明:centos为根分区的卷组名称
[root@yuhaohao ~]# vgextend centos /dev/sdb1
# 将逻辑卷的空间扩展到根分区的空间中,注意:/dev/mapper/centos-root为根分区的文件系统名称,具体可以df -Th查看
[root@yuhaohao ~]# lvextend -l +100%FREE /dev/mapper/centos-root
# 刷新根分区,使扩容的空间生效
[root@yuhaohao ~]# xfs_growfs /dev/mapper/centos-root
方案2:使用空闲的分区扩容到根分区
# 这种场景适用于根分区存在未格式化的分区空间
# 查看当前系统目录分区信息
[root@yuhaohao ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 4.0K 3.9G 1% /dev/shm
tmpfs 3.9G 17M 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/mapper/centos-root 18G 7.5G 10.5G 42% /
/dev/vda1 497M 172M 326M 35% /boot
tmpfs 798M 0 798M 0% /run/user/0
[root@yuhaohao ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 200G 0 disk
├─vda1 252:1 0 500M 0 part /boot
└─vda2 252:2 0 19.5G 0 part
├─centos-root 253:0 0 17.5G 0 lvm /
└─centos-swap 253:1 0 2G 0 lvm [SWAP]
# 这里我们可以看出根文件系统目录大小为18G,系统盘大小为200G。我们需要将系统盘剩余分区全部扩展到根分区使用。
[root@yuhaohao ~]# fdisk /dev/vda
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Command (m for help): n
# 1.下一步选择p
# 2.下一步默认
# 3.下一步默认
# 4.下一步默认
# 5.下一步输入t(这里是修改分区类型)
# 6.下一步输入3
# 7.下一步分输入8e(分区格式)
# 8.下一步输入w保存当前修改
# 加载分区信息,这里我们上面使用fdisk工具只是将分区信息写到磁盘,如果需要mkfs磁盘分区则需要重启系统,而使用partprobe则可以使kernel重新读取分区信息,从而避免重启系统。
[root@yuhaohao ~]# partprobe
# 在创建好的分区中创建物理卷
[root@yuhaohao ~]# pvcreate /dev/vda3
# 查看创建好的物理卷
[root@yuhaohao ~]# pvdisplay
# 将创建好的物理卷加到根分区的卷组中
[root@yuhaohao ~]# vgextend centos /dev/vda3
# 将逻辑卷的空间扩展到根分区的空间中,注意:/dev/mapper/centos-root为根分区的文件系统名称,具体可以df -Th查看
[root@yuhaohao ~]# lvextend -l +100%FREE /dev/mapper/centos-root
# xfs_growfs命令在线调整xfs格式文件系统大小
[root@yuhaohao ~]# xfs_growfs /dev/centos/root
# 查看扩容结果
[root@yuhaohao ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
vda 252:0 0 200G 0 disk
├─vda2 252:2 0 19.5G 0 part
│ ├─centos-swap 253:1 0 2G 0 lvm
│ └─centos-root 253:0 0 197.5G 0 lvm /
├─vda3 252:3 0 180G 0 part
│ └─centos-root 253:0 0 197.5G 0 lvm /
└─vda1 252:1 0 500M 0 part /boot
方案3:使用卷组剩余的空间
# 在实际的情况中,可能存在卷组中还存在未使用的空间,这里可以直接使用卷组的空间,扩容到对应的分区中
[root@yuhaohao~]# vgdisplay
--- Volume group ---
VG Name centos
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 8
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 713.13 GiB
PE Size 4.00 MiB
Total PE 259362
Alloc PE / Size 189440 / 440.00 GiB
Free PE / Size 69922 / 273.13 GiB
VG UUID 9hZe8Z-bRSM-RSlQ-djFU-jrmg-aCrf-yzh3rx
# 上面可以看出,centos卷组还存在273G的未使用空间,这里可以将此部分空间扩容到根分区中。
# 这里待扩容的逻辑卷可以通过df -h看
[root@yuhaohao ~]# lvresize -L +200G /dev/mapper/centos-root
# xfs_growfs命令在线调整xfs格式文件系统大小
[root@yuhaohao ~]# xfs_growfs /dev/centos/root