磁盘不分区直接创建PV的LVM扩容步骤

为了能动态调整磁盘分区大小,在Linux下经常会使用LVM对磁盘进行管理,提供灵活、可伸缩的存储池。创建LVM的基本步骤如下:

  1. 安装LVM
  2. 磁盘分区
  3. 创建物理卷(PV)
  4. 创建卷组(VG)
  5. 创建逻辑卷(LV)
  6. 格式化文件系统
  7. 挂载

然而,现在越来越多人在创建物理卷(PV)之前都不对磁盘分区,直接用整块磁盘创建物理卷(PV),这样是可以正常使用的,只是在后续扩容步骤上有所差异,本文将介绍在磁盘不分区直接创建PV的情况下具体的LVM扩容步骤

演示环境信息


数据盘sdb原大小为25G,未划分磁盘分区,直接用于创建物理卷(PV),卷组(VG)名称为data,逻辑卷(LV)名称为mysql,文件系统为XFS,挂载点为/data/mysql

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@centos7 ~]# lsblk 
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 64G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 63G 0 part /
sdb 8:16 0 25G 0 disk
└─data-mysql 253:0 0 25G 0 lvm /data/mysql
sr0 11:0 1 1024M 0 rom

[root@centos7 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sdb data lvm2 a-- <25.00g 0

[root@centos7 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
data 1 1 0 wz--n- <25.00g 0

[root@centos7 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
mysql data -wi-ao---- <25.00g

[root@centos7 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda2 ext4 62G 1.2G 58G 3% /
devtmpfs devtmpfs 907M 0 907M 0% /dev
tmpfs tmpfs 918M 0 918M 0% /dev/shm
tmpfs tmpfs 918M 8.9M 909M 1% /run
tmpfs tmpfs 918M 0 918M 0% /sys/fs/cgroup
/dev/sda1 ext4 976M 104M 806M 12% /boot
tmpfs tmpfs 184M 0 184M 0% /run/user/0
/dev/mapper/data-mysql xfs 25G 33M 25G 1% /data/mysql

扩容需求


/data/mysql目录扩容到50G

扩容步骤


扩容磁盘

目前各云服务器商或者各类虚拟化软件(例如VMware Workstation、Parallers Desktop)都支持对硬盘进行扩容,具体的操作步骤此处不进行赘述。扩容完成后执行以下命令确认/dev/sdb的大小

1
lsblk

扩容LVM

  1. 执行以下命令扩容物理卷(PV)和卷组(VG)。
1
2
3
4
5
6
7
8
9
# 先测试下是否可以扩容
pvresize -t /dev/sdb

# 如果测试成功,直接执行扩容
pvresize /dev/sdb

# 查看PV和VG的大小是否都变成50G
pvs
vgs
  1. 执行以下命令对mysql逻辑卷(LV)进行扩容,把data卷组(VG)中的所有剩余空间都分配给mysql逻辑卷(LV)
1
2
3
4
5
6
# 查看剩余PE数量
vgdisplay

# 扩容LV,命令中的6400替换为通过vgdisplay查看到的剩余PE数量,加号保留
# lvextend -l +<Free PE> <path_to_lv>
lvextend -l +6400 /dev/data/mysql
  1. 执行以下命令查看mysql逻辑卷大小
1
lvs

扩容文件系统

  1. 执行以下命令查看根分区文件系统类型
1
mount | grep -w /data/mysql
  1. 如果是XFS文件系统执行以下命令扩容文件系统
1
2
# xfs_growfs <mountpoint>
xfs_growfs /data/mysql
  1. 如果是EXT4文件系统执行以下命令扩容文件系统
1
2
# resize2fs <path_to_lv>
resize2fs /dev/data/mysql
  1. 执行以下命令确认是否扩容成功
1
df -hT