LVM2详解

1、什么是lvm

LVM是逻辑卷管理(Logical Volume Manager)的简称,它是建立在物理存储设备之上的一个抽象层,允许你生成逻辑存储卷,与直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,与硬件相关的存储设置被其隐藏,你可以不用停止应用或卸载文件系统来调整卷大小或数据迁移.这样可以减少操作成本。

图片.png

2、lvm的基本概念

* 物理存储介质(The Physical Media)
这里指系统的存储设备,如:/dev/hda1、/dev/sda等等,是存储系统最低层的存储单元。

* 物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。当前LVM允许你在每个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.

* 卷组(VG, Volume Group)
LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。

* 逻辑卷(LV, Logical Volume)
LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。

*线性逻辑卷 (Linear Volumes)
一个线性逻辑卷聚合多个物理卷成为一个逻辑卷.比如,如果你有两个60GB硬盘,你可以生成120GB的逻辑卷.

*条块化的逻辑卷(Striped Logical Volumes)
当你写数据到此逻辑卷中时,文件系统可以将数据放置到多个物理卷中.对于大量连接读写操作,它能改善数据I/O效率.

*镜像的逻辑卷(Mirrored Logical Volumes)
镜像在不同的设备上保存一致的数据.数据同时被写入原设备及镜像设备.它提供设备之间的容错。

*快照卷(Snapshot Volumes)
快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,它复制一份对当前数据区域的改变,由于它优先执行这些改变,所以它可以重构当前设备的状态。

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

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

和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中一样,逻辑卷以及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括以下内容:
PV描述符、VG描述符、LV描述符、和一些PE描述符
。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操作时,就会根据VGDA建立的映射机制来访问实际的物理位置。

3、逻辑卷的使用

1、创建物理卷

pvcreate /dev/sdb

Physical volume "/dev/sdb" successfully created

可以通过lvmdiskscan来查看那些设备被做成了物理卷

2、显示物理卷:pvscan  pvs pvdisplay

   #pvs
     PV         VG         Fmt  Attr PSize   PFree  
     /dev/sda2  VolGroup00 lvm2 a-     3.88G      0
     /dev/sdb   lvm_test   lvm2 a-   508.00M      0
     /dev/sdc              lvm2 —   512.00M 512.00M
   #pvscan
     PV /dev/sdb    VG lvm_test     lvm2 [508.00 MB / 0    free]
     PV /dev/sda2   VG VolGroup00   lvm2 [3.88 GB / 0    free]
     PV /dev/sdc                    lvm2 [512.00 MB]
     Total: 3 [4.87 GB] / in use: 2 [4.37 GB] / in no VG: 1 [512.00 MB]
   #pvdisplay
     — Physical volume —
     PV Name               /dev/sdb
     VG Name               lvm_test
     PV Size               512.00 MB / not usable 4.00 MB
     Allocatable           yes (but full)
     PE Size (KByte)       40Array6
     Total PE              127
     Free PE               0
     Allocated PE          127
     PV UUID               Pkp5Cq-SD1w-ANw2-cDDe-BGtw-nmFS-jTxXFD

     — NEW Physical volume —
     PV Name               /dev/sdc
     VG Name               
     PV Size               512.00 MB
     Allocatable           NO
     PE Size (KByte)       0
     Total PE              0
     Free PE               0
     Allocated PE          0

     PV UUID               BNCVEE-YWlK-0mrV-LOcf-0tCY-WWNw-DeySk0

3、移除物理卷

#pvremove /dev/sdc
   Labels on physical volume "/dev/sdc" successfully wiped

4、创建卷组

# vgcreate lvm_test /dev/sdc1 /dev/sdb
   Volume group "lvm_test" successfully created

vgcreate命令第一个参数是指定该卷组的逻辑名:lvm_test。后面参数是指定希望添加到该卷组的所有分区和磁盘。vgcreate在创建卷组
lvm_test 以外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上创建的所有逻辑卷都以 4 MB
为增量单位来进行扩充或缩减。PE最小为1KB  ,并且必须总是1KB的 2^n 的倍数(使用-s指定,具体请参考man vgcreate)。

5、添加新的物理卷到卷组中

pvcreate /dev/sdc

vgextend lvm_test /dev/sdc

6、显示卷组:vgs  vgdisplay

# vgs
     VG         #PV #LV #SN Attr   VSize   VFree
     VolGroup00   1   2   0 wz–n-   3.88G    0
     lvm_test     1   1   0 wz–n- 508.00M    0
   
   # vgdisplay
     — Volume group —
     VG Name               lvm_test
     System ID            
     Format                lvm2
     Metadata Areas        1
     Metadata Sequence No  10
     VG Access             read/write
     VG Status             resizable
     MAX LV                0
     Cur LV                1
     Open LV               1
     Max PV                0
     Cur PV                1
     Act PV                1
     VG Size               508.00 MB
     PE Size               4.00 MB
     Total PE              127
     Alloc PE / Size       127 / 508.00 MB
     Free  PE / Size       0 / 0   
     VG UUID               uJx24t-WWdY-vffu-Array7Of-mgFB-FEov-eRwzAf

7、从卷组中去除物理卷

vgreduce lvm_test /dev/sdc

8、创建逻辑卷

lvcreate -L 150M -n test lvm_test

如果需要创建使用全部卷组的逻辑卷,可以使用指定pe块的方式

vgdisplay lvm_test | grep "Total PE"

Total PE 4731

lvcreate -l 4731 -n test lvm_test  (默认一个PE为4k,总容量为4731x4k)

9、创建条块化逻辑卷

lvcreate -L 500M -i 2  -n test lvm_test  

-i 2指此逻辑卷在两个物理卷中条块化存放数据,默认一块大小为64KB

10、创建镜像卷

#lvcreate -L 52M  -m 1  -n test lvm_test /dev/sdb1 /dev/sdc1 /dev/sdb2
     Logical volume "test" created
   -m 1表示只生成一个单一镜像,镜像分别放在/dev/sdb1和/dev/sdc1上,镜像日志放在/dev/sdb2上.

11、创建快照卷

#lvcreate -L 10M -s -p r -n snaptest /dev/lvm_test/test

12、删除逻辑卷

#lvremove /dev/lvm_test/test

13、扩展逻辑卷

lvextend -L +1G /dev/lvm_test/test

上面的命令实现了逻辑卷的扩展,接下来要实现文件系统的扩展,可以使用resize2fs

fsck /dev/lvm_test/test

resize2fs /dev/lvm_test/test

resize是针对ext2系统实现文件系统缩减,如果centos7的xfs的文件系统,可以使用xfs_growfs

xfs_growfs和resize2fs的不同点是resize2fs采用逻辑卷名称,xfs_growfs采用挂载点。

14、缩减逻辑卷

fsck /dev/lvm_test/test

resize2fs /dev/lvm_test/test 11G

lvreduce -L 11G /dev/lvm_test/test

resize2fs /dev/lvm_test/test  (通过此命令确认是否文件系统大小与收缩后的逻辑卷大小匹配)

缩减有风险,操作需谨慎。

原创文章,作者:N25_随心,如若转载,请注明出处:http://www.178linux.com/65558

(4)
N25_随心N25_随心
上一篇 2017-01-03
下一篇 2017-01-03

相关推荐

  • 马哥教育网络班22期+第九周课程练习

    1、写一个脚本,判断当前系统上所有用户的shell是否为可登录shell(即用户的shell不是/sbin/nologin);分别统计这两类用户的个数;通过字符串比较来实现; #!/bin/bash declare -i sum1=0 declare -i sum2=0 shells=$(cat /etc/p…

    Linux干货 2016-11-28
  • 【26期】Linux第四周学习小总结

        第四周了,转眼就学习有关Linux的知识一月了,从开始的懵懵懂懂,到现在的懵懵懂懂,不变的是无边无际的知识,改变的是一小片迷雾被我们渐渐拨开了一角,学习的枯燥和充实,陪我们走完这安稳的最后学习时光。     今天分享的是一些我们本周学习的变量方面的东西,那么,什么是变量呢?变量来源于数学,是计算机语言中能储存计…

    2017-08-05
  • OSI模型与TCP/IP协议栈

         OSI模型:     使用OSI模型的意义:      简化教学     加快发展速度     确保技术的互操作性     简化模块化设计  &nbs…

    2017-08-20
  • CentOS 5和6的启动流程

    Linux: kernel+rootfs  kernel: 进程管理、内存管理、网络管理、驱动程序、文件系统、安全功能 rootfs: glibc 库:函数集合, function, 调用接口 过程调用:procedure 函数调用:function 程序  内核设计流派: 单内核设计:Linux 把所有功能集成于同一个程序; 微内核设计…

    Linux干货 2016-08-23
  • 脚本编程之变量

    简单跟大家介绍一下脚本编程中的变量。 大家都知道,脚本编程,主要由三个部分组成,一是命令,二是变量,三是控制语句。 变量的使用,可以让脚本变得更加简洁,高效。 我们主要简单讲一下变量的概念,变量的类型,变量的种类,不同种类的变量是如何定义的,变量的基本操作,以及变量的配置文件。 了解了这些,我们还可以聊一聊变量的高级操作。 首先,什么是变量? 通俗一点讲:变…

    Linux干货 2017-04-17
  • 集群-ipvsadm和NAT实验(3)

    纠正:报文进入内核空间后,当到达input链时发现是一个集群服务时,则直接发送到postrouting链,不经过forward链。 调度算法: 1、静态方法: rr:轮询,即依照次序从所有RS中进行挑选 wrr:加权轮询,按照权重在RS中进行轮询 sh:source hashing,源地址哈希,即对来自相同客户端的请求发送至同一RS,这样会破坏负载均衡效果。…

    Linux干货 2015-12-15

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-15 01:51

    赞~总结的很详细,也给出了相应的提示~继续加油!