LVM逻辑卷管理

一、简述

什么是逻辑卷?LVM(Logical Volume Manager)利用Linux内核device-mapper实现存储系统的虚拟化。通过LVM,把底层存储硬件抽象化成存储逻辑块,再将这些逻辑块集合构成存储池,从存储池空间划分分区,可以简单地扩大或缩小分区,而不用担心硬盘没有足够的连续空间。

使用逻辑卷分区有什么用?使用逻辑卷分区重点在于可以弹性地调整文件系统的容量。在实际环境中我们经常会遇一个文件系统空间不足,想要扩展却又十分麻烦,一开始划分空间偏大,想要缩减也是同样不方便。而LVM可以很好地解决这些问题。

逻辑卷的缺点:由于LVM的原理,导致一个文件数据可能分布在多个硬件设备上,这些设备中只要有一个损坏,数据便有丢失。而且存储效率上也有所下降。通常LVM结合RAID使用,提升读写效能或数据可靠性。

二、LVM原理

    首先理解四个逻辑卷基本概念:

    1、PV(Physical Volume)物理卷:LVM的基本存储逻辑块,可以在上面建立卷组的媒介,可以是硬盘分区,也可以是硬盘本身或者回环文件(loopback file)。物理卷包括一个特殊的header,其余部分被切割为一块块物理区域(physical extents)。

    2、VG(Volume Group)卷组:一个或多个物理卷组成卷组,即构成一个存储池。可以在卷组上创建“LVM分区”(逻辑卷)

    3、LV(Logical Volume)逻辑卷:由若干物理区域组成的虚拟分区,类似于硬盘分区

    4PE(Physical Extent)物理区域:硬盘可供指派给逻辑卷的最小单位。

    5、LE(Logical Extent)逻辑区域:物理区域被指派给逻辑卷后变为逻辑区域,组成逻辑卷的最小单位。

lvm.jpg

简答来讲,我们先将块设备初始化为PV,将若干个PV划分为一个VG卷组并命名,卷组被创建时,将PV划分为若干个PE,默认PE大小为4M,即这些PE构成了卷组,最后我们从卷组中拿出若干个PE组成逻辑卷并命名,相当于划分出一块硬盘分区,逻辑卷创建后就可以正常使用它了,比如进行格式化操作,然后挂载到目录树上。

三、LVM创建演示

以下操作环境为Centos6.8

准备工作:我划分了三个分区/dev/sdb{1,2,3},并设置分区类型为 Linux LVM

blob.png

PV初始化

[root@centos6 mapper]$ pvcreate /dev/sdb{1,2,3}
  Physical volume "/dev/sdb1" successfully created
  Physical volume "/dev/sdb2" successfully created
  Physical volume "/dev/sdb3" successfully created

简单查看创建PV信息

[root@centos6 mapper]$ pvs
  PV         VG   Fmt  Attr PSize PFree
  /dev/sdb1       lvm2 ---- 5.00g 5.00g
  /dev/sdb2       lvm2 ---- 5.00g 5.00g
  /dev/sdb3       lvm2 ---- 5.00g 5.00g

详细查看PV信息

[root@centos6 mapper]$ pvdisplay
  "/dev/sdb1" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0               #在未被加入卷组前,未划分PE
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               jxLEiT-LOXv-9zqY-Vui2-QRNN-AkN4-vcZehm
   
  "/dev/sdb2" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb2
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               vHa18C-QW5D-8lB1-2dRX-jxOF-OcCF-aFBDSb
   
  "/dev/sdb3" is a new physical volume of "5.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb3
  VG Name               
  PV Size               5.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               NtfNOu-NRYs-CRv8-TcyI-HXbg-Nidr-89Kiwf

VG:创建一个名为jat的卷组

[root@centos6 mapper]$ vgcreate jat /dev/sdb{1,2}
  Volume group "jat" successfully created

查看VG信息

[root@centos6 mapper]# vgs
  VG   #PV #LV #SN Attr   VSize VFree
  jat    2   0   0 wz--n- 9.99g 9.99g
[root@centos6 mapper]# vgdisplay
  --- Volume group ---
  VG Name               jat
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               9.99 GiB            #卷组容量为两个PV容量总
  PE Size               4.00 MiB            #默认PE大小为4M
  Total PE              2558                #PE的总数
  Alloc PE / Size       0 / 0               #PE分配的情况
  Free  PE / Size       2558 / 9.99 GiB
  VG UUID               bwm8dx-QYgR-H0cO-xbCe-AvGe-zvDL-qfNIlp

再来看下PV信息

[root@centos6 mapper]$ pvdisplay
  --- Physical volume ---
  PV Name               /dev/sdb1
  VG Name               jat
  PV Size               5.00 GiB / not usable 4.00 MiB
  Allocatable           yes 
  PE Size               4.00 MiB       #相关PE的信息已更新
  Total PE              1279
  Free PE               1279
  Allocated PE          0
  PV UUID               jxLEiT-LOXv-9zqY-Vui2-QRNN-AkN4-vcZehm

创建LV

[root@centos6 mapper]$ lvcreate -L 2G -n pap1 jat
  Logical volume "pap1" created.
[root@centos6 mapper]$ lvcreate -L 4G -n pap2 jat
  Logical volume "pap2" created.

查看LV

[root@centos6 mapper]# lvs
  LV   VG   Attr       LSize Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  pap1 jat  -wi-a----- 2.00g                                                    
  pap2 jat  -wi-a----- 4.00g                                                    
[root@centos6 mapper]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/jat/pap1        #逻辑卷设备地址
  LV Name                pap1
  VG Name                jat
  LV UUID                heIpsn-nhPS-BH91-CDrU-6pi0-LFyR-MZBeRs
  LV Write Access        read/write
  LV Creation host, time centos6.localdomain, 2016-09-02 20:26:27 +0800
  LV Status              available            #新创建的LV默认激活可用
  # open                 0
  LV Size                2.00 GiB
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

引用LV设备有多个路径

形式1:/dev/mapper/VG_NAME-LV_NAME

形式2:/dev/VG_NAME/LV_NAME

以上都是软连接指向实际设备文件/dev/dm-N

blob.png

格式化逻辑卷pap1,挂载

mkfs.ext4 /dev/jat/pap1
mount /dev/jat/pap1 /mnt/pap1

使用df命令查看,逻辑卷pap1可用容量

blob.png

尝试向逻辑卷挂载点拷贝一些数据,完全正常,至此逻辑卷创建成功。

blob.png

四、扩展VG,LV

扩展VG

[root@centos6 ~]$ vgextend jat /dev/sdb3        #给卷组jat新加一个PV
  Volume group "jat" successfully extended
[root@centos6 ~]# vgs                           #查看VG容量已增加了5G
  VG   #PV #LV #SN Attr   VSize  VFree
  jat    3   2   0 wz--n- 14.99g 8.99g

在线扩展LV

命令工具:lvextend

-l|–extents [+]LogicalExtentsNumber[%{VG|LV|PVS|FREE|ORIGIN}]

    此选项可以指定逻辑卷新的LE数量,或增加的数量,也可指定百分比形式扩展

-L|–size [+]LogicalVolumeSize[bBsSkKmMgGtTpPeE]}

    此选项指定大小来扩展

lvextend -l +100%FREE /dev/jat/pap1     #将jat卷组的所有剩余PE分配给pap1
lvextend -L 5G /dev/jat/pap1            #将pap1扩展至5G大小
lvextend -L +1G /dev/jat/pap1           #增加1G的容量

扩展前,vgdisplay 查看卷组使用情况,原始pap1容量

blob.png

blob.png

开始扩展pap1

[root@centos6 ~]# lvextend -L +2G /dev/jat/pap1
  Size of logical volume jat/pap1 changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume pap1 successfully resized.

查看pap1 容量增加了2G

blob.png

再对文件系统调整大小

[root@centos6 ~]$ fsadm resize /dev/jat/pap1
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/jat-pap1 is mounted on /mnt/pap1; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/jat-pap1 to 1048576 (4k) blocks.
The filesystem on /dev/mapper/jat-pap1 is now 1048576 blocks long.

其实可以在扩展LV带上-r选项可省略此步骤,例如

lvextend -r -L +2G /dev/jat/pap1

df-h查看文件系统大小,已经增加2G容量

blob.png

五、缩减LV

缩减操作较为危险,谨慎操作。缩减LV之前确保已对文件系统重新调整大小。

1、卸载逻辑卷

umount /mnt/pap1

2、强制检测文件系统

e2fsck -f /dev/mapper/jat-pap1

3、resize文件系统

[root@centos6 ~]$ fsadm resize /dev/jat/pap1 3G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/jat-pap1 to 786432 (4k) blocks.
The filesystem on /dev/mapper/jat-pap1 is now 786432 blocks long.

4、缩减LV

[root@centos6 ~]$ lvchange -an /dev/jat/pap1        #停止pap1工作
[root@centos6 ~]$ lvreduce -L 3G /dev/jat/pap1      #缩减至3G
  Size of logical volume jat/pap1 changed from 4.00 GiB (1024 extents) to 3.00 GiB (768 extents).
  Logical volume pap1 successfully resized.

5、激活,挂载

lvchange -ay /dev/jat/pap1
mount /dev/jat/pap1 /mnt/pap1

六、移除PV

移除PV正确操作不会毁坏数据

例如移除/dev/sdb1 此PV

[root@centos6 ~]# pvmove /dev/sdb1   #先把此PV内分配走PE转移到其他PV上
  /dev/sdb1: Moved: 0.1%
  /dev/sdb1: Moved: 12.9%
  /dev/sdb1: Moved: 22.5%
  /dev/sdb1: Moved: 32.7%
  /dev/sdb1: Moved: 42.2%
  /dev/sdb1: Moved: 52.3%
  /dev/sdb1: Moved: 62.8%
  /dev/sdb1: Moved: 71.6%
  /dev/sdb1: Moved: 82.8%
  /dev/sdb1: Moved: 93.5%
  /dev/sdb1: Moved: 100.0%
[root@centos6 ~]# vgreduce jat /dev/sdb1    #在卷组中移除
  Removed "/dev/sdb1" from volume group "jat"
[root@centos6 ~]# pvremove /dev/sdb1        #最后清除PV标志
  Labels on physical volume "/dev/sdb1" successfully wiped

七、LVM快照功能

快照是一种特殊的逻辑卷,是复制原始卷的元数据而建立的逻辑卷,因此它创建速度很快,而且与原始卷在同一卷组。LVM 快照利用一种称为“写时复制(COW – Copy-On-Write)”的技术来跟踪和维持其数据的一致性。当原始卷的数据块(指原始卷所包含的所有数据块,即是空白数据块)第一次写入新数据时,会将旧数据块内容拷贝至快照空间中,也就是说如果只是删掉原始卷某一文件,但是其占用的数据块内容没有改变,删除文件只是不再占有这些数据块,COW认为数据块内容没发生改变,所以不会占用快照空间;还有如果数据块已经重写过一次数据,COW不会再跟踪。

分配给快照的空间,要依据写入的数据量多大和写入的频率,不一定要指派原始卷一样大的空间。快照空间可以扩展或缩减。

利用快照可以记录一个正在使用中的逻辑卷,然后制作一份拍照时刻的备份,由于这个备份是具有一致性的,因此非常的适合于用来备份实时系统。例如,您的运行中的数据库可能即使在备份时刻也是不允许暂停服务的,那么就可以考虑使用LVM的快照模式,然后再针对此快照来进行文件系统级别或者块设备级别的数据备份。

创建快照

为pap1创建一个快照,大小为128M

[root@centos6 pap1]$ lvcreate -s /dev/jat/pap1 -n snap_pap1 -L 128M 
  Logical volume "snap_pap1" created.

查看LV信息,已经有快照相关信息生成

blob.png

blob.png

快照逻辑卷创建时带有文件系统,可以直接挂载,建议只读挂载

[root@centos6 pap1]# mount -r /dev/jat/snap_pap1 /mnt/snap
[root@centos6 pap1]# ll !$
ll /mnt/snap
total 22
drwxr-xr-x. 128 root root  8192 Sep  3 21:04 etc        可以看见原逻辑卷的文件
drwx------.   2 root root 12288 Sep  2 22:21 lost+found
[root@centos6 pap1]# rm -rf /mnt/pap1/etc/issue    #删掉原逻辑卷一个文件做试验
[root@centos6 pap1]# cat /mnt/s
sdb1/ snap/ 
[root@centos6 pap1]# cat /mnt/snap/etc/issue        #快照区备份了原文件,证明备份有效
System time is \t
CentOS release 6.8 (Final)
Kernel \r on an \m
what is your pincode ?

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

(0)
上一篇 2016-09-06 08:51
下一篇 2016-09-06 08:53

相关推荐

  • 谈shell命令的神奇组合以及对脚本的影响

    shell命令是我们与机器交互的基本沟通翻译官。我们要告诉计算机的很多事情都由它来翻译,而shell的神奇之处就在于支持命令联合使用,现在我就来讲讲基本的命令组合引用。1.管道应用:命令 | 命令  ,前面的命令的结果可以直接作为后面命令的输出,省却了一个变量做存储。2.文本段落提取;我们可以用 组合命令 通常为 cat 某文件 | (head -…

    Linux干货 2017-04-02
  • Mariadb数据库备份恢复系列(三):xtrabackup物理备份工具之增量备份

       实验三:利用xtrabackup+二进制日志实现增量备份和恢复数据库 本例中实现的是将所有的增量日志都通过apply-log的步骤同步到完全备份文件中,如果希望利用增量日志还原到固定某次增量备份的数据,则不能使用本例中方式对所有的备份都进行apply-log操作,如果希望利用增量日志还原到固定哪次增量备份的数据,则将最初的完全备份的数据、和期望还原到某…

    Linux干货 2016-11-24
  • Linux发展史

    适用对象:本文适合希望开始学习以及想了解Linux的朋友阅读。本文中所有内容仅供参考,不作为科学依据。 一、      Linux的起源 最初的计算机其实是具有单一功能的大型计算器,只能完成指定或者设定好的工作。多数情况下计算机资源是处于空闲状态的,为了不使资源浪费,就需要使计算机能够或者可以进行多种工作。或…

    Linux干货 2016-10-14
  • linux 学习(2)

    1 linux 常见的文件管理命令都有哪些?其常用的使用方法。 ls 文件列出命令   常见选项  -l 显示长文本信息          -d 显示当前目录信息          -a 显示所有文件信息     &nb…

    Linux干货 2016-10-09
  • Linux文本处理三剑客之一grep

            终于又到了一周一篇博客的日子 在这学习已经三周了,慢慢养成了写博客的好习惯,也慢慢的懂得了怎么写博客。这周给我印象最深刻的就是正则表达式,原本打算要写前几天所学的内容,但是昨天学到正则表达式让我有点懵,所以我今天会用一天的时间去给大家详细讲解正则表达式,争取让那些和我一样困解的人能够豁然开朗,也正是因为…

    2017-07-29
  • 计算机的组成介绍

    一,什么是计算机?     计算机(computer)俗称电脑,是现代一种用于高速计算的电子计算机器,可以进行数值计算,又可以进行逻辑计算,还具有存储记忆功能。是能够按照程序运行,自动、高速处理海量数据的现代化智能电子设备。 二,发展历史 阶段 时期(年) 主要器件 特征 应用领域发展 第一代 1946—1958 电子管数字机 电子管,机…

    2016-10-29

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-10 09:23