首页 > 代码库 > linux之逻辑卷管理器(lvm)

linux之逻辑卷管理器(lvm)

   在实际生活中,我们往往会遇到这种情况,我们把买来的一块儿硬盘分区成好多磁盘,这样方便我们分类文件,但是同样也出现了一些问题,就是如果该分区存满了怎么办?或者我们想把一块磁盘再次细分,这些问题统统可以用linux下一个强大的管理工具解决,那就是lvm。


那么什么是lvm呢?lvm即:Logical Volum Manager(逻辑卷管理器)

那么一个lvm到底要怎么实现呢?


lvm由三部分组成:pv(物理卷)

                 vg(逻辑卷组)

                 lv(逻辑卷)

   


   简单了说,就是把多块物理盘虚拟成一块盘或者把一块物理盘虚拟成多块盘

【简单理解lvm】   这里的pv指的就是我们得物理存储设备,而我们得物理存储设备并不是大家平时见到的那样,而是在内部分块,我们存储数据时它会把大的数据分成一个一个的小块分别存在物理存储设备的每个块上。而我们的lvm就是一个能够将这些pv组合在一起的管理器,这样就能打破常规的块设备的存储界限,实现把多个物理存储设备整合成一个设备。


所以存储空间边界就分为两部分了:物理边界、逻辑边界

【物理边界与逻辑边界的关系】  既然有了物理边界和逻辑边界,那么我们对于存储空间的扩展和缩减该怎么办呢?

     由上边的叙述可想而知逻辑边界是基于物理边界虚拟出来的,所以不管你逻辑边界再怎么大也不能大于物理边界。

    所以【存储空间的扩展】:先扩展物理边界再扩展逻辑边界

        【存储空间的缩减】:先缩减逻辑边界再缩减物理边界

         注:缩减不能不能少于已有存储的所有数据空间的大小

         如果缩减少于已有存储空间数据大小,那么就要先把数据移出再缩减,避免数据丢失。


既然都知道了逻辑卷的组成了那么接下来就开始创建逻辑卷吧。


【创建逻辑卷】

lvm创建的对象可以是块设备也可以是RAID

创建步骤:先创建pv然后创建vg最后创建lv

【创建pv时可使用的命令】:pvcreate(创建)、pvs(查看)、pvdisplay(查看)、pvremove(移除)、pvmove(移动)、pvscan(扫描)

【创建vg时可使用的命令】:vgcreate(创建)、vgs(查看)、vgdisplay(查看)、vgremove(移除)、vgreduce(删除)、vgscan(扫描)、vgextend(添加)

【创建lv时可使用的命令】:lvcreate(创建)、lvs(查看)、lvdisplay(查看)、lvremove(移除)、lvreduce(删除)、lvscan(扫描)、lvextend(添加)

下面给大家来个事列:

在sdb硬盘上创建两个分区,将这两个分区做成一个逻辑卷

1、创建分区,并把两分区ID设置为8e(linux lvm)

wKioL1PL0tvzBl2IAAK5T0ybets302.jpg


2、创建pv

wKiom1PL0m6zocfgAADTYlxMzMs462.jpg


创建完成后我们查看一下

wKioL1PL09aiH_lCAACdkHu2p24631.jpg


3、创建vg

wKiom1PL01eyHNS-AAGrY5gtKa4038.jpg


此为创建名为“myvg”的卷组,并把/sev下的sdb1和sdb2添加到次卷组中。在查看命令执行的结果中,我们可以看到myvg卷组中有两个pv了。

4、创建逻辑卷

创建逻辑卷的命令为:lvcreate

【lvcreate命令使用格式】lvcreate 选项 逻辑卷名 卷组名

                                 选项有:-n 后跟逻辑卷名

                                         -L 后跟大小(指定逻辑卷空间大小)

                        如:lvcreate -L 2G -n mylv myvg (意为:创建一个名叫mylv的逻辑卷其空间大小为2G,并且卷组为myvg)

wKioL1PL1y_jJeQkAABsgYj3558394.jpg


那么我们创建完逻辑卷后想访问怎么办?

每个逻辑卷的访问路径都有两个:/dev/卷组名/逻辑卷名

                              /dev/mapper/卷组名-逻辑卷名

注:这两个路径都是符号链接,指向的文件为/dev/dm-#(#表示数字)



若想使用此逻辑卷大家不要忘了需要格式化次卷然后挂载哦(虽然为逻辑卷,但是用法和分区相同)


格式化:mke2fs -t ext4 /dev/myvg/mylv

挂载:mount /dev/myvg/mylv 后跟挂载点



【逻辑卷的扩展和缩减】

 扩展:1、先确定扩展的目标大小,并确保对应的卷组中有足够的空间可用。

       2、扩展物理边界    如:lvextend -L 4G /dev/myvg/mylv (意为扩展到4G)

       3、扩展逻辑边界    如:resize2fs /dev/myvg/mylv 4G(意为扩展到4G)

 缩减:1、先确定缩减的目标大小,并确保对应的目标逻辑卷大小有足够的剩余空间可用,可容纳原有所有数据。

       2、先卸载文件系统,并要执行强制检测    :e2fsck -f 后跟设备

       3、缩减逻辑边界    如:resize2fs /dev/myvg/mylv 2G(意为缩减到2G)

       4、缩减物理边界    如:lvreduce -L 3G /dev/myvg/mylv(意为缩减到3G)

注:缩减很危险需慎用,稍不谨慎就会造成数据丢失。



对于某些公司的大数据需要经常备份,但是备份时又出现了一些比较麻烦的问题。

比如:当需要备份的数据量比较大时,我们备份数据的时间也会变得相当长,但在此期间还有数据需要写入怎么办?我们是备份之前没有变的数据呢还是新的数据呢?

遇到这种问题该怎么解决呢?

于是就出现了快照卷

【快照卷】

作用:主要用于实现数据备份

原理:对要进行备份操作的数据进行拍照,记录下当前数据,然后在快照卷内形成一种映射,映射到硬盘中的数据,一旦硬盘中的数据发生变化快照卷就会复制变化前的数据到快照卷内,没有发生变化的数据则不复制到快照卷内,当进行备份操作时,没有变化的数据就会去硬盘中复制,而变化的数据则去快照卷中复制。(因此快照卷的大小不一定要与原存储空间一样大)

【快照卷的创建】

首先快照卷也是一种逻辑卷,所以创建步骤与逻辑卷的创建步骤基本一样。

只不过在最后一步创建逻辑卷时需要加选项“-S”

如:lvcreate -L 512M -n mylv-snap -p r -S /dev/myvg/mylv(意为创建一个大小为512M的名为mylv-snap的只读型快照卷,-p r 意为只读)

注:快照卷是对某逻辑卷进行的,因此必须跟目标逻辑卷在同一卷组中,无需指明卷组。



linux之逻辑卷管理器(lvm)