1.什么是lvm?

逻辑卷。

2.为什么要有lvm?

对于这个问题,我们先说,磁盘,一块磁盘拿过来不能直接用,要进行分区,格式化,挂载后才能使用。传统的分区分为主分区和扩展分区,主分区加上扩展分区最多有4个,

扩展分区只能有一个,扩展分区不能直接使用,扩展分区分为逻辑分区后才能使用,逻辑分区就不限个数。

我们知道windows中系统都装在c盘,而且至少有两个分区(如果只有一个分区就是×××,系统重装什么都没有了)这是为什么,因为c盘处于磁盘外侧边缘速度最快。

好了现在回到我们的问题,我们知道一块磁盘分好后,大小基本不能改变了,如果哪天磁盘空间不够用了怎么办,不能直接删了重新分区吧,而且后来加进来的磁盘怎么办,

格式化挂载直接用,可以,但是很累赘不觉得吗,一大堆的分区。

lvm就是如此产生的,他可以动态删减磁盘大小,他是基于内核的md模块。

3.lvm简单原理?

首先,机械硬盘分好区后,这些空间被称为物理卷(pv),然后将这些物理卷组合起来称为卷组(vg),跟扩展分区一样vg不能直接使用,从vg中创建逻辑卷(lv),lv数量不限

但空间总和不能超过vg。这些物理卷是怎么组合起来的呢,这些物理卷还被分为许多pe,类似数据块,默认大小为4m,有这些pe组成vg,vg的增删也是通过pe来完成的,在lv中被

称为le,但概念是一致的。

4.具体实现过程

准备工作

先从虚拟机新建一块磁盘,开启虚拟机,fdisk -l查看信息,可以看到多了一块磁盘。假设为sdb。

先建立物理卷

首先,磁盘分区:

fdisk /dev/sdb

n(新建分区) p(主分区) 1(分区号)【:space:】(起始柱列) +1G(结束柱列)

n(新建分区) p(主分区) 2(分区号)【:space:】(起始柱列) +1G(结束柱列)

t(指定磁盘类型)1 (那个区)8e(linux LVM类型)

t(指定磁盘类型)2 (那个区)8e(linux LVM类型)

w(保存)

然后可以建立pv了。

pvcreate /dev/sdb{1,2}

pv命令还有如下:

pvs(显示pv信息)pvdisplay(显示详细的pv信息)pvremove(删除)pvmove(移除数据)


vg命令相关如下:

vgcreate(创建)vgremove(删除)vgdisplay(查看详细信息)vgs(简易信息)vgextend(增加vg)vgreduce(减少)

vgcreate 【-s #】(指定pe大小) VG-NAME /PATH/TO/PV

vgcreate -s 8 myvg /dev/sdb{1,2}

增加vg空间:vgextend myvg /dev/sdb3

减少vg空间:先删除sdb1中数据,在减少。

pvmove /dev/sdb1  

vgreduce myvg /dev/sdb1

pvremove /dev/sdb1


lv命令如下:

lvcreate,lvs,lvreduce,lvextend,lvremove

创建lv:

lvcreate -n LV-NAME -L #G VG-NAME

lvcreate -n testlv -L 【+|-】1G myvg

mkfs -t ext3 /dev/myvg/testlv

mount /dev/myvg/testlv /mnt

或者写入/etc/fstab永久挂载

然后可以用了。

如何增减lvm?

lvm大小还分为物理边界和逻辑边界:物理边界是机械磁盘的物理空间,逻辑边界是文件系统的空间,要增加lv空间,要先增加物理边界,在增加逻辑空间。

减少lvm则相反。

增加lv空间:

lvextend -L +1G /dev/myvg/testlv

resize2fs -p(与物理边界同步) /dev/myvg/testlv

减少lv空间:

注意事项:

不能在线缩减,得先卸载

确保缩减后的空间大小依然能存储原有的所有数据  

在缩减之前要检查文件,以确保文件系统处于一致性

df -lh(查看磁盘信息)

umount (挂载)

e2fsck -f(检查)

resize2fs /dev/myvg/testlv -500M

lvreduce -L -500M /dev/myvg/testlv

重新挂载


5.快照卷的实现