LVM(Logical Volume Manager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。如今不只仅是Linux系统上可使用LVM这种磁盘管理机制,对于其它的类UNIX操做系统,以及windows操做系统都有相似与LVM这种磁盘管理软件。
LVM的工做原理其实很简单,它就是经过将底层的物理硬盘抽象的封装起来,而后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,咱们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其经过对底层的硬盘进行封装,当咱们对底层的物理硬盘进行操做时,其再也不是针对于分区进行操做,而是经过一个叫作逻辑卷的东西来对其进行底层的磁盘管理操做。好比说我增长一个物理硬盘,这个时候上层的服务是感受不到的,由于呈现给上次服务的是以逻辑卷的方式。 windows
1.优势服务器
①.能够在系统运行的状态下动态的扩展文件系统的大小。
在Linux操做系统中咱们的磁盘管理机制和Windows上的都差很少,绝大多数都是使用MBR(Master Boot Recorder)都是经过先对一个硬盘进行分区,而后再将该分区进行文件系统的格式化,在Linux系统中若是要使用该分区就将其挂载上去便可,windows的话其实底层也就是自动将全部的分区挂载好,而后咱们就能够对该分区进行使用了。
可这样作的话会带来不少问题,好比咱们使用的一个分区所剩空间大小已经不够使用了,这个时候咱们无法对分区进行扩充,咱们只能经过增长硬盘,而后在新的硬盘上建立分区,对分区进行格式化,而后将以前分区的全部东西都拷贝到新的分区里面才行。可是新增长的硬盘是做为独立的文件系统存在的,原有的文件系统并无获得任何的扩充,上层应用只能访问到一个文件系统。这样的方式对我的的电脑来讲可能还能接受,可是若是对于生产环境下的服务器来讲,这是不可接受的。由于若是要把一个分区的内容都拷贝到另外一个分区上去,势必要首先卸载掉以前的那个分区,而后再对整个分区进行拷贝,若是服务器上运行着一个重要的服务,要求是 7*24 小时运行正常的,那么卸载掉分区这是不可想象的,同时若是该分区保存的内容很是很是的多,那么在对分区进行转移时时间可能会耗费好久,因此,这个时候咱们就会受到传统磁盘管理的限制,由于其不可以进行动态的磁盘管理。所以,为了解决这个问题,LVM技术就诞生了!这也是LVM最大的优势。ide
②.文件系统能够跨多个磁盘,所以文件系统大小不会受物理磁盘的限制。
③.能够增长新的磁盘到LVM的存储池中。
④.能够以镜像的方式冗余重要的数据到多个物理磁盘。
⑤.能够方便的导出整个卷组到另一台机器。
2.缺点性能
①.在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,而且不容许在快照卷组中使用)。
②.当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
③.由于加入了额外的操做,存贮性能受到影响。操作系统
1.名词解释3d
如图所示就是LVM的基本组成
PV(Physical Volume):物理卷,处于LVM最底层,能够是物理硬盘或者分区。
PP(Physical Extend):物理区域,PV中能够用于分配的最小存储单元,能够在建立PV的时候制定(默认为4MB),如1M, 2M, 4M, 8M, 32M, 64M…组成同一VG中全部PV的PE大小应该相同。
VG(Volume Group):卷组,创建在PV之上,能够含有一个到多个PV。
LV(Logical Volume):逻辑卷,创建在VG之上,至关于原来分区的概念。不过大小能够动态改变。
2.LVM的建立
①.首先咱们要建立两个分区为接下来的LVM作准备,在这里我添加了一块空硬盘sdb,在上面建立了两个分区sdb1和sdb2各500M。
②.用pvcreate命令在新建的分区上建立PV
在这里是由于这两个分区以前被格式化为ext4系统了,因此这里要把它变为逻辑卷须要输入Y确认更改
建立完后咱们能够用pvs查看或者pvdisplay查看详细信息
由于在这以前我作过一次LVM因此我这里有好几个PV卷组,而像上图中用pvs命令查看时咱们发现咱们新创的PV卷组和之前建立的有点不一样,它们的Attr部分不同,这是由于咱们新建立的PV卷组尚未激活,a---表示已激活的pv卷组。VG那一栏是所属的VG组,由于咱们尚未划分VG组,因此这一栏也是空。
③.使用vgcreate命令建立一个VG组,并将咱们建立的两个PV加入VG组
一样咱们也是用vgs和vgdisplay命令查看卷组信息及详细信息
vgdisplay后跟卷组名能够只查看这个卷组的详细信息,不跟卷组名是查看全部卷组的详细信息。
这里咱们看到咱们创好的vg卷组PE大小为4MiB,这是PE的默认大小,PE是卷组的最小储存单位,咱们也能够用-s参数来修改,不过这只能才建立卷组时使用,一旦卷组建立成功是无法再去修改PE大小的。
④.使用lvcreate命令从VG中建立一个逻辑卷
这里咱们使用-L参数后跟的是你要设定的逻辑卷大小,这个大小必须是是你设定的PE值的整数倍,若是不是它会给你分一个比你设定的大一点的空间也就是向上去整数倍空间。也可使用-l但后面跟的就是PE数量像上个步骤中咱们划分的卷组PE值为4MiB,数量为254,咱们也可使用-l跟数量,那划分的逻辑卷大小就为4x你划分的数量MiB。
通常用大L 指定大小,弊端就是有可能用不完vg里面的空间
用小 l,-l 127, 127 个PE ,弊端是须要计算,好比一个PE 4M 127x4M=508M 可是不会出现用不完vg的空间的状况
-n参数后跟逻辑卷名字,是对建立的卷组命名,最后跟的是卷组名。
逻辑卷的查看命令也是lvs和lvsdisplay
这里lvdisplay后跟卷组是查看这个卷组的详细信息,只输入lvdisplay是显示全部逻辑卷的详细信息
⑤.咱们使用mkfs命令对建立的卷组进行格式化
⑥.Linux下的文件系统须要被挂载后才能使用,咱们建立一个空目录,再把建立好的逻辑卷挂载上就可使用了。
要想实现开机自动挂载能够写在fstab表里
3.LVM的扩容与缩小
①.逻辑卷的扩容
LVM的强大之处不仅是它能够扩容压缩,更重要的是它能够支持在线扩容,但咱们首先要保证VG中有足够的空闲空间。
咱们使用lvextend命令来对逻辑卷进行扩容
咱们先使用vgs查看VG所剩空间是否充足,接着再对lv1进行扩容。-L参数和建立卷组的-L参数一个性质,后面都是直接跟大小,不过这里要注意+100M是增长100M空间,若是不跟+是扩容到指定的大小,同理若是使用-l参数后,后面跟的就是要增长多少PE值。最后跟的是想要扩容的逻辑卷。
扩容后咱们查看一下逻辑卷的大小,确实变成了300M
但这个时候咱们用df-h命令查看一下发现挂载的文件系统并无增大,这就须要咱们使用resize2fs命令手动同步一下文件系统,其实咱们有更简单的操做,就是在扩容的同时加上-r参数他会自动扩展文件系统大小,像这样
②.卷组的扩容
若是咱们发现卷组所剩空间已将不能知足需求了,这时候咱们就须要使用vgextend命令对卷组进行扩容
咱们先添加一块硬盘sdc
在虚拟机中这个时候咱们一般须要重启,这里咱们可使用echo "- - -" > /sys/class/scsi_host/host0/scan命令让系统从新扫描SCSI总线来添加设备,由于添加的是SCSI磁盘,因此扫描的是SCSI总线
首先将要添加的硬盘格式化为PV
再将新的PV添加到指定的卷组中去
咱们能够看到vg卷组大小已经改变了。
②.逻辑卷的缩减
逻辑卷扩容能够在线操做可是缩减必须是离线执行,须要先卸载已挂载的逻辑卷。[root@localhost ~]# umount /disk1/
扩容逻辑卷咱们是先扩大逻辑卷再扩大文件系统,而缩小逻辑卷就须要咱们反着来,咱们要先缩小文件系统,再去缩小逻辑卷
缩小文件系统前咱们要先对文件系统作个扫描检测,若是咱们直接使用resize2fs系统会提示让你先对文件系统进行检测,这是为了保护缩减文件系统时不对数据损害。
接着咱们再来缩减逻辑卷code
注意:文件系统大小和逻辑卷大小必定要保持一致才行。若是逻辑卷大于文件系统,因为部分区域未格式化成文件系统会形成空间的浪费。
咱们能够看到逻辑卷已经缩小了,接着咱们再来挂载看看文件系统大小
咱们能够看到文件系统也变小了
缩小卷组
咱们能够用vgreduce去缩小VG卷组的大小
缩小VG卷组也就是把一个PV从卷组中移除,但咱们要先确定PV中没有数据,否则就会形成数据的丢失
接着咱们可使用pvremove命令移除PV,这样就让分区又从新变成了普通分区。blog
下面咱们就对整个LVM的工做原理进行个总结:
1.物理磁盘被格式化为PV,空间被划分为一个个的PE
2.不一样的PV加入到同一个VG中,不一样PV的PE所有进入到了VG的PE池内
3.LV基于PE建立,大小为PE的整数倍,组成LV的PE可能来自不一样的物理磁盘
4.LV如今就直接能够格式化后挂载使用了
5.LV的扩充缩减实际上就是增长或减小组成该LV的PE数量,若是操做正确其过程不会丢失原始数据
PS:咱们实际生产操做中不多用到逻辑卷的缩减,由于缩减很容易就会形成数据损坏,这是得不偿失的,因此咱们不推荐对逻辑卷进行缩减。rem