Linux-逻辑卷-LVM

1、基础

1.1、为何要用LVM

当刚开始安装Linux系统时,往往不能确定每个分区使用的空间大小,只能凭经验分配不科学;
如果分区设置的过大,就浪费了磁盘空间;
如果分区设置的过小,就会导致空间不够; 如何希望分配的空间过大或过小,都能动态调整,则需要使用到LVM逻辑卷;

1.2、什么是LVM

LVM是Logical volume Manager逻辑卷管理的简写,它是对磁盘分区管理的一种机制;
LVM优点: 1、LVM可以创建和管理逻辑卷,而不是直接使用物理硬盘。 2、LVM可以弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据;
3、LVM可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。
LVM缺点: 1、LVM如果有一个磁盘损坏,整个LVM都坏了,LVM只有动态扩展作用。

解决办法:用RAID
+LVM,既有冗余又有动态扩展;

1.3、LVM相关术语

1.3.1、术语介绍

1、物理卷(PV)︰将常规的磁盘通过pvcreate命令对其进行初始化,形成了物理卷。(面粉)
2、卷组(VG)︰把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个盘之和。(大面团)
3、逻辑卷(LV)︰从卷组中划分需要的空间大小出来,用户仅需对其格式化然后即可挂载使用。(切成馒头)
4、基本单元(PE):分配的逻辑大小的最小单元,默认4MB,假设分配10OMB的空间,则需要创建25个PE

1.3.2、构架图

2、LVM配置实战

2.1、配置流程

1、准备三块物理磁盘,建议在虚拟机关闭状态添加,以便更好的实验;
2、创建卷【PV】,将普通磁盘转换为物理卷【PV】
3、创建卷组【VG】,将物理卷【PV】加入到卷组【VG】
4、在卷组【VG】中划分逻辑卷【LV】,然后挂载使用

2.2、创建物理卷【PV】

2.2.1、创建物理卷

pvcreate /dev/sdb


如果有报如下错误的解决方法:
原因:该设备之前有被分区使用过的
]# pvcreate /dev/sdb
  Device /dev/sdb excluded by a filter.

]# parted /dev/sdb 
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel msdos                                                    
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to
continue?
Yes/No? yes                                                               
(parted) quit                                                             
Information: You may need to update /etc/fstab.

操作好后,重新创建pv即可

2.2.2、检查pv创建结果-pvs

]# pvs                                                         
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  19.53g    0 
  /dev/sdb          lvm2 ---   5.00g 5.00g

2.3、创建卷组【VG】

2.3.1、创建名为datavg的卷组,然后将物理卷加入进卷组

vgcreate datavg /dev/sdb

2.3.2、检查卷组-vgs

 ~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n- 19.53g     0 
  datavg   1   0   0 wz--n- <5.00g <5.00g

2.4、创建逻辑卷【PV】

2.4.1、分配datavg 逻辑卷

lvcreate -L 100M -n lv1 datavg

-n   指定逻辑卷名称
-L   指定逻辑卷大小

2.4.2、检查逻辑卷-lvscan

]# lvscan 
  ACTIVE            '/dev/centos/swap' [1.91 GiB] inherit
  ACTIVE            '/dev/centos/root' [17.62 GiB] inherit
  ACTIVE            '/dev/datavg/lv1' [100.00 MiB] inherit

2.5、挂载使用

2.5.1、格式化逻辑卷

mkfs.xfs /dev/datavg/lv1

2.5.2、挂载并且写入数据测试

mkdir /mnt/lv1
mount /dev/datavg/lv1 /mnt/lv1/
echo "test" >/mnt/lv1/index.html

3、LVM-卷组管理

3.1、扩容卷组

3.1.1、准备新的磁盘加入至pv,然后检查卷组当前的大小

~]# pvcreate /dev/sdc 
  Physical volume "/dev/sdc" successfully created.
  
~]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n- 19.53g     0 
  datavg   1   1   0 wz--n- <5.00g <4.90g

3.1.2、使用vgextend扩展卷组

vgextend datavg /dev/sdc

3.1.3、查询卷组有没有扩大

]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- 19.53g    0 
  datavg   2   1   0 wz--n-  9.99g 9.89g

3.2、缩容卷组

3.2.1、需求

假设想移除/dev/sdb磁盘,建议先将sdb磁盘数据先迁移到sdc磁盘,然后在移除;

注意:同一卷组的磁盘才可以进行在线迁移

3.2.2、检查当前逻辑卷vg 中pv使用情况

]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sda2  centos lvm2 a--  19.53g     0 
  /dev/sdb   datavg lvm2 a--  <5.00g <4.90g
  /dev/sdc   datavg lvm2 a--  <5.00g <5.00g

3.2.3、pvmove在线数据迁移,将sdb 的数据迁移至sdc

]# pvmove /dev/sdb
  /dev/sdb: Moved: 100.00%

3.2.4、检查是否将sdb数据迁移至sdc

]# pvs
  PV         VG     Fmt  Attr PSize  PFree 
  /dev/sda2  centos lvm2 a--  19.53g     0 
  /dev/sdb   datavg lvm2 a--  <5.00g <5.00g
  /dev/sdc   datavg lvm2 a--  <5.00g <4.90g

3.2.5、从卷组中移除sdb磁盘

]# vgreduce datavg /dev/sdb
  Removed "/dev/sdb" from volume group "datavg"

4、LVM-逻辑卷管理

4.1、扩容逻辑卷

4.1.1、扩容注意事项

1、扩展逻辑卷︰取决于vg 卷中是否还有剩余的容量
2、扩展逻辑卷不能超过卷组vg的总大小

4.1.2、查询卷组总的大小

]# vgs
  VG     #PV #LV #SN Attr   VSize  VFree 
  centos   1   2   0 wz--n- 19.53g     0 
  datavg   1   1   0 wz--n- <5.00g <4.90g

4.1.3、扩容lv逻辑卷,增加800M分配给逻辑卷

lvextend -L +800M /dev/datavg/lv1

4.1.4、扩展逻辑卷后需要更新fs文件系统

# xfs格式
xfs_growfs /dev/datavg/lv1 

# ext格式
resize2fs /dev/datavg/lv1 

4.2、删除逻辑卷

4.2.1、卸载挂载点,然后在移除逻辑卷

umount /dev/datavg/lv1
lvremove /dev/datavg/lv1

4.2.2、删除卷组gv

vgremove datavg

4.2.3、删除物理卷pv

pvremove /dev/sdb
pvremove /dev/sdc

5、排错方法

5.1、如果遇到创建pv有问题,使用lsblk查询硬盘占用情况

]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0  476M  0 part /boot
└─sda2            8:2    0 19.5G  0 part 
  ├─centos-root 253:0    0 17.6G  0 lvm  /
  └─centos-swap 253:1    0  1.9G  0 lvm  [SWAP]
sdb               8:16   0    5G  0 disk 
└─datavg-lv1    253:2    0  100M  0 lvm  /mnt/lv1
sdc               8:32   0    5G  0 disk 
└─sdc1            8:33   0    5G  0 part 
sdd               8:48   0    5G  0 disk 
sr0              11:0    1  973M  0 rom 

 

posted @ 2023-04-22 14:20  小粉优化大师  阅读(157)  评论(0)    收藏  举报