码迷,mamicode.com
首页 > 其他好文 > 详细

LVM 逻辑卷管理

时间:2015-04-24 10:46:35      阅读:266      评论:0      收藏:0      [点我收藏+]

标签:lvm

一、简述

    

    LVM 是 Logical Volume Manager(逻辑卷管理)简写 ,是基于dm (device mapper) 模块实现,

将一个或多个底层块设备组织成一个逻辑设备的工具。目前使用版本是lvm2

    

    LVM与文件系统和块设备之间:

        技术分享    

    

    LVM层次结构图 


    技术分享

    

    1, PE(physical extent)

    每一个物理卷被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。


    2, LE(logical extent)

    逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。


    3, PV (physical volume)

    是底层块设备,比如 RIAD,分区,磁盘等


    4, VG (Volume Group)

    卷组是LVM中最高抽象层,是由一个或多个物理卷所组成的存储器池


    5, LV(logical volume) 

    逻辑卷相当于非LVM系统中的分区,它在卷组上建立,是一个标准的块设备,可以在其上建立文件系统。



 不同文件存储方式最小单位的对比:         


     名称 最小存储单位 
     硬盘 扇区(512字节)
     文件系统block(1K或4K )
     raid chunk (512K)  mdadm -c
     LVMPE  (16M自己定义)


二、应用场景:


        1, 动态扩展或缩减存储空间边界 

    

            存储空间边界:

                物理边界

                逻辑边界

      

            扩展边界: 物理卷 -> 逻辑卷    

            缩减边界: 逻辑卷 -> 物理卷

         

        2,多路径(multipath)访问,就是快照(snapshot)


            用途: 实时备份(moment-in-time),也是最重


    

三、LVM 常用的工具            

#    pv :
#        pvcreate :            创建物理卷
        
#        pvs :                 查看物理卷

#        pvdisplay :           详细查看物理卷

#        pvremove :            移除物理卷

#        pvmove :              挪走物理卷上的数据

#        pvscan :              扫描所有磁盘上的物理卷
    
#    vg:
#        vgcreate :             创建卷组

#        vgs :                  查看卷组

#        vgdisplay :            详细查看卷组

#        vgremove :             移除卷组

#        vgextend :             扩展卷组大小

#        vgreduce :             缩减卷组大小

#        vgscan :               扫描所有卷组
        
#    lv:
#        lvcreate :            创建逻辑卷
    
#        lvs :                 查看逻辑卷
    
#        lvdisplay :           详细看看逻辑卷

#        lvremove :            移除逻辑卷

#        lvextend :            扩展逻辑卷

#        lvreduce :            缩减逻辑卷

#        lvscan :              扫描所有逻辑卷

        

 四、创建lv流程  

            

    1,添加新的硬盘

    在虚拟机中添加一块硬盘为sdb大小为10G。在虚拟机管理添加新设备就可以添加一块scis硬盘。

    

    2,准备分区

[root@xuegod63 Desktop]#fdisk /dev/sdb       # 通过命令在sdb中三个分区: sdb1,sdb2,sdb3

[root@xuegod63 Desktop]# ls  /dev/sdb*       # 查看sdb下三个分区
/dev/sdb  /dev/sdb1  /dev/sdb2  /dev/sdb3

    

    3,制作PV

[root@ Desktop]# rpm -qf  `which pvcreate`          # 通过which查看哪个包生成的命令
lvm2-2.02.87-6.el6.x86_64

[root@xuegod63 Desktop]# pvcreate /dev/sdb{1,2}     # sdb1,sdb2d 命令展开
Writing physical volume data to disk "/dev/sdb1"   
Physical volume "/dev/sdb1" successfully created    # successfully表示pv创建成功
 Writing physical volume data to disk "/dev/sdb2"
 Physical volume "/dev/sdb2" successfully created


    4,制作VG

[root@xuegod63 Desktop]# vgcreate Vg1 /dev/sdb1 /dev/sdb2
  Volume group "Vg1" successfully created


    5,制作LV

[root@xuegod63 Desktop]# lvcreate -n  LV1  -L 1.5G  Vg1
  Logical volume "LV1" created
  
# -n     指lv的name
   
# -L     指定大小

        

    6,查看命令

     依次为:简单对应卷信息的查看  扫描相关的所有的对应卷  详细对应卷信息的查看


    7.1 物理卷查看

    # pvs    # pvscan    # pvdisplay

    

    7.2 卷组查看

    # vgs    # vgscan    # vgdisplay

    

    7.3 逻辑卷查看

    # lvs    # lvscan    # lvdisplay

    

# 【例】创建时指定一下PE

[root@xuegod63Desktop]# vgcreate -s 16M vg1  /dev/sdb1 /deb/sdb2

#  -s 指定PE的大小为16M,并且PE大小只能为2的冪数

 

    8, 综合使用

[root@xuegod63 ~]# mkfs.ext4  /dev/Vg1/LV1    #格式化后才能进行挂载

[root@xuegod63 ~]# mount /dev/Vg1/LV1  /opt/


五、LVM动态扩容和静态缩容


    逻辑卷扩容:

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

        2,扩展物理边界

           lvextend -L 4G /dev/myvg/mylv

        3,扩展逻辑边界

           resize2fs /dev/myvg/mylv


    逻辑卷缩减很危险:缩减要离线

        1,先确定缩减后的目标大小,并确保对应目标逻辑卷大小中有足够的空间可容纳原有所有数据

        2,先卸载文件系统,并要执行强制检测

            e2fsch -f

        3,缩减逻辑边界

            resize2fs DEVICE SIZE

        4,缩减物理边界

            lvreduce  -L SIZE DEVICE  

    

    例如:逻辑卷扩容     

# 1,先查看相关的大小

[root@xuegod63~]# vgs
VG   #PV #LV #SN Attr   VSize VFree 
Vg1    2   1   0 wz--n- 2.02g 528.00m
  
[root@xuegod63 ~]# lvs  
LV   VG   Attr   LSize Origin Snap%  Move Log Copy%  Convert
LV1  Vg1  -wi-ao 1.50g  

# 2, 逻辑卷动态扩展

[root@xuegod63 ~]# lvextend -L +300M /dev/Vg1/LV1    # +300M为逻辑增加300M
Extending logical volume LV1 to 1.79GiB  
Logical volume LV1 successfully resized

[root@xuegod63 ~]# lvs
LV  VG   Attr   LSize Origin Snap%  Move Log Copy%  Convert
LV1  Vg1  -wi-ao 1.79g 

# 3, 再扩展文件系统的大小

[root@xuegod63 ~]# resize2fs  /dev/Vg1/LV1          

[root@xuegod63 ~]# df –h
/dev/mapper /Vg1-LV1   1.8G  
35M  1.7G   2% /opt


    逻辑卷静态缩容:            

# umount  /opt                         #缩容要先卸载

# e2fsck  –f  /dev/Vg1/LV1            #强制检查文件系统

# resize2fs  /dev/Vg1/LV1  1G          #文件系统缩小至1G

# lvreduce  -L 1G  /dev/Vg1/LV1        #逻辑分区缩小至1G

# mount   /dev/Vg1/LV1  /opt


     VG 缩减

    注:缩减时,可以不卸载正在使用中的LV。另外,只能缩减没有被使用的pv。

    否则会提示以下内容:

[root@xuegod63 ~]# vgreduce Vg1 /dev/sdb1
Physical volume "/dev/sdb1" still in use


    将pv从vg中删除

[root@xuegod63 ~]# vgreduce Vg1 /dev/sdb3
Removed "/dev/sdb3" from volume group "Vg1"

[root@xuegod63 ~]# pvs
PV         VG   Fmt  Attr PSize PFree
/dev/sdb1  Vg1  lvm2 a--  1.01g 32.00m
/dev/sdb2  Vg1  lvm2 a--  1.01g  1.01g
/dev/sdb3       lvm2 a--  1.01g  1.01g
  
[root@xuegod63 ~]# vgs
VG   #PV #LV #SN Attr   VSize VFree
Vg1    2   1   0 wz--n- 2.02g 1.04g


 

    lvm 删除命令 

# umount /dev/Vg1/LV1        # 卸载

# lvremove /dev/Vg1/LV1      # 删除逻辑卷

# vgremove Vg1               # 删除卷组

# pvremove /dev/sdb1         # 删除物理卷

       

    【例】删除应用如下

[root@xuegod63 ~]# lvremove /dev/Vg1/LV1
Doyou really want to remove active logical volume LV1? [y/n]: y
Logical volume "LV1" successfullyremoved
  
[root@xuegod63~]# lvs

[root@xuegod63~]# vgremove Vg1
Volume group "Vg1" successfullyremoved
  
[root@xuegod63~]# pvremove /dev/sdb3


六,  创建快照卷

        

    lvcreate 

        -L  大小

        -n  快照名

        -s  逻辑卷

        -p r  只读

    

    语法:

    # lvcreate  -s -n SNAP_NAME  -L SIZE -p r  /PATH/TO/SOMEFILE

     

    

    例如:    

#    准备分区
[root@xuegod63 ~]# fdisk -l /dev/sda | grep "Linux LVM"
/dev/sda5            5253        5514     2101349+  8e  Linux LVM
/dev/sda6            5515        6168     5253223+  8e  Linux LVM
    
#    创建PV    
[root@xuegod63 ~]# pvcreate  /dev/sda{5,6}
  Physical volume "/dev/sda5" successfully created
  Physical volume "/dev/sda6" successfully created
    
#    创建VG    
[root@xuegod63 ~]# vgcreate myvg1 /dev/sda{5,6}
  Volume group "myvg1" successfully created
    
#    创建LV    
[root@xuegod63 ~]# lvcreate -n mylv1 myvg1 -L 5G
  Logical volume "mylv1" created
  
#    查看
[root@xuegod63 ~]# vgs
  VG    #PV #LV #SN Attr   VSize VFree
  myvg1   2   1   0 wz--n- 7.01g 2.01g
  
[root@xuegod63 ~]# lvs
  LV    VG    Attr       LSize Pool Origin Data%  Move Log Cpy%Sync Convert
  mylv1 myvg1 -wi-a----- 5.00g
  
    
#    格式化并挂载
[root@xuegod63 ~]# mke2fs -t ext4 /dev/myvg1/mylv1
[root@xuegod63 ~]# mkdir /media/mylv
[root@xuegod63 ~]# mount /dev/myvg1/mylv1 /media/mylv


#    复制数据
[root@xuegod63 ~]# mount /dev/myvg1/mylv1 /media/mylv
[root@xuegod63 ~]# cp /etc/rc.d/rc /media/mylv/
[root@xuegod63 ~]# cp /etc/rc.d/rc.sysinit /media/mylv/


#    创建快照卷并挂载
[root@xuegod63 ~]# lvcreate -s -n mylv1Snap -p r -L 512M /dev/myvg1/mylv1 
  Logical volume "mylv1Snap" created  
[root@xuegod63 ~]# mkdir /media/snapmylv
[root@xuegod63 ~]# mount -r  /dev/myvg1/mylv1Snap /media/snapmylv


#    测试
[root@xuegod63 ~]# echo "# this is test. " > /media/mylv/rc       #追加数据

[root@xuegod63 ~]# tail -n 1 /media/mylv/rc                       #查看逻辑卷数据
# this is test.

[root@xuegod63 ~]# tail -n 1 /media/snapmylv/rc                   #查看快照卷的数据
exit 0


# 在创建快照的瞬间数据可能会出问题,先把目标逻辑卷重新以只读的方式挂载,并创建快照,再以读写方式重新挂载逻辑卷, 比如:

# mount -o remount,ro /dev/myvg1/mylv1 /media/mylv && lvcreate -s -n mylv1Snap -p r -L 512M /dev/myvg1/mylv1  && mount -o remount,rw /dev/myvg1/mylv1 /media/mylv

 

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





    THE END.


本文出自 “学神IT-Linux讲师-MK” 博客,请务必保留此出处http://xuegod.blog.51cto.com/9708186/1637804

LVM 逻辑卷管理

标签:lvm

原文地址:http://xuegod.blog.51cto.com/9708186/1637804

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!