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.快照卷的实现