LVM(逻辑卷管理)是一种灵活的磁盘管理工具,允许对多个物理磁盘或分区进行逻辑卷的创建、扩展、缩小等操作。在进行LVM扩容时,可能会出现容量没有变化的情况,这可能与以下原因有关:
没有更新文件系统:LVM扩容后,需要在逻辑卷上重新调整文件系统大小。如果没有更新文件系统,文件系统大小将仍然保持原来的大小,即使LVM逻辑卷已经扩展了容量。要更新文件系统,需要使用特定的命令(例如resize2fs、xfs_growfs等),这些命令会重新调整文件系统大小以匹配逻辑卷的新大小。
扩展了物理卷而非逻辑卷:另一个常见的问题是在扩展LVM时,扩展了物理卷而不是逻辑卷。如果扩展了物理卷但没有扩展逻辑卷,那么逻辑卷的容量将保持不变。要扩展逻辑卷,需要使用lvextend命令,并指定逻辑卷名称和扩展的大小。
没有重启系统:在某些情况下,扩展逻辑卷后,需要重启系统才能正确地更新逻辑卷的大小。在重启系统后,逻辑卷的容量应该会正确显示。
通过VMware设置增加了20G磁盘容量,虚拟机里通过fdisk -l
查看,分区并没有充分利用新增的空间
[root@192 ~]# fdisk -l
Disk /dev/sda: 26.8 GB, 26843545600 bytes, 52428800 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
Disk label type: dos
Disk identifier: 0x000b9db8
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 16777215 7339008 8e Linux LVM
如果想看分区逻辑关系的话,可以通过lsblk -f
查看
[root@192 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 753f3866-9276-49fa-a04e-3d0f840d2898 /boot
├─sda2 LVM2_member qewmsR-tAlj-pbTQ-yT4b-a85z-Fwgh-Pl2zVU
├─centos-root xfs 3fddce56-e4e0-4374-9a35-21d3a7e84d3c /
└─centos-swap swap aa401a67-4484-4890-b284-f9ca3af0c497 [SWAP]
sr0 iso9660 CentOS 7 x86_64 2020-11-03-14-55-29-00
可以看到sda被分区成两个磁盘,其中sda1被用来当作启动盘,sda2被挂载到/
和[swap]
LVM逻辑卷管理
在调整容量之前,先明白Linux的磁盘管理方式:LVM(logical volume management)逻辑卷管理。在Linux中,逻辑卷管理器是一种虚拟化的存储技术,允许管理员将多个物理存储设备(例如硬盘)合并成一个或多个逻辑卷,并根据需要对其进行动态调整。
简单来说,就是每个实体(物理)磁盘会被分成多个区,每个物理分区可以归到不同的volume group。最后会有若干个logical volume拥有指定volume group的使用权。就好像volume group是一个资源池,一头是physical volume往里面丢资源,一头是logical volume使用资源。理解起来非常简单,接下来就梳理一下扩容步骤
扩容步骤
Linux自带分区工具fdisk,输入fdisk /dev/sda
开始分区
下面使用了一张第三方的图,但是逻辑是差不多的
n:new 一个新的分区
p:分区类型设置为主分区(一块磁盘最多可以设置4块主分区)
w:将新的分区表写入系统
t:修改分区类型为8e(Linux LVM)告诉操作系统此分区专用于LVM
重启系统
[root@192 ~]# reboot
查看之前挂载的文件系统类型
这里使用的是xfs格式,用以下命令格式化分区
[root@192 ~]# mkfs.ext4 /dev/sda3
格式化后,创建PV(物理卷)
[root@192 ~]# pvcreate /dev/sda3
可以通过pvdisplay
查看创建是否成功
把pv(physical volume)物理卷加入到vg(volume group)卷组里面
因为此次扩容是针对/
根目录的,我们先通过lsblk -a
查看根目录挂载于哪个lv(逻辑卷)
通过lvdisplay
和vgdisplay
也可以验证关系
大致关系如下
------------------- ----------------
PV - sda2 PV - sda3 物理磁盘 (存入资源)
------------------- ----------------
' '
' '
---------------------------------------
VG - centos 卷组
---------------------------------------
' '
' '
------------------- ----------------
LV - root LV - swap 逻辑卷 (消费资源)
------------------- ----------------
接下来就只需要把PV - sda3
这个物理资源加入到VG - centos
就可以了
[root@192 ~]# vgextend centos /dev/sda3
Volume group "centos" successfully extended
虽然已经把物理资源添加到vg中,但是lv并不会直接使用vg里面的资源,还需要手动指定
扩展逻辑卷
lvextend -L +10G /dev/mapper/centos-root #添加部分磁盘资源
lvextend -l +100%FREE /dev/mapper/centos-root #添加全部新的磁盘资源
最后一步
命令df -h
发现实际容量并没有变化,因为我们的系统还不认识刚刚添加进来的磁盘的文件系统,所以还需要对文件系统进行扩容
[root@192 ~]# xfs_growfs /dev/centos/root #自动扩展XFS文件系统到最大的可用大小