1.什么是LVM
LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制。
2.使用LVM解决什么问题
直接使用fdisk分区挂载的话,随着时间的推移,数据量越来越大,硬盘空间越来越小,要想扩充容量的话,就必须挂载新硬盘然后做数据迁移,这就必然导致前台业务的停止,不符合企业需求,因此完美的解决方法应该是在零停机前提下可以自如对文件系统的大小进行调整,可以方便实现文件系统跨越不同磁盘和分区。Linux提供的逻辑盘卷管理(LVM,Logical Volume Manager)机制就是一个完美的解决方案
3.原理图
1、物理磁盘被格式化为PV,空间被分为一个个PE
2、不同的PV加入同一个VG,不同PV的PE全部进入VG的PE池内
3、LV基于PE创建,大小为PE的整数倍,组成LV的PE可能自来不同的物理磁盘
4、LV现在就直接可以格式化后挂载使用了
5、LV的扩充缩减实际上就是增加或减少组成该LV的PE的数量,其过程不会丢失数据
4.LVM各个名称介绍 #物理存储介质 指系统的物理存储设备:磁盘,如:/dev/hda、/dev/sda等,是存储系统最底层的存储单元。 #物理卷 PV Physical Volume 指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。 #卷组 VG Volume Group 类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷) #逻辑卷 LV Logical Volume 类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。 #物理块 PE Physical Extent 每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。 #逻辑卷 LE Logical Extent 逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
5.LVM在系统中的创建
1.先查看系统中有无安装LVM
rpm -q lvm
2. lvm有两个版本 lvm1 lvm2 (升级版)
yum install lvm2 -y
3.创建物理卷
现在分区中创建新的分区 t 更改他们的id lvm的ID为8e 结果如下
pvcreate /dev/sdb5 创建物理卷
可以通过 pvdisplay 来查看创建的物理卷
4.创建vg组,将物理卷加入卷组中
vhcreate vgzu(组的名字) /dev/sdb5 /dev/sdb6 (物理卷)
可以通过 vgdisplay 来查看创建的vg卷组
5.创建逻辑卷LV
lvcreate -L 100M -n lvjuan vgzu
lvdisplay 查看先建立的卷
6.格式化lvjuan (创建文件系统)
mkfs.xfs /dev/VGName/LVName
7.挂载lvjuan
mount /dev/VGName/LVName /mnt
逻辑卷创建完成可以使用了
6.lvm的拉伸
LVM和其他的分区方式最大的优势就是可以动态的拉伸或缩小逻辑卷空间,并且是在线执行的,拉伸并不会影响原有数据无需下线。这里才是它的特点。
1.当vg中的剩余容量充足情况
lvextend -L 60M /dev/VGName/LVName 拉伸lv卷
xfs_growfs /dev/VGName/LVName 拉伸文件系统
2.当vg中的容量不足时 ,其实质就是从VG中拿若干PE到LV中,但是当VG中空间也不够时,我们就需要拓展VG,也就是将新硬盘格式化为PV添加到VG中
1.先创建分区t修改其id为8e
2.创建pv物理卷
pvcreate /dev/sdb7
3.将新的PV添加到指定卷组中
vgextend vgNAME /dev/sdb[n]
vgdisplay
4.拉伸lv卷
lvextend -L 60M /dev/VGName/LVName
xfs_growfs /dev/VGName/LVName 拉伸文件系统
7.lvm的缩减
umount /mnt
e2fsck -f /dev/vg0/lv0 ##检查lv0数据
resize2fs /dev/vg0/lv0 1000M ##缩减ext4文件系统
mount /dev/vg0/lv0 /mnt/ ##挂载
lvreduce -L 1000M /dev/vg0/lv0 ##缩减逻辑卷
pvmove /dev/sdb7 /dev/sdb6 ##把vdb6的数据移动到vdb7
vgreduce vg0 /dev/vdb7 ##把vdb6移除vg0物理卷组
pvremove /dev/vdb6 ##把vdb6移除物理卷