【Linux】基于LVM逻辑卷动态扩容

时间:2023-03-27 20:19:58

一、前言

LVM逻辑卷

LVM(Logical Volume Manager)逻辑卷管理,是一种将一个或多个硬盘的分区在逻辑上集合,相当于一个大硬盘来使用,当硬盘的空间不够使用的时候,可以继续将其它的硬盘的分区加入其中,这样可以事项一种磁盘空间的动态管理,相对于普通的磁盘分区有很大的灵活性

使用普通的磁盘分区,当一个磁盘的分区空间不够使用的时候,可能就会带来很大的麻烦。

逻辑卷(LVM):它是Linux环境下对磁盘分区进行管理的一种机制,它是建立在物理存储设备之上的一个抽象层,优点在于灵活管理。

【Linux】基于LVM逻辑卷动态扩容

二、LVM工作流程

  1. 物理磁盘
  2. 命令创建pv
  3. 创建卷组vg
  4. 创建逻辑卷lv
  5. 格式化lv文件系统
  6. 挂载使用
  7. 物理分区阶段:将物理磁盘fdisk格式化修改System ID为LVM标记(8e)
  8. PV阶段:通过pvcreatepvdisplay将Linux分区处理为物理卷PV
  9. VG阶段:接下来通过vgcreatevgdisplay将创建好的物理卷PV处理为卷组VG
  10. LV阶段:通过lvcreate将卷组分成若干个逻辑卷LV
  11. 开始使用:通过mkfs对LV格式化,最后挂载LV使用

【Linux】基于LVM逻辑卷动态扩容

三、LVM常用命令汇总


操作


pv命令

vg命令

lv命令

列出display

pvs

vgs

lvs

扩容extend

vgextend

lvextend

缩容reduct

vgreduce

Lvreduce

删除remove

pvremove

vgremove

lvremove

改变容量resize

vgresize

物理卷(pv)管理

命令

功能

pvcreate

创建物理卷

pvscan

查看物理卷信息

pvdisplay

查看各个物理卷的详细参数

pvremove

删除物理卷

卷组(VG)管理相关命令

命令

功能

vgcreate

创建卷组

vgscan

查看卷组信息

vgdisplay

查看卷组的详细参数

vgreduce

缩小卷组,把物理卷从卷组中删除

vgextend

扩展卷组,把某个物理卷添加到卷组中

vgremove

删除卷组

逻辑卷(LV)管理相关命令

lvcreate 
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节
-l 指定逻辑卷的大小(LE个数)
-n 后面跟逻辑卷名 
-s 创建快照

命令

功能

lvcreate

创建逻辑卷

lvscan

查看逻辑卷信息

lvdisplay

查看逻辑卷的具体参数

lvextend

增大逻辑卷大小

lvreduce

减小逻辑卷大小

lvremove

删除逻辑卷

四、LVM实战

要求

  • 使用2块硬盘,容量分别是20G,20G
  • 创建卷组,名字是vg1-0327
  • 创建2个lv,名字依次是lv1,lv2容量分别是15G,10G
  • 2个逻辑卷,挂载点分别是/t1 /t2 文件系统分别是xfs、ext4
  • 要求分别查看2个逻辑卷的文件系统信息
思路:
1. 物理的设备
2. 将物理设备做成物理卷
3. 创建卷组并将物理卷加入其中
4. 创建逻辑卷
5. 格式化逻辑卷
6. 挂载使用

1.安装lvm
yum install lvm2 -y
2.查看pv
pvs
3.创建pv
[root@localhost ~]# pvcreate /dev/sdb /dev/sdc 
  Physical volume "/dev/sdb" successfully created.
  Physical volume "/dev/sdc" successfully created.
4.查看创建后的pv
[root@localhost ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb          lvm2 ---   20.00g 20.00g
  /dev/sdc          lvm2 ---   20.00g 20.00g
5.查看vg
[root@localhost ~]# vgs
  VG     #PV #LV #SN Attr   VSize   VFree
  centos   1   2   0 wz--n- <19.00g    0 
6.创建vg sdb sdc创建为卷组,名字是 vg1-0327
注意语法
[root@localhost ~]# vgcreate vg1-0327 /dev/sdb /dev/sdc 
  Volume group "vg1-0327" successfully created
7.查看创建后的vg
[root@localhost ~]# vgs
  VG       #PV #LV #SN Attr   VSize   VFree 
  centos     1   2   0 wz--n- <19.00g     0 
  vg1-0327   2   0   0 wz--n-  39.99g 39.99g
8.查看lv
lvs
9.创建lv(创建分区)
lv1  15G
lv2  10G
[root@localhost ~]# lvcreate -n lv1 -L 15G vg1-0327
  Logical volume "lv1" created.
[root@localhost ~]# lvcreate -n lv2 -L 10G vg1-0327
  Logical volume "lv2" created.
10.查看lv
[root@localhost ~]# lvs
  LV   VG       Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos   -wi-ao---- <17.00g                                                    
  swap centos   -wi-ao----   2.00g                                                    
  lv1  vg1-0327 -wi-a-----  15.00g                                                    
  lv2  vg1-0327 -wi-a-----  10.00g  
  
11.查看磁盘设备信息
通过如下命令,查看lvm设备的信息
[root@localhost ~]# blkid | grep 'sd[bc]'
/dev/sdc: UUID="mxTVP4-6uf1-5rUh-0TFl-e0r8-TeDf-1iOxd1" TYPE="LVM2_member" 
/dev/sdb: UUID="1ngONs-vQiM-hu0P-Pqdi-JTsn-24dq-CtmDMi" TYPE="LVM2_member"
查看/dev/卷组/
ls /dev/vg1-0327/

12.lv格式化文件系统
lv1  15G ---xfs
lv2  10G  ----ext4
[root@client-242 ~]# mkfs.xfs /dev/vg1-0327/lv1
[root@client-242 ~]# mkfs.ext4 /dev/vg1-0327/lv2

13.挂载lv
mount 设备名   挂载点
[root@localhost ~]# mount /dev/vg1-0327/lv1 /t1
[root@localhost ~]# mount /dev/vg1-0327/lv2 /t2

14.查看挂载
[root@localhost ~]# mount -l | grep t1
/dev/mapper/vg1--0327-lv1 on /t1 type xfs (rw,relatime,attr2,inode64,noquota)
[root@localhost ~]# mount -l | grep t2
/dev/mapper/vg1--0327-lv2 on /t2 type ext4 (rw,relatime,data=ordered)
尝试写入数据
[root@client-242 ~]# touch /t1/今天也是美好的一天
[root@client-242 ~]# touch /t2/明天更是美好的一天

15.开机自动挂载
一定切记,如果你的设备发生了变化,一定要去修改/etc/fstab
否则系统开机,读取该fstab文件,找不到设备,无法正确挂载就会报错
进入紧急模式,直到你再次修复fstab文件
重启即可
把t1 t2设置为开机自动挂载
[root@client-242 ~]# tail -2 /etc/fstab 
UUID="04fda700-511c-43d4-ae9a-d87d72ee7175"  /t1  xfs  defaults 0 0 
/dev/mapper/vg1--0224-lv2 /t2  ext4  defaults 0 0 

LVM扩容(重点)

需求

  • 要求扩容lv1,扩大到25G容量
先查看当前机器的lv情况,确定你要扩容的设备
[root@localhost ~]# df -Th | grep lv1
/dev/mapper/vg1--0327-lv1 xfs        15G   33M   15G   1% /t1

扩容到25G需求
1. 你的卷组,容量还够不够
2. 卷组容量不够,加新硬盘,再次pv化,加入卷组就好了

方案一,卷组容量够

1.确认vg卷组容量够不够
确认vg1卷组剩余空间15G
[root@localhost ~]# vgs | grep vg1
  vg1-0327   2   2   0 wz--n-  39.99g 14.99g

2.确认够用,直接lvextend扩容lv逻辑卷即可
用法1 给lv1增加10G
[root@localhost ~]# lvextend -L +10G /dev/vg1-0327/lv1 
  Size of logical volume vg1-0327/lv1 changed from 15.00 GiB (3840 extents) to 25.00 GiB (6400 extents).
  Logical volume vg1-0327/lv1 successfully resized.
[root@localhost ~]# lvs | grep lv1
  lv1  vg1-0327 -wi-ao----  25.00g
 用法2 直接,调整到25G大小
 [root@localhost ~]# lvextend -L 25G /dev/vg1-0327/lv1 
 
 3.虽然你调整了 lv1逻辑卷的大小,但是文件系统它不知道,
 你得告诉文件系统,也跟着调整分区的容量,以及重新设置block的数量
 ext4文件系统,使用resize2fs命令
 xfs文件系统,使用xfs_growfs调整大小
 
 4.调整lv1 xfs文件系统的大小
 [root@localhost ~]# xfs_growfs /dev/mapper/vg1--0327-lv1
 [root@localhost ~]# df -Th | grep lv1
/dev/mapper/vg1--0327-lv1 xfs        25G   33M   25G   1% /t1

5.调整lv2的文件系统,调整到20G
看看卷组还剩下多少,不够用了,就得扩大卷组了
[root@localhost ~]# vgs | grep vg1
  vg1-0327   2   2   0 wz--n-  39.99g 4.99g 

方案二,卷组容量不够

1.添加一块50G新硬盘,	
2.给硬盘pv化
[root@localhost ~]# pvcreate /dev/sdd 
  Physical volume "/dev/sdd" successfully created.
3.查看pv物理卷
[root@localhost ~]# pvs | grep sdd
  /dev/sdd            lvm2 ---   50.00g 50.00g
4.vg卷组扩容
[root@localhost ~]# vgextend vg1-0327 /dev/sdd 
  Volume group "vg1-0327" successfully extended
5.再次查看vg卷组
[root@localhost ~]# vgs | grep vg1
  vg1-0327   3   2   0 wz--n- <89.99g <54.99g
6.扩容lv2
调整lv2的文件系统,调整到20G
[root@localhost ~]# lvextend -L 20G /dev/vg1-0327/lv2 
  Size of logical volume vg1-0327/lv2 changed from 10.00 GiB (2560 extents) to 20.00 GiB (5120 extents).
  Logical volume vg1-0327/lv2 successfully resized.
7.再次查看lv2
[root@localhost ~]# lvs | grep lv2
  lv2  vg1-0327 -wi-ao----  20.00g 
8.调整etx4文件系统
[root@localhost ~]# resize2fs /dev/mapper/vg1--0327-lv2 
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/mapper/vg1--0327-lv2 is mounted on /t2; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 3
The filesystem on /dev/mapper/vg1--0327-lv2 is now 5242880 blocks long.

9.查看磁盘挂载容量情况
[root@localhost ~]# df -Th
Filesystem                Type      Size  Used Avail Use% Mounted on
devtmpfs                  devtmpfs  1.9G     0  1.9G   0% /dev
tmpfs                     tmpfs     1.9G     0  1.9G   0% /dev/shm
tmpfs                     tmpfs     1.9G   12M  1.9G   1% /run
tmpfs                     tmpfs     1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/centos-root   xfs        17G  3.7G   14G  22% /
/dev/sda1                 xfs      1014M  195M  820M  20% /boot
/dev/mapper/vg1--0327-lv1 xfs        25G   33M   25G   1% /t1
/dev/mapper/vg1--0327-lv2 ext4       20G   44M   19G   1% /t2
tmpfs                     tmpfs     378M     0  378M   0% /run/user/0