• LVM逻辑卷管理


    一. 什么是LVM 

    逻辑卷管理lvm是硬盘的一个系统工具,lvm可以创建和管理逻辑卷,而不是直接使用物理硬盘,可以弹性管理逻辑卷的扩大缩小,操作简单,不损坏已存储的数据,可以随意将新的硬盘添加到lvm,直接扩展已经存在的逻辑卷.

     物理卷(pv):把常规的磁盘设备通过pvcreate命令对其进行初始化,形成物理卷.就是把整块硬盘或者分区做成物理卷.

    卷组(vg):把多个物理卷组成一个逻辑的整体,这样卷组的大小就是多个硬盘之和.或者理解就是由一个或多个pv组成的整体.

    逻辑卷(lv):从卷组中划分需要的空间大小出来,用户仅需对其格式化即可挂载使用.从vg中切割出来的空间用于创建文件系统.

    基本单元(pe):分配的逻辑大小的最小单元,默认为4MB的基本块.(假设分配100MB逻辑空间,则需要创建25个pe)

    lvm优点:

    1.可以在系统运行的状态下动态的扩展文件系统的大小.

    2.文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制.

    3.可以增加新的磁盘到lvm的存储池中.

    4.可以以镜像的方式冗余重要的数据到多个物理磁盘.

    5.可以方便的导出整个卷组到另一台机器.

    缺点:

    1.因为加入了额外的操作,存取性能受到影响.

    2.当卷组中的一个磁盘损坏时,整个卷组都会受到影响.

    解决方案:底层使用raid,在raid基础上做lvm

    二.lvm的基本使用

     下载安装:yum install -y lvm2 

    1.制作物理卷:pvcreate

    #整块硬盘做出物理卷
    [root@egon ~]# pvcreate /dev/sdc
    硬盘分区后,每个分区做成物理卷
    [root@egon ~]# pvcreate /dev/sdb1 
    [root@egon ~]# pvcreate /dev/sdb2 
    [root@egon ~]# pvcreate /dev/sdb3 
     
    #查看物理卷命令:pvs,pvscan
    [root@egon ~]# pvs
    PV VG Fmt Attr PSize PFree
    /dev/sdb1 lvm2 --- 1.00g 1.00g
    /dev/sdb2 lvm2 --- 1.00g 1.00g
    /dev/sdb3 lvm2 --- 1.00g 1.00g
    /dev/sdc lvm2 --- 20.00g 20.00g
    [root@egon ~]# pvscan
    PV /dev/sdb1 lvm2 [1.00 GiB]
    PV /dev/sdc lvm2 [20.00 GiB] PV /dev/sdb2 lvm2 [1.00 GiB]
    PV /dev/sdb3 lvm2 [1.00 GiB]
    Total: 4 [23.00 GiB] / in use: 0 [0 ] / in no VG: 4 [23.00 GiB]
    可以看到,在我们的系统中,/dev/sdb1-3这三个分区是物理卷。最后一行的意思是:
    共4个物理卷[大小]/使用了 1个卷[大小]/空闲 3 个卷[大小]
     
    #删除物理卷命令:pvremove
    [root@localhost ~]# pvremove /dev/sdb1
     
    2. 制作卷组(vg):
    #建立卷组的命令:vgcreate
    vgcreate 卷组名 物理卷名
    [root@egon ~]# vgcreate vg1 /dev/sdb1 /dev/sdc 制作一个vg1卷组,包含/dev/sdb1和/dev/sdc两个pv
    Volume group "vg1" successfully created
    [root@egon ~]# vgcreate vg2 /dev/sdb2 /dev/sdb3 制作一个vg2卷组,包含/dev/sdb2和/dev/sdb3两个pv
    Volume group "vg2" successfully created 
     
    #查看卷组命令:vgs
    [root@egon ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 2 0 0 wz--n- 20.99g 20.99g
    vg2 2 0 0 wz--n- 1.99g 1.99g
     
    #增加卷组:vgextend
    [root@localhost ~]# vgextend vg1 /dev/sdb7
    Volume group "vg1" successfully extended
    把/dev/sdb7物理卷加入vg1卷组
     
    #删除卷组:vgremove
    [root@localhost ~]# vgremove vg1
    Volume group "vg1" successfully removed
     
     
    3.制作逻辑卷(lvm)
    命令:lvcreate 
    选项:

    -L 容量:指定逻辑卷大小,单位为 MB、GB、TB 等;

    -n 逻辑卷名:指定逻辑卷名;

    [root@egon ~]# lvcreate -L 100M -n lv1_from_vg1 vg1
    [root@egon ~]# lvcreate -L 200M -n lv2_from_vg1 vg1
     
    #查看逻辑卷:lvs
    [root@egon ~]# lvs
    LV VG Attr LSize Pool Origin Data% Meta% Move Log
    Cpy%Sync Convert
    lv1_from_vg1 vg1 -wi-a----- 100.00m
    lv2_from_vg1 vg1 -wi-a----- 200.00m
    lv1_from_vg2 vg2 -wi-a----- 300.00m
    lv2_from_vg2 vg2 -wi-a----- 400.00m 
     
    #删除逻辑卷:lvremove 
    [root@localhost ~]#lvremove 逻辑卷的设备文件名
    我们删除逻辑卷,记得在删除前要先卸载。 命令如下:
    [root@localhost ~]# umount /dev/vg1/lv1_from_vg1
    [root@localhost ~]# Ivremove /dev/vg1/lv1_from_vg1
    Do you really want to remove active logical volume lv1_from_vg1? [y/n]:y
    #如果这里选择y,就会执行删除操作,逻辑卷内的所有数据都会被清空
     
     
    4. 制作文件系统与挂载
    制作文件系统:
    mkfs.xfs /dev/vg1/lv1_from_vg1 
    挂载:
    mount /dev/vg1/lv1_from_vg1 /test1/
     
    5. 动态扩容:
    #新增一个分区
    fdisk /dev/sdb ......
    partprobe
    ls /dev/sdb4
     
    #新增一个pv
    [root@egon ~]# pvcreate /dev/sdb4
     
    #把新增的pv扩到vg2卷组中
    [root@egon ~]# vgextend vg2 /dev/sdb4
     
    # 对逻辑卷lv1_from_vg2扩容
    [root@egon ~]# lvextend -L +1000M /dev/vg2/lv1_from_vg2
     
    #扩展逻辑卷后需要更新文件系统
    [root@egon ~]# xfs_growfs /dev/vg2/lv1_from_vg2 
     
     
    6.动态缩容与删除
    #不建议缩容,并且xfs不支持缩容.
    #删除
    删除逻辑卷之前需要先卸载挂载点
    [root@egon ~]# umount /test3
    [root@egon ~]# lvremove /dev/vg2/lv1_from_vg2
    删除卷组(vg)
    [root@egon ~]# vgremove vg2
    删除物理卷pv:
    注意只能删除那些不属于任何卷组(vg)的物理卷(pv)
    [root@egon ~]# pvremove /dev/sdb2
    [root@egon ~]# pvremove /dev/sdb3
     
     
     
    三. 快照
     

     注意:

    1.vg中需要预留存放快照本身的空间,不能全部被占满

    2.快照所在的卷组(vg)必须与被备份的lv所在卷组相同,否则创建快照会失败.

    总结:快照的本质就是一个特殊的lv,创建快照后,如果源数据卷中的文件被更新了,会将老数据赋给快照的空间,这就要求快照的空间也是够用的.
     
    #利用快照恢复单个文件
    首先查看逻辑卷所在的卷组容量是否充足
    vgs

    [root@allenzhu ~]# vgs
    VG #PV #LV #SN Attr VSize VFree
    vg1 2 1 0 wz--n- 14.99g 4.99g

     
    在vg1卷组中创建一个lv1_vg1逻辑卷的快照
     lvcreate -L 1G -s -n lv1_vg1.bak /dev/vg1/lv1_vg1
     
    先卸载源数据和快照,在进行恢复,快照会自动删除,是一次性的
    lvconvert --mergesnapshot /dev/vg1/lv1_vg1.bak
     
     

  • 相关阅读:
    MyBatis中Like语句使用总结
    使用dom4j解析xml为json对象
    实体类里布尔类型在数据库里可以用整型映射
    Java枚举根据key获取value
    Oracle和Mysql中mybatis模糊匹配查询区别
    解决3 字节的 UTF-8 序列的字节 3 无效
    git上传代码到github
    OpenShift 3.11离线环境的jenkins演示
    OpenShift下的JVM监控
    OpenShift 4.1 演示
  • 原文地址:https://www.cnblogs.com/allenzhu128/p/13949953.html
Copyright © 2020-2023  润新知