linux用户安装linux操作系统时遇到一个常见的难以解决的问题就是如何正确的评估各分区大小,以分配合适的磁盘空间,普通的磁盘分区方式在逻辑分区划分好之后就无法改变其大小,分区内存不能满足需要的解决方法。


逻辑卷管理Logical Volume Manager

它是linux环境下对磁盘分区进行管理的一种机制。linux用户安装linux操作系统时遇到一个常见的难以解决的问题就是如何正确的评估各分区大小,以分配合适的磁盘空间,普通的磁盘分区方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上,出现某个分区空间将耗尽的问题时,linux逻辑卷管理功能的出现,用户在无需停机的情况下可以方便的调整各分区的大小

  

#1.pv##物理卷,指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备,是lvm的基本存储逻辑块

  vg ##卷组,由一个或多个物理卷组成

 lv ##逻辑卷,建立在卷组vg上,在逻辑卷lv之上可以建立文件系统

 pe ##每一个物理卷被划分的基本单元

#2.建立lvm

* 创建分区:使用分区工具,fdisk /dev/vdb ,方式和创建其他分区的方式一样,区别是lvm 的分区类型为8e

Linux中的Lvm逻辑卷管理

Linux中的Lvm逻辑卷管理

Linux中的Lvm逻辑卷管理

监控命令

Linux中的Lvm逻辑卷管理

同步硬盘信息,添加两个分区vdb1,vdb2

Linux中的Lvm逻辑卷管理

创建物理卷

将/vdb1分区创建为物理卷 

[[email protected] ~]# pvcreate /dev/vdb1 ##创建物理卷

Linux中的Lvm逻辑卷管理

pvcreate建立的物理卷创建一个卷组

第一个参数是指定该逻辑卷组的逻辑名,后面的参数是指定希望添加到该逻辑卷组的所有分区和磁盘。

[[email protected] ~]# vgcreate vg0 /dev/vdb1 把/dev/vdb1加到/vg0这个逻辑圈组 ##创建物理卷组

Linux中的Lvm逻辑卷管理

创建逻辑卷

[[email protected] ~]# lvcreate -L 100M -n lv0 vg0  ##在vg0上创建名字为lv0,大小为100m的逻辑卷,并且设备入口为/dev/vg0/lv0

-L ##指定设备大小  -n ##名字 ##创建逻辑卷组


监控显示物理卷,物理卷组已创建

Linux中的Lvm逻辑卷管理

对于xfs文件系统

[[email protected] ~]# mkfs.xfs /dev/vg0/lv0 ##格式化文件系统

Linux中的Lvm逻辑卷管理

[[email protected] ~]# mount /dev/vg0/lv0 /qq ##挂载,让设备可用,设备挂载体投入使用

Linux中的Lvm逻辑卷管理

[[email protected] ~]# xfs_growfs /dev/vg0/lv0 ##同步文件系统 

Linux中的Lvm逻辑卷管理

监控文件系统更新

Linux中的Lvm逻辑卷管理

3.lvm的拉伸

vg中剩余容量充足的时候

lvextend -L 400M /dev/vg0/lv0 ##-L指定设备大小

xfs_growfs /dev/vg0/lv0 ##同步文件系统

Linux中的Lvm逻辑卷管理

Linux中的Lvm逻辑卷管理

监控,逻辑卷大小400M,文件系统更新

Linux中的Lvm逻辑卷管理

vg中剩余容量不足时

新建分区

pvcreate /dev/vdb2 ##创建物理卷

Linux中的Lvm逻辑卷管理

vgextend vg0 /dev/vdb2 ##创建物理卷组,把/dev/vdb2加到vg0这个逻辑卷组,实现扩容

Linux中的Lvm逻辑卷管理

lvextend -L 400M /dev/vg0/lv0 ##拉伸逻辑卷为700M

Linux中的Lvm逻辑卷管理

xfs_growfs /dev/vg0/lv0 ##同步文件系统

Linux中的Lvm逻辑卷管理

监控,逻辑卷lv0的大小拉伸为700M

Linux中的Lvm逻辑卷管理

由于xfs文件系统只能拉伸文件系统,不能缩小,故采用ext4文件系统格式,既能拉伸也能缩减

###要把他改为ext4这个文件系统,要先卸载###

[[email protected] ~]# umount /qq/卸载

Linux中的Lvm逻辑卷管理

[[email protected] ~]# mkfs.ext4 /dev/vg0/lv0 格式化为ext4文件系统

Linux中的Lvm逻辑卷管理

[[email protected] ~]# mount /dev/vg0/lv0 /qq挂载

Linux中的Lvm逻辑卷管理

[[email protected] ~]# lvextend -L 800M /dev/vg0/lv0 ##将逻辑卷lv0拉伸为800M

Linux中的Lvm逻辑卷管理

resize2fs /dev/vg0/lv0 ##同步文件系统

Linux中的Lvm逻辑卷管理

监控看出,lv0扩容为800M

Linux中的Lvm逻辑卷管理

缩减

对设备

[[email protected] ~]# umount /qq/ ##先卸载

Linux中的Lvm逻辑卷管理

[[email protected] ~]# e2fsck -f /dev/vg0/lv0  ##扫描文件系统大小

Linux中的Lvm逻辑卷管理

[[email protected] ~]# resize2fs /dev/vg0/lv0 200M ##文件系统缩减为200M

缩减时,先扫描文件系统,在缩减设备 

Linux中的Lvm逻辑卷管理

[[email protected] ~]# mount /dev/vg0/lv0 /qq/ ##缩减完成再重新挂载

Linux中的Lvm逻辑卷管理

[[email protected] ~]# lvreduce -L 200M /dev/vg0/lv0 ##缩减设备 

Linux中的Lvm逻辑卷管理

监控可看出逻辑卷和文件系统都缩减为200M

Linux中的Lvm逻辑卷管理

###对圈组### 

##从卷组中删除一个物理卷##

要从一个卷组中删除一个物理卷,首先要确认被删除的物理卷没有被任何逻辑卷正在使用,

需要使用pvdisplay查看逻辑卷信息,如果某个物理卷正在被逻辑卷使用,就需要将该物理卷的数据备份到其他地方在删除。

[[email protected] ~]# pvmove /dev/vdb1 /dev/vdb2  ##当/dev/vdb2闲置,将存在数据的/dev/vdb1迁移到/dev/vdb2,再删除/dev/vdb1

Linux中的Lvm逻辑卷管理

[[email protected] ~]# vgreduce vg0 /dev/vdb1 ##/dev/vdb1vg0圈组中移出

Linux中的Lvm逻辑卷管理

[[email protected] ~]# pvremove /dev/vdb1 ##将/dev/vdb1从pv中删除

Linux中的Lvm逻辑卷管理

监控可看出,删除了/dev/vdb1

Linux中的Lvm逻辑卷管理

###lvm的快照###

cd /qq/

touch file{1..10}

cd

lvcreate -L 100M -n lv0backup -s /dev/vg0/lv0

更改的是快照内容,访问的是原文件,L,指定快照大小,n指定快照的名字,s指定创建快照的设备

Linux中的Lvm逻辑卷管理

Linux中的Lvm逻辑卷管理

cd /qq

ls

不小心删除 rm -fr /qq/* 将快照删除,只是修改的快照内容,不改变原文件

umount /qq/

Linux中的Lvm逻辑卷管理

删除快照

lvremove /dev/vg0/lv0backup

Linux中的Lvm逻辑卷管理

Linux中的Lvm逻辑卷管理

原来的内容未改变

Linux中的Lvm逻辑卷管理

###删除pv,vg,lv###

[[email protected] ~]# umount /qq  ##卸载

[[email protected] ~]# lvremove /dev/vg0/lv0 ##删除文件系统

Linux中的Lvm逻辑卷管理

[[email protected] ~]# vgremove vg0 ##移除逻辑卷组

Linux中的Lvm逻辑卷管理

[[email protected] ~]# pvremove /dev/vdb2 ##移除物理卷

Linux中的Lvm逻辑卷管理

监控看出移除成功

Linux中的Lvm逻辑卷管理

[[email protected] ~]# fdisk /dev/vdb ##删除分区

Linux中的Lvm逻辑卷管理

查看分区信息 cat /proc/partitions

Linux中的Lvm逻辑卷管理