一. 逻辑卷相关架构图
物理磁盘或者磁盘分区转换为物理卷,一个或多个物理卷聚集形成一个或多个卷组,而逻辑卷就是从某个卷组里面抽象出来的一块磁盘空间。具体架构如下:
二. 现状
查看当前文件系统占用情况:
df -h
从上图执行结果可见,目前根挂载点的容量已经用了85%了,容量为55G。我们再看看磁盘情况:
#先切换root用户
sudo -s
#查看实际磁盘空间
lsblk
#查看分区
fdisk -l
注意观察第一行,/dev/sda着实是有119G空间的。再看到各个分区(sda1\sda2\sda5)的信息,sda2和sda5其实是同一片磁盘空间。总的来说/dev/sda磁盘只分配了59.2G+487M空间。我们接下来要找到并利用那剩余的60G磁盘空间。
三. 分区
1) 进入分区应用程序,并选择/dev/sda磁盘为操作对象,将空闲的那部分空间创建为一个新的分区,等会它就是/dev/sda(x)了
fdisk /dev/sda
查看fdisk的功能,输入m回车查看:
2) 从帮助信息中我们得知,输入F可以看未分配的磁盘空间信息:
果不其然,我们确认了/dev/sda/磁盘上存在59.6G的未分区空间。还需要关注的信息是下面的Start和Tail-end(末尾),等会分区要用得到。
输入n,创建新分区
选择p,创建主分区
分区号用默认的3,直接回车:
这里就要用到刚才的Start、Tail-end了,就是新分区创建在磁盘的哪个范围里,我们直接拉满,First Sector填刚才的Start,Last Sector填Tail-end:
3) 把分区改为LVM格式
修改分区格式,使新建的分区支持LVM格式。进入fdisk后,按t修改分区格式,类型改为8e(之前默认的是83)。
4) 预览保存更改
这里就设置完成了,接下来输入p,预览更改:
可见,/dev/sda3已经创建好了
然后输入w,应用更改:
那个busy信息不用管,但是根据最后的提示,我们还要执行如下命令,因为在格式化分区值前需要使用 partprobe 让 kernel 重新读取分区信息,如果不成功则需要重启系统
partprobe
再在终端执行命令检查:
至此分区完成。
5) 将新的分区格式化,使用 xfs 或 ext4 文件系统
mkfs.xfs /dev/sda3
或
mkfs.ext4 /dev/sda3
根据提示进行操作,取消磁盘自检
tune2fs -c -1 /dev/sda3
四. 扩容
使用刚才的创建的 /dev/sda3 分区,创建 Physical Volume:
pvcreate /dev/sda3
查看当前的 volume group 和 logic group信息:
vgdisplay -v
要了解的信息主要有两个:
1、VolumeGroup 名字 VG Name:test101-vg
2、根路径 root 所在的 Logical Volume 路径 LV Path:/dev/test101-vg/root
然后先用 /dev/sda3 给 Volume Group 扩容,这样后面才能分配更多空间给 Logic Volume:
vgextend test101-vg /dev/sda3
然后扩容logic volume,这里我只扩个50G先(+50G):
lvextend -L +50G /dev/test101-vg/root
如果把剩余空间全部分配,则:
lvextend -l +100%FREE /dev/test101-vg/root
最后输入如下命令进行重新计算:
# 适用 ext
resize2fs /dev/test101-vg/root
# 适用 xfs
xfs_growfs /dev/test101-vg/root
最后查看结果:
(一)针对 xfs 和 ext2/3/4 文件系统的 lvm 分区空间的扩容和缩容的操作
resize2fs 命令针对的是ext2、ext3、ext4文件系统
xfs_growfs 命令针对的是xfs文件系统
1)resize2fs(增大和减小都支持)
lvextend -L 120G /dev/mapper/centos-home //增大至120G
lvextend -L +20G /dev/mapper/centos-home //增加20G
lvreduce -L 50G /dev/mapper/centos-home //减小至50G
lvreduce -L -8G /dev/mapper/centos-home //减小8G
lvextend -l +100%FREE /dev/mapper/centos-home //将剩余空间全部扩容
resize2fs /dev/mapper/centos-home //执行调整
2)xfs_growfs(只支持增大)
lvextend -L 120G /dev/mapper/centos-home //增大至120G
lvextend -L +20G /dev/mapper/centos-home //增加20G
lvextend -l +100%FREE /dev/mapper/centos-home //将剩余空间全部扩容
xfs_growfs /dev/mapper/centos-home //执行调整
xfs文件系统只支持增大分区空间的情况,不支持减小的情况(切记!!!!!)。
硬要减小的话,只能在减小后将逻辑分区重新通过mkfs.xfs命令重新格式化才能挂载上,这样的话这个逻辑分区上原来的数据就丢失了。
(二)卸载分区
若是减小分区空间,减小前必须要先卸载这个分区。如果卸载有问题,解决如下:
[root@localhost ~]# umount /home/
umount: /home: device is busy. (In some cases useful info about processes that use the device is found by lsof(8) or fuser(1))
提示无法卸载,则是有进程占用/home,使用如下命令来终止占用进程:
[root@localhost ~]# fuser -m -k /home
/home: 1409 1519ce 1531e 1532e 1533e 1534e 1535e 1536e 1537e 1538e 1539e 1541e 1543e 1544e 1545e 1546e 1547e 1548e 1549e 1550e 1601m
再次卸载home分区就成功了。
[root@localhost ~]# umount /home/
-k 表示自动把霸占home分区的进程kill掉! 如果你不是很明确是否要杀死所有霸占设备的程序,还可以加一个-i 参数,这样每杀死一个程序前,都会询问!(即fuser -m -v -i -k /home)
参考
Linux 物理卷(PV)、逻辑卷(LV)、卷组(VG)管理 - gegeman - 博客园 (cnblogs.com)
Linux下对lvm逻辑卷分区大小的调整(针对xfs和ext4不同文件系统) - 云+社区 - 腾讯云 (tencent.com) linux磁盘分区格式化-fdisk - 天生帅才 - 博客园 (cnblogs.com)