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


逻辑卷管理Logical Volume Manager

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

  

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

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

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

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

#2.建立lvm

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

8342bf6d926edde8b8f293a23a613059.png-wh_

ac8376b48c18283fe5c5cc65e1b428b1.png-wh_

5fd24ac309479b7d2fbe1eba00aa9351.png-wh_

监控命令

6ed1a7a2fe014c677d68f54e8deea677.png-wh_

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

f41e0a6dec168ae5b16f370f2368c156.png-wh_

创建物理卷

将/vdb1分区创建为物理卷 

[root@localhost ~]# pvcreate /dev/vdb1 ##创建物理卷

2348beb94f021d6e36ad4c64b47c7475.png-wh_

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

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

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

cd2697047cf5823954023668b982b9ea.png-wh_

创建逻辑卷

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

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


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

c12f3e757cf432291ad6f5bd26554181.png-wh_

对于xfs文件系统

[root@localhost ~]# mkfs.xfs /dev/vg0/lv0 ##格式化文件系统

4d04de2217eabe6d26ba298d0d11dd92.png-wh_

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

c5e6a1857dbfbf069ed6bb0b07c01092.png-wh_

[root@localhost ~]# xfs_growfs /dev/vg0/lv0 ##同步文件系统 

4deb5492d2f5408f2680ee151b5d22a7.png-wh_

监控文件系统更新

42da09ec6e4e2e858227a31ccd97226d.png-wh_

3.lvm的拉伸

vg中剩余容量充足的时候

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

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

dd9adb83a1af22f41d2b25435acedd4b.png-wh_

1dade2393ca73e9012c28f01c24aabb5.png-wh_

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

1a6f0feb461d329574793ffbd6e1c0c6.png-wh_

vg中剩余容量不足时

新建分区

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

be81ae986a5f53a63c84af6effab0b3f.png-wh_

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

051adac7923a27c951c6d01bef1e4434.png-wh_

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

d46fca13802226358338d630cbd91a75.png-wh_

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

d908f828d539d88f79d81dd60f376197.png-wh_

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

7eca8f36204596284ee2e1f9c36d0c58.png-wh_

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

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

[root@localhost ~]# umount /qq/卸载

e50b25bbcec31df4dd237bec8be632a0.png-wh_

[root@localhost ~]# mkfs.ext4 /dev/vg0/lv0 格式化为ext4文件系统

7f2a633b5c38952be37c93b7de033503.png-wh_

[root@localhost ~]# mount /dev/vg0/lv0 /qq挂载

d82ffc39cee9a845c614a4ae390d2deb.png-wh_

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

f95a5d2e6a3ea0f6c4f648df77fc461d.png-wh_

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

bb8129f36aaf4ecaefb50039df248a98.png-wh_

监控看出,lv0扩容为800M

9ec5c6fa9a2956d0af56d608c58bf684.png-wh_

缩减

对设备

[root@localhost ~]# umount /qq/ ##先卸载

5e3e997f9d6e47c519a9200bc3523653.png-wh_

[root@localhost ~]# e2fsck -f /dev/vg0/lv0  ##扫描文件系统大小

7a3ee0d74ffd4f6eac637d6ad733bcb4.png-wh_

[root@localhost ~]# resize2fs /dev/vg0/lv0 200M ##文件系统缩减为200M

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

b54cee5b87eda957831a9a92d22fd52b.png-wh_

[root@localhost ~]# mount /dev/vg0/lv0 /qq/ ##缩减完成再重新挂载

3b192e54532494b526d2370b927d47f6.png-wh_

[root@localhost ~]# lvreduce -L 200M /dev/vg0/lv0 ##缩减设备 

33c73e78c8df6a31e48658fb2afba49b.png-wh_

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

22da62cb7320d69e709cfab5444e70c1.png-wh_

###对圈组### 

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

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

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

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

10e11594b3f129aa72a7d35565d02dbb.png-wh_

[root@localhost ~]# vgreduce vg0 /dev/vdb1 ##/dev/vdb1vg0圈组中移出

6e78c14bd40e421cc71c9d037de8dfbf.png-wh_

[root@localhost ~]# pvremove /dev/vdb1 ##将/dev/vdb1从pv中删除

bd16325756eb9aaaa103b96255f782e4.png-wh_

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

7e67f63e25aec86136195af5845e2e38.png-wh_

###lvm的快照###

cd /qq/

touch file{1..10}

cd

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

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

eea6e38fb6be0c47d51275d79e4550bf.png-wh_

c9a32714bd596a5b4d65ad10f8e85834.png-wh_

cd /qq

ls

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

umount /qq/

677f75a5dae27cea49fe8d5be0aed0bc.png-wh_

删除快照

lvremove /dev/vg0/lv0backup

243688da981c1692b279dd9e6b013751.png-wh_

d2732824647471b3bfcfe9e4158fd0ac.png-wh_

原来的内容未改变

be264e085237a3c35600d3e061797b9a.png-wh_

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

[root@localhost ~]# umount /qq  ##卸载

[root@localhost ~]# lvremove /dev/vg0/lv0 ##删除文件系统

421054c63173507a4f2de0a9833ff31f.png-wh_

[root@localhost ~]# vgremove vg0 ##移除逻辑卷组

3e2356f8c8df422aa327d1caa1313568.png-wh_

[root@localhost ~]# pvremove /dev/vdb2 ##移除物理卷

5a5a1b09d28b5f8e964c0cd44c7b116a.png-wh_

监控看出移除成功

723d3978b92aefdfb827c2f11d6163b2.png-wh_

[root@localhost ~]# fdisk /dev/vdb ##删除分区

f85e6f257ee0c959599d9f21702fa000.png-wh_

查看分区信息 cat /proc/partitions

6e67545bfb13bcbe1f325aa6534e1a06.png-wh_