Linux LVM的相关操作

LVM的主要特点就是可以将已经格式化的分区进行动态的缩减。LVM的实现方式是将几个实体的partitions或者disk通过软件组成一个大磁盘(VG),然后可以将大磁盘进行切割,切割后可得到lv(相当于分区),在lv上进行格式化挂载。vg和lv的容量都可以动态地进行缩减。下面来说一下具体过程:

1)pv阶段。

pv阶段涉及到的命令:

  1、pvcreate:将分区partition建立成为pv

  2、pvscan:检索目前系统中具有pv的磁盘,显示pv

  3、pvdisplay:显示系统中pv的状态

  4、pvremove:删除pv,该partition不在具有pv属性

  5、pvmove:可以将一个分区pe块上的数据转移到另一个分区的pe块上

      例:pvmove  /dev/sda10 /dev/sda11

首先分割出4个分区,通过pvcreate创建pv。在划分分区时,注意要将systemID改成8e(即Linux LVM)

技术分享

创建pv(pvcreate /dev/sda{10,11,12,13})

技术分享


2)VG阶段。

VG阶段使用到的命令:

  1、vgcreate:创建VG(-s:指定pe块大小)

           例:vgcreate [-s N[mgt]] vg名称  所使用的pv

  2、vgscan:简要显示系统上的vg信息

  3、vgdisplay:显示vg的状态

  4、vgextend:在VG上增加额外的pv(扩展VG)

  5、vgreduce:在VG上移除pv(缩减VG)

  6、vgchange:设定VG是否启动

  7、vgremove:删除VG

将前3个pv组成一个vg,指定pe大小为8M(vgcreate -s 8m babyVG /dev/sda{10,11,12})

技术分享

VG创建完成,VG可以通过添加pv或者删除pv来动态的扩大(vgextend)和缩减(vgreduce)。

技术分享

上图将/dev/sda10这块pv从babyVG中移除,VG容量变为6G,再给他添两块/dev/sda10与/dev/sda13

技术分享

技术分享

通过pvscan查看pv信息,4块pv已经全部属于babyVG。

3)LV阶段。

LV阶段涉及到的命令:

  1、lvcreate:创建lv

          例:lvcreate [-l N] [-L size] [-n lvname] VGname

                -l:后面指定pe数量

                -L:size指定lv大小(-l与-L选择一个指定大小即可)

                -n:后面接lv名称

  2、lvscan:查看系统上的lv

  3、lvdisplay:显示lv状态

  4、lvextend:扩大lv容量

          例:lvextend [-l +N] [-L +size[mg]]

                -l:后面指定pe数量,+100

                -L:size指定要增加的大小 +3G

  5、lvreduce:缩减lv容量

          例:lvreduce [-l -N] [-L -size[mg]]

                -l:后面指定pe数量,-100

                -L:size指定要缩减的大小 -3G

  6、lvresize:重新设置lv容量

          例:lvresize [-l N] [-L size[mg]]

                -l:重新设置lv的pe数量

                -L:重新设置lv大小

  7、lvremove:删除lv

创建一个LV,进行格式化,挂载。

技术分享

lv创建完毕,大小5G

技术分享

这样就挂载完毕,这个文件系统就可以正常使用了。

LV的访问路径

  1、/dev/VG_NAME/LV_NAME

  2、/dev/mapperVG_NAME-LV_NAME

此两者均为符号链接,指向的文件是/dev/dm-N(/dev/dm-0,/dev/dm-1.....)

4)扩大LV

如果哪一天babyLV这个分区的容量不够了,可以对babyLV 这个分区进行扩容,如果VG不够大,可以先对VG进行扩容,lv的扩容可以在线进行,不需要umount文件系统。

在扩大LV时,可以使用的命令很多:

  1、lvextend -l +N

  2、lvextend -L +size(mg)

  3、lvresize -l N

  4、lvresize -L size(mg)

技术分享

技术分享

可以看到文件系统已经扩大至7G

5)缩小LV

如果LV过大,可以缩减LV。如果VG的使用率很低,可以将个别pv从中抽离。在缩减LV时需要注意,要先卸载文件系统,然后对文件系统进行强制检测(fsck -f),然后减小文件系统的容量(resize2fs),之后才可以减小LV的大小。

技术分享

在缩减LV时,文件系统缩小的容量可能无法和LV缩小的容量完全一样,但是整个过程中LV的容量必须大于文件系统的容量,所以这里文件系统缩小之后容量可以稍稍小于LV缩小之后的容量,缩减完毕后,在resize2fs至LV的大小以充分利用空间。我这里现将文件系统resize2fs至3G,等完成之后在resize2fs至LV的大小(4G)

技术分享

这时候VG利用率不高,假如我想腾出/dev/sda11用于其他地方

技术分享

技术分享

可以看见建立在/dev/sda11上的pv中的pe块都写有数据,不能直接将其移除,可以将/dev/sda11上写有数据的pe块都转移至/dev/sda13上,因为/dev/sda13上的pe块都未被使用。

技术分享

可以看见所有的pe都已经转移至/dev/sda13,然后就可以对其进行移除了。

技术分享

/dev/sda11已经从babyVG中移除。

6)快照

可以对VG上的某一个LV进行快照,快照那一刻该LV上的系统信息就会被记录下来。可以手动分配快照的大小,一般是小于等于被快照的LV大小。该LV上的某个pe上的数据发生了更改,原始的pe就会被移送至快照区域,没有发生更改的pe块则被LV上的文件系统和快照共享。当然,如果被修改的数据的总容量大于快照区的容量,快照就会失效。由于LV和快照共享很多pe块,所以快照区必须和被快照的LV在同一个VG上。来建立一个快照。

命令:lvcreate -s [-l N][-L size] -n 快照名 /dev/......(被快照的LV)

技术分享

快照创建完成。

技术分享

将快照进行挂载之后,快照的信息与别快照的LV一模一样(包括里面的数据)。当然,也可以将被快照的LV当做备份,把所有的测试放到快照区域中,测试完了即可将快照删除,不会影响被快照的LV中的数据。这也是个不错的选择。


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。