逻辑卷管理器(LVM)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逻辑卷管理器(LVM)相关的知识,希望对你有一定的参考价值。

LVM

 逻辑卷允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小,其实是对磁盘空间、可以是硬盘、也可以是分区,而且可以有多个分区和磁盘,并且不要求大小一样,跟raid不一样,然后我们把普通的磁盘或者分区称为linux的块设备
  注意:在生产中逻辑卷需要配合硬件raid来使用

逻辑卷怎么管理和创建呢

  1、把块设备,普通的硬盘设备变成物理卷 Physical Volumes 简称PV
 如何创建物理卷用到的命令是pvcreate
   2、接着把创建好的物理卷加入到大的逻辑概念组中,叫作卷组 Volumes Group 简称VG
 创建卷组的命令 vgcreate
  3、逻辑卷 就是在卷组的基础上创建的逻辑的分区, 叫做logical volumes 简称 LV
 创建逻辑卷的命令 lvcreate

LVM: Logical Volume Manager,Version: 2

dm:device mapper,将一个或多个底层块设备组织成一个逻辑设备的模块;
逻辑卷的核心就是dm
  设备名:/dev/dm-#
软链接:
  /dev/mapper/VG_NAME-LV_NAME
    /dev/mapper/vol0-root
  /dev/VG_NAME/LV_NAME
    /dev/vol0/root
        PV:物理卷
        VG:卷组
        LV:逻辑卷
        PE:物理盘区
        LE:逻辑盘区
 功能:
    用来扩展或者缩减逻辑卷的时候一个单位,它把逻辑卷的总空间切割成一个一个的PE,它的增长或者缩减都是以PE的整数倍来实现的

pv管理工具;

  pvs;简要pv信息显示
  pvdisplay;显示pv的详细信息
  pvcreate /path/device  #创建pv

vg管理工具:

 1、显示卷组
   vgs
   vgdisplay
 2、创建卷组
  vgcreate[-s #[kKmMgGtTpPeE]] VolumeGroupNamePhysicalDevicePath[PhysicalDevicePath...]
 3、管理卷组
  vgextendVolumeGroupNamePhysicalDevicePath [PhysicalDevicePath...]
  vgreduceVolumeGroupNamePhysicalDevicePath [PhysicalDevicePath...]
 4、删除卷组
  先做pvmove,再做vgremove

lv管理工具

 1、显示逻辑卷
  lvs
  lvdisplay
  2、创建逻辑卷
  lvcreate-L #[mMgGtT] -n NAME VolumeGroup
  lvcreate-l 60%VG -n mylvtestvg
  lvcreate-l 100%FREE -n yourlvtestvg
  3、删除逻辑卷
  lvremove/dev/VG_NAME/LV_NAME
  4、重设文件系统大小
  fsadm[options] resize device [new_size[BKMGTEP]]
  resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size]

扩展和缩减逻辑卷

注意缩减逻辑卷只能在ext系列上进行,xfs只能扩容,不支持缩减、尤其注意缩减时要先做备份以免数据损坏
 1、扩展逻辑卷:
   lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
   resize2fs /dev/VG_NAME/LV_NAME
   lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME
  2、缩减逻辑卷:
   umount/dev/VG_NAME/LV_NAME
   e2fsck -f /dev/VG_NAME/LV_NAME
   resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT]
   lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
   mount

实验操作

1、创建pv
            [[email protected] ~]# pvcreate /dev/sdb1 /dev/sdg

        2、创建vg 指定PE大小为8M
            [[email protected] ~]# vgcreate vg0 -s 8M /dev/sd{b1,g}

        3、创建逻辑卷
            [[email protected] ~]# lvcreate -n lv0 -L 2G vg0
            [[email protected] ~]# lvcreate -n mysql -l 100%FREE vg0 

        4、创建文件系统
            mkfs.ext4 /dev/vg0/lv0 
            mkfs.xfs /dev/vg0/mysql

        5、挂载逻辑卷
            [[email protected] ~]# mkdir /mnt/lv0
            [[email protected] ~]# mkdir /mnt/mysql
            [[email protected] ~]# mount /dev/vg0/lv0 /mnt/lv0/
            [[email protected] ~]# mount /dev/vg0/mysql /mnt/mysql/

        6、扩容现有的逻辑卷
            a、先扩容pv
                [[email protected] ~]# pvcreate /dev/sdc
            b、再把pv新添加的硬盘/dev/sdc加到vg里
                [[email protected] ~]# vgextend vg0 /dev/sdc
            c、扩展/dev/vg0/lv0
                [[email protected] ~]# lvextend -L +2G /dev/vg0/lv0 
            d、扩展之后空间没有同步还是原来的空间需要同步,同步前先确定是哪种的文件系统,比如说ext和xfs同步方法不同需要用df -hT看已挂载的文件系统
                [[email protected] ~]# df -hT
                Filesystem              Type      Size  Used Avail Use% Mounted on
                /dev/mapper/centos-root xfs        50G  4.0G   47G   8% /
                ........
                /dev/mapper/vg0-lv0     ext4      2.0G  6.0M  1.8G   1% /mnt/lv0
                /dev/mapper/vg0-mysql   xfs       2.0G   33M  2.0G   2% /mnt/mysql

            e、同步/dev/vg0/lv0 ext系列同步resize2fs 后面跟的是设备名
                [[email protected] ~]# resize2fs /dev/vg0/lv0

            f、扩展xfs文件系统的/dev/vg0/mysql
                [[email protected] ~]# lvextend -L +1G /dev/vg0/mysql
            g、扩展完之后也需要同步,不过xfs文件系统同步跟ext系列不一样 xfs_growfs 跟上挂载点即可
                [[email protected] ~]# xfs_growfs /mnt/mysql/

            h、扩展空间+自动同步文件系统,ext和xfs通用,一步到位
                [[email protected] ~]# lvextend -r -L +1G /dev/vg0/mysql

        7、缩减空间,xfs缩减不了、只有ext系列可以缩减,注意:缩减一定要先做备份
            1、缩减不支持在线缩减必须要先取消挂载
                [[email protected] ~]# umount /mnt/lv0/
            2、检查文件系统的完整性,这步是必不可少的,没有这步不能进行下一步的操作
                [[email protected] ~]# fsck -f /dev/vg0/lv0
            3、缩减先缩减文件系统、跟创建时相反
                [[email protected] ~]# resize2fs /dev/vg0/lv0 2G
            4、缩减逻辑卷,大小要和缩减文件系统统一,查看缩减后的大小
                [[email protected] ~]# lvreduce -L 2G /dev/vg0/lv0 
                [[email protected] ~]# lvdisplay /dev/vg0/lv0 
            5、操作完之后再挂载
                mount /dev/vg0/lv0 /mnt/lv0

跨主机迁移卷组

                ## 为了不出现意外,万一对方服务器已有了相同的逻辑卷名称,需要先改名
           1、改名,只要改vg名即可,逻辑卷名也可以改
                [[email protected] mysql]# vgrename vg0 newvg0
                [[email protected] mysql]# lvrename /dev/newvg0/lv0 newlv0
            2、取消挂载,因为这里另外一个逻辑卷也在同一个磁盘上都得取消挂载
                [[email protected] mysql]# umount /mnt/lv0/
                [[email protected] ~]# umount /mnt/mysql/
            3、设置卷组为非活动状态,查看是否为非活动状态
                [[email protected] ~]# vgchange -an newvg0 
                0 logical volume(s) in volume group "newvg0" now active
                [[email protected] ~]# lvdisplay
            4、把卷组设置成导出状态
                [[email protected] ~]# vgexport newvg0 
                    Volume group "newvg0" successfully exported
                [[email protected] ~]# lvdisplay
                     Volume group newvg0 is exported
            5、把硬盘拔出接到另外一台上去
            6、导入新加的,要倒整体导入
                [[email protected] ~]# vgimport newvg0 
            7、激活
                [[email protected] ~]# vgchange -ay newvg0 
            8、挂载
                mount /dev/newvg0/newlv0 /mnt/newlv0

逻辑卷管理器快照

1、快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
2、对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择
3、快照只有在它们和原来的逻辑卷不同时才会消耗空间
  a、在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
  b、当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
  c、快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
  d、建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照

4、快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享

技术分享图片

5、由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量

快照实例

逻辑卷做快照
        [[email protected] ~]# lvcreate -n lv0-snapshot -s -L 1G /dev/newvg0/lv0 
        Logical volume "lv0-snapshot" created.
    查看
        [[email protected] ~]# lvdisplay 

    为快照创建一个挂载点,再挂载
        [[email protected] ~]# mkdir /mnt/lv0-snapshot
        [[email protected] ~]# mount /dev/newvg0/lv0-snapshot /mnt/lv0-snapshot/

    恢复快照
        1、先取消挂载,逻辑卷和逻辑卷的快照都要取消挂载
            [[email protected] ~]# umount /mnt/lv0
            [[email protected] ~]# umount /mnt/lv0-snapshot/
        2、还原
            [[email protected] ~]# lvconvert --merge /dev/newvg0/lv0-snapshot 

    xfs文件系统做快照
        1、创建快照
            lvcreate -n mysql-snapshot -s -L 1G /dev/newvg0/mysql
        2、创建挂载点,并挂载
             mkdir /mnt/mysql-sn
             mount /dev/newvg0/mysql-snapshot /mnt/mysql-sn/
            # 如果挂载的时候报错用下面这条命令挂载
             mount -o nouuid /dev/newvg0/mysql-snapshot /mnt/mysql-sn/
        3、恢复
            [[email protected] ~]# umount /mnt/mysql-sn/
            [[email protected] ~]# lvconvert --merge /dev/newvg0/mysql-snapshot 
        设置为只读状态
        [[email protected] ~]# lvcreate -n lv0-snapshot -p r -s -L 1G /dev/newvg0/lv0

    删除快照
         lvremove /dev/newvg0/lv0-snapshot

以上是关于逻辑卷管理器(LVM)的主要内容,如果未能解决你的问题,请参考以下文章

逻辑卷管理器LVM

逻辑卷管理器LVM

LVM逻辑卷管理器

逻辑卷管理器(LVM)以及快照(特殊逻辑卷)的用法

逻辑卷管理器(LVM)

LVM(逻辑卷管理器)原理