LVM:Logical Volumn Manager 逻辑卷管理


是用来做什么的?


lvm将存储设备变成PV,然后把一个或多个PV组织成一个或多个卷组,再在卷组上创建LV。创建好LV后对其格式化,就可以挂载使用了。用LVM管理的硬盘好处是:不关机对分区大小调整,扩容方便,一个分区可以位于多块硬盘上。对每个分区的大小没有需要。可以做快照卷。



名词解释


 pv:物理卷,位于LVM的最底层,每个pv由一个分区组成。只有把分区标记为pv后才能加入vg。


 vg: 卷组,由一个或多个pv组成,卷组用来管理pv,删除、添加pv在这里完成。pe的大小也在这里指定。


 pe:物理盘区,位于pv中。默认4M,单位只能为2的N次方,4M、8M等。创建卷组的时候指定后不能再更改。是卷组分配给lv最小容量单位。


 lv:逻辑卷,创建好lv后格式化lv,然后再挂载就可以使用了。


 快照卷: 通过很短的时间对某个分区做一个快照。是一种特殊的lv,一般不住这里写数据,用来做备份。应用场景:对某个分区做备份时,可能需要一个小时。假如第一个复制是的A文件,最后一个复制的B文件,就有可能出现A文件的内容是一小时之前的,复制B文件时可能时间已经过去了一个小时,B文件内容是一小时之后的。这样整个数据就出现了虎头蛇尾,这就很不妥了。如果没有镜像卷,就需要停止原卷写入,然后再备份,这样的耽误时间后果是可想而知的。而快照圈会把在快照之后有变动的文件放到自己的空间保存一份,没有变动的文件还会存储在原分区上。有了这个机制,通过快照卷备份的数据都是同一个时刻的。快照卷大小由变动文件多少决定,最大与原卷一样。快照卷与原卷必须在一个vg上。



lvm创建顺序:硬盘分区-->把分区变成pv-->创建vg-->创建lv-->格式化lv-->挂载

   注意:硬盘分区时,一定要标记分区类型为8e。如不标记有可能把pv拿到其它系统上扫描不到此分区做过pv。



命令


PV相关命令


pvcreate 创建卷组

pvs 查看当前系统的物理卷组

pvdisplay 查看当前系统的物理卷组的详细信息

pvremove 移除pv

 如:pvremove /dev/sdb1

pvmove 把指定pv中的数据都移动到其它pv中,前提其它pv有足够空间。

 如:pvmove /dev/sdb1

pvscan 当pv移动到其它计算机上时pv扫描,



VG相关命令


vgcreate 创建vg

 -s: 指定pe的大小,单位有k,m,g,t,e,p 但要是2的N次方,没有特殊要求不用指定。

vgs 显示当前系统的vg信息,(vg0是系统自带的。)

vgdisplay 显示当前系统的vg详细信息

vgremove 删除vg命令

vgextend vg扩展

vgreduce 对vg进行缩减,如果vg中的pv有数据,需要用pvmove移动pv中的数据

vgscan vg扫描命令

vgrename vg改名


LV相关命令

lvcreate 创建lv

 -n lvname:指定lv名字

 -L 2G:指定lv的大小常用的单位有m,M,g,G,t,T。比如这里指定2G。

 -s 创建快照卷

 -p 指定权限,r为只读,rw为读写。

 

 lvcreate -n mylv -L 2500G myvg

 lvs 显示lv

 lvdisplay 显示lv,更详细

 lvremove 移除lv

 lvextend 扩展lv

 lvreduce 缩减lv

 lvscan 扫描lv


其它命令

resizee2fs  增加或缩减文件系统的命令

fuser 查看某个挂载点是否有进程使用

ex2fsck 检测ext系系文件系统。



创建一个2t的lv,创建好后对其扩展到2.5T。然后对其做快照卷。(以ext系统文件系统示例)


创建LVM


1,系统上挂了5块500G的硬盘,先对2块硬盘分区,指定分区类型标记为8e。

#fidsk /dev/sdc

spacer.gifwKioL1PH61CzbqZgAAM-J3QtguE925.jpg


2,把这分好区的硬盘创建成pv

#pvcreate /dev/sd{c,d}1

wKiom1PH6n7Rw05wAABt96r33YQ840.jpg

  提示创建成功

#pvs

wKioL1PH65jSMSzrAACA5TN58RM874.jpg

    /dev/sda2 是系统自带的。

3,创建卷组

 #vgcreate myvg /dev/sd{c,d}1
 #vgs

spacer.gifwKiom1PH6n7hGcL6AADAPXR_2k4926.jpg

使用pvdisplay命令查看更详细的信息

spacer.gifwKioL1PH65jRi3ZxAAKFILPqWkw789.jpg


4,创建好vg后就可以创建lv了。

 #lvcreate -n mystor -L 999g myvg
 #lvs

spacer.gifwKiom1PH6n7iYsM7AACjNxHhIuM695.jpg

创建好lv后其设备文件在/dev/下和vg名一样的目录里看到连接文件。

spacer.gif

wKioL1PH65iw3lePAABpu0ihyp0839.jpg


5,格式化,挂载使用。

 #mkfs -t ext4 /dev/myvg/mystor
 #mount /dev/myvg/mystor /data

spacer.gifwKioL1PH65iCDeYJAAD4CTWhst0303.jpg

为了以后开机系统自动挂载,给/etc/fstab文件中加入一行

wKiom1PJMOexR0BiAAA-JNxmP_k960.jpg


扩展LVM

1,新硬盘分区,然后添加到vg中

#vgextend myvg /dev/sde1 /dev/sdf1
#vgs

wKiom1PH65LStvLaAADv2Pw6GJE014.jpg

2,加进来了,开始扩展lv

#lvextend -L +500g /dev/myvg/mystor

wKioL1PH7KyxKB6tAAB7ulWXWlw919.jpg

成功了

#lvs

wKioL1PH7KzhzFB8AACq99GXM8I927.jpg

3,该扩展文件系统了。

#resize2fs /dev/myvg/mystor

wKiom1PH65OBVWHEAAEcspfnlEs274.jpg

扩展前

wKioL1PH7KygEmTQAADxQt4AWDE868.jpg

扩展后

wKiom1PH65PBiQQiAAEBgNCRt5s080.jpg



lvm 创建快照卷

    在创建快照卷前一定要确保没有程序对原卷做写操作,否则有创建快照时会把文件内容正在改变时候时态做为快照。为了确保尽量减少做快照时占用lv的时候,这里把三条命令放在一起执行了,第一句命令的意思是临时把原卷的挂载点设置为只读,第二句命令创建快照卷,第三句命令把前面修改原卷挂载点还原。

 mount -o remount,ro /dev/myvg/mystor && lvcreate -L 1g -s -p r -n mystor-snap /dev/myvg/mystor && mount -o remount,rw /dev/myvg/mystor /data


wKiom1PH7EqSiJVxAABYlq4hrKs071.jpg

命令太长,没有全部截下来。

然后挂载快照卷

wKioL1PH7WSBXHG_AAB9xMxuzX8369.jpg

备份完成后快照卷卸载,然后删除快照卷。这时留下快照卷已经没有意义了。

wKiom1PH7ErQZcgXAAA6-nrqB8c991.jpg


总结

    创建LVM的步骤:fdisk创建分区,并标记分区类型为8e(linux lvm)-->创建pv-->创建vg(是否指定pe大小)-->创建lv-->格式化lv-->挂载


    扩展lv的步骤:如果vg空间不够需要给vg添加空间,如果空间足够则使用lvextend命令扩展,然后使用resizee2fs命令扩展分区容量。


    快照卷:必须与原卷在一个vg,且vg要有足够空间。创建快照卷的时候要保证原卷没有程序访问。尽量用最小时间创建原卷。挂载快照卷,备份完成后删除快照卷。


    缩减lv:卸载lv(umount)-->使用(e2fsck -f)强制检测文件系统,确保检测后没有问题-->使用resize2fs 命令缩减文件系统-->使用lvreduce  命令缩减-->挂载缩减后的lv。  注:缩减最小不能低于已使用的空间。



    缩减vg:使用pvmove命令移动要取出pv上的文件到其它pv。前题其它pv空间要足够-->用vgreduce命令移除pv。

        

           


最后附上马哥说过的话:“缩减有危险,操作需谨慎!”