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)
cutemsyucutemsyu
上一篇 2016-09-06
下一篇 2016-09-06

相关推荐

  • 网络理论基础

    一、网络概述   1、什么是网络     网络就是通过有线或无线技术将各种硬件设备连接起来进行数据传输的一种方式。   2、网络的分类     根据距离范围可以将网络划分为局域网和广域网。       局域网:传输距离较近,传输速率快。     &n…

    Linux干货 2016-01-11
  • LAMP实战

    说明:本实验在单主机搭建。下面的步骤只需要你复制粘贴,即可完成实验。 1、安装httpd mkdir /tools cd /tools #获取软件包 wget -c http://mirror.bit.edu.cn/apache//httpd/httpd-2.4.16.tar.gz wget http://m…

    Linux干货 2015-10-08
  • 马哥教育网络班21期+第8周课程练习

    1、请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别 集线器(HUB)是在OSI模型的第一层——物理层——连接多台主机、延长网络的设备。其主要功能是将从一个端口接收到的数据包转发给所有端口。中继器(Repeater)是将由电缆传过来的电信号或光信号调整波形和放大再传给另一个电缆的设备,提供多端口服务的中继器称作集线器。二者的主要区别是…

    Linux干货 2016-08-29
  • 有关shell脚本

    SHELL脚本 在Linux运维工作中有着大量的重复性质的工作,比如同时给很多台的服务器备份,查看多台的内存情况,等等。这样的情况下总不能一个一个服务器自己去看,那样耗时,费力,还容易出错。所以编写程序来做这些事情就成了必要的工作。而SHELL就是完成这项工作的。   脚本第一行的开头写上#!/bin/bash 这是属于格式性质的,作用在于加上执行…

    2017-08-12
  • 计算机网络基础知识与Linux网络配置

    本文主要内容是: 1.讲述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。 2、IP地址的分类有哪些?子网掩码的表示形式及其作用 3、计算机网络的分成模型有哪些(OSI模型和TCP/IP模型),每一层的功能及涉及到的物理设备有哪些。 4、如何给网络接口配置多个地址,有哪些方式? 5、常用的网络管理类工具有哪些,并用示例形式描述他们的使用方…

    Linux干货 2016-11-14
  • Centos7 PHP-FPM源码安装

    PHP-FPM源码安装 安装必要组件 yum install -y openssl-devel traceroute libtool unzip gcc gcc-c++ autoconf net-snmp-devel vim wget sysstat lrzsz  man tree mysql-devel ntpdate rsync libxml2…

    系统运维 2016-09-06

评论列表(1条)

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