首页 > 代码库 > 菜鸟的成长记录--LVM

菜鸟的成长记录--LVM

LVM

    LVM的全名是逻辑卷管理器。之所以成为卷,是应为它可以将文件系统像卷一样伸长或缩短。LVM的做法是将几个物理的分区或磁盘通过软件组合成为一块看起来是独立的大磁盘(VG),然后将这块磁盘在经过分区,分成可使用的分区(LV),最终就能够挂载使用了。

 

PV 物理卷

    我们实际的分区需要调整系统标示符(system ID)成为8e(LVM的标示符),然后在经过pvcreate的命令将它转成LVM最底层的物理卷(PV),之后才能够将这些PV加以利用。

 

VG 卷用户组

    所谓的LVM大磁盘就是将许多PV整合成这个VG,所以VG就是LVM组合起来的大磁盘。那么这个大磁盘最大可以达到多少容量呢?这与PE有关,因为每个VG最多仅能包含65534个PE,如果使用LVM默认的参数,则一个VG最大可达256GB的容量。

 

PE 物理扩展快

    LVM默认使用4MB的PE块,而LVM的VG最多仅能含有65535个PE,它是整个LVM中最小的存储块,也就是说,其实我们的文件数据都是由写入PE来处理的。简单的说,这个PE就有点像文件系统里面的block大小。

 

LV 逻辑卷

    最终的VG还会被切成LV,这个LV就是最后可以被格式化使用的类似分区。LV不可以随意指定大小,LV的大小与在此LV内的PE总数有关,如下图:

wKioL1PGmFfzdTt9AAEj6yKa3D4292.jpg

    LVM可弹性更改文件系统的容量,就是通过交换PE来进行数据转换。将原本LV内的PE移转到其他设备中以降低LV容量,或将其他设备的PE加到此LV中以加大容量。

    如果这个VG要扩充的话,加上其它的PV即可,最终的是,LV如果要扩充,也是通过加入VG内没有使用的PE来扩充。

 

命令及示例

    首先先对磁盘进行分区,然后制定磁盘的类型是8e,其实没有设置成为8e也没关系,不过某些linux命令可能检测不到该分区。

wKiom1PGl-niV7f5AAFzSbTEPXY936.jpg

 

PV阶段

    pvcreate:将物理分区新建成为PV

    pvscan:查看目前系统里面任何具有PV的磁盘

    pvdisplay:显示出目前系统上面的PV状态

    pvremove:将pv属性删除,让该分区不具有PV属性

 

    #pvcreate /dev/sdb{1,2}

    wKiom1PGmGOBbkaAAACGoVT8Vv0761.jpg

    #pvscan

    wKiom1PGmMPC-mRWAACZfWa74J4134.jpg

    #pvdisplay

    wKioL1PGmhXyJe0ZAAG_t9A7ViY142.jpg

 

VG阶段

    vgcrrete:就是主要新建vg的命令

    vgscan:查找系统上面是否存在vg

    vgdisplay:显示目前系统上面的vg状态

    vgextend:在vg内增加额外的pv

    vgreduce:在vg内删除pv

    vgchange:设置vg是否启动

    vgremove:删除一个vg

 

    #vgcreate -s 8M kyvg /dev/sdb1 新建一个vg,指定pe大小为8M,组卷名叫kyvg,这里我先把sdb1加进来。

    wKioL1PGmw-z4CBgAABRXSQ1mK0086.jpg

    #vgs  查看vg的当前信息,显示pv有一个,大小为5G。

    wKiom1PGmjKQChwgAABh5EhwbE0485.jpg   

    #vgxtend kyvg /dev/sdb2   这时我再把sdb2加入kyvg组里,查看一下

    #vgs    可以确定sdb2已经加入到卷组中

    wKioL1PGm7DzSYdQAACUuMCPj-o037.jpg

    #pvdisplay    从这里我们可以看到sdb1和sdb2已经加入卷组,创建卷组(VG)时,指定的PE大小是8M。相当于这个卷组中可以存放500G大小的文件。

    wKioL1PGnC6AHvvDAAG7L54Wix4062.jpg

LV阶段

    创造出VG以后,就可以新建分区了,这个分区就是所谓的LV

    lvcreate:新建lv

    lvscan:查看系统上面的lv

    lvdisplay:显示系统上面的lv状态

    lvextend:在lv里面增加容量

    lvreduce:在lv里面减少容量

    lvremove:删除一个lv

 

    # lvcreate  -L  2G  -n  mylv  /dev/kyvg   在卷组里新建一个lv,名字叫mylv,大小为2G

    wKioL1PGnW2ytoj4AABJIkWqjtY838.jpg

    # lvdisplay

    wKiom1PGnIzBburZAAFYczPzsLU780.jpg

    

    Lv的访问路径

        1、/dev/VG_NAME/LV_NAME

            /dev/kyvg/mylv

        2、/dev/mapper/VG_NAME-LV_NAME

            /dev/mapper/kyvg-mylv

        此两者均为符号链接,指向的文件为/dev/dm-#

    wKiom1PGnhKyDKvoAAD_CjEZnt8825.jpg

    好了,分区创建完了,接下来就可以格式化并挂载了

    # mke2fs  -t  ext4  /dev/kyvg/mylv   格式化mylv分区

    # mount  /dev/kyvg/mylv  /tmp/ky     把mylv这个分区挂载到/tmp/ky目录下

    #df  -h                                                 查看磁盘信息,发现以经创建成功

    wKioL1PGn6PShJgQAAEo_K3g2NQ156.jpg

    wKioL1PGn9ahMKyjAAEdotsJhIE307.jpg

    

LV扩展

    扩展lv空间大小,首先我们先查看vg的空间大小,是否有空闲的空间(新PE)在进行扩展。若果没有空闲的空间还得重新加pv,在把pv加进kyvg组卷里。

    查看到有空闲空间,还有8G空间,可以进行扩展,我在这做实验,给它扩展3G的空间,达到5G。

    wKioL1PGoO_Tkmr2AABhKViXFQs039.jpg

    首先要为lv扩展边界,给lv增加3G的空间

    wKioL1PGoYbyWgGPAABQnFNV29A056.jpg

    查看逻辑卷信息,这时,我们看到lv确实增加了3G,变成了5G,但是我们再来查看一下磁盘空间信息。

    wKiom1PGoLnQkxCHAACaSFWj9ao177.jpg

    wKioL1PGohqjmkLfAADn1Olu_2U476.jpg

    这里依然还是2G,这是文件系统没有相对增加,所以我们要在不umount的情况下我们进行在线直接处理

    wKioL1PGomOADc7HAADRyiLO0TQ250.jpg

    在查看一下lvs,这样就完成了在线处理,扩展到此结束

    wKiom1PGoYnCUNWwAAD0-zDkHa4147.jpg

 

缩减lv

    如果觉得给lv分的太大,感觉空间浪费的话,我们还可以对lv进行空间缩减,需要注意的是,缩减必须要在离线状态下进行,所以,必须先umount

    # umount   /tmp/ky

    先强制检测文件系统,确保没有问题了,在进行缩减。

    先确定缩减后的目标大小;并确保对应的目标逻辑卷大小中有足够的空间可容纳原有所有数据,缩减很危险!谨慎操作!

    wKioL1PGo2WzA_I1AADwkzRJOpg529.jpg

    确保没问题之后,然后进行缩减,由5G的空间缩减到3G的空间

    wKiom1PGoofzNNK0AACUvvl8TZI065.jpg

    先挂载,再查看,缩减到此结束,缩减很危险,后果很严重

    wKioL1PGo-XwRyRJAADxHNTsM-s999.jpg

    

 

 

    

 

 

 

 

 

本文出自 “鱼儿” 博客,请务必保留此出处http://kyfish.blog.51cto.com/1570421/1439234