LVM逻辑卷管理

前言

    通常情况下,在操作系统上新建了一个分区并在此分区创建文件系统后,该文件系统的大小就固定了。假如要增加此文件系统的大小,我们不得不添加一块硬盘并重新分区,创建文件系统,然后把原文件系统的数据完整复制过来。如果第二次分区时分配的空间太大,用不完又浪费该怎么办呢?重复此前的流程又将花费大量的时间,有没有更便捷的办法呢?下面介绍的逻辑卷管理器就是解决这个问题的。

一、简介

    LVM(Logical Volume Manager),译为逻辑卷管理器。所谓卷(Volume),意味着可伸缩,我们可以弹性调整文件系统的容量大小,并且不会损坏数据。LVM是对磁盘管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层;LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来将一个或多个底层块设备组成一个逻辑的工具。

lvm.jpg

1、Physical Volume(PV),物理卷:创建分区时,标记分区类型为8e后,就可以将该分区做成物理卷供LVM使用了。可以用任意块设备做成物理卷,单个分区、整块硬盘、RAID设备都可以。

2、Volume Group(VG),卷组:顾名思义,就是将一个或多个PV组合为一个卷组,以PE为存储单位。一个VG至少包含一个PV,VG可以创建多个。

3、Physical Extent(PE),物理区域:PE是整个LVM中可分配的最小存储单元,大小在创建卷组时指定且确定后不能更改;同一卷组的PE大小需一致。新的PV加入卷组后,PE的大小会自动更改为原卷组PE的大小。

4、Logical Volume(LV),逻辑卷:建立在卷组的基础上,卷组中空闲的PE可分配给LV使用,创建LV后可通过增加或减少PE来动态扩展和缩小空间大小。LV可以直接创建文件系统并挂载使用。两种写入模式:线性模式(linear)、交错模式(triped)。

二、物理卷(PV)的常用管理命令

pvcreate   #创建一个物理卷
pvchange   #修改物理卷的属性
pvresize   #调整一个PV的大小
pvremove   #删除一个PV
pvdisplay  #显示PV的属性信息
pvmove     #移动PE到指定物理卷
pvscan     #搜索所有磁盘上的物理卷
pvs        #显示PV的简要信息

    示例1:创建3个PV

[root@qin ~]# parted /dev/sdb mklabel msdos
[root@qin ~]# parted /dev/sdb mkpart primary ext2 0G 10G
[root@qin ~]# parted /dev/sdb mkpart primary ext2 10G 20G
[root@qin ~]# parted /dev/sdb mkpart primary ext2 20G 30G
[root@qin ~]# pvcreate /dev/sdb{1..3}

    示例2:将PV1上的数据迁移到PV2,然后删除该PV。

[root@qin ~]# pvmove /dev/sdb1 /dev/sdb2    #注意:两个PV必须在同一卷组内
[root@qin ~]# pvremove /dev/sdb1     #删除PV前要确保该PV没有在任何卷组中

三、卷组(VG)的常用管理命令。

vgcreate    #创建卷组
    -l:设置可容纳的LV最大数,默认为255
    -p:设置包含PV的最大数,默认为255
    -s:设置PE大小,默认为4M
vgextend    #扩展VG大小
vgdisplay   #显示VG属性信息
vgchange    #修改VG属性信息
vgreduce    #缩减VG大小
vgremove    #删除VG
vgscan      #搜索所有磁盘上的卷组
vgs         #显示VG简要信息
vgck        #检查VG元数据

    示例1:创建一个卷组,要求PE大小为8M,名称为Myvg,最大支持LV不能超过10个,包含的PV不能超过2个

[root@qin ~]# vgcreate -s 8M -l 10 -p 2 Myvg /dev/sdb{1,2}
[root@qin ~]# vgdisplay Myvg     #查看VG属性信息验证结果
  --- Volume group ---
  VG Name               Myvg     #VG名称
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                10        #可以看到,支持最大LV数为10个
  Cur LV                0
  Open LV               0
  Max PV                2         #支持最大PV数为2个
  Cur PV                2
  Act PV                2
  VG Size               18.61 GiB
  PE Size               8.00 MiB    #PE大小
  Total PE              2382
  Alloc PE / Size       0 / 0   
  Free  PE / Size       2382 / 18.61 GiB
  VG UUID               LdOZtc-4ccd-5ryh-Ux7V-O29f-CEhc-VVuuSF

    示例2:扩展Myvg大小

[root@qin ~]# vgextend Myvg /dev/sdb3    #由于此前定义了VG的最大PV数,无法扩展
  No space for '/dev/sdb3' - volume group 'Myvg' holds max 2 physical volume(s).
  Unable to add physical volume '/dev/sdb3' to volume group 'Myvg'.
[root@qin ~]# vgchange -p 3 Myvg    #修改VG属性
[root@qin ~]# vgextend Myvg /dev/sdb3    #扩展VG成功

    示例3:缩减Myvg大小;然后删除Myvg

[root@qin ~]# vgreduce Myvg /dev/sdb2    #注意:把PV移出卷组时要保证该PV数据已迁移或未使用
[root@qin ~]# vgchange -an Myvg        #标记Myvg为不可用状态
[root@qin ~]# vgremove Myvg        #不论VG包含多少PV都可删除,前提是该VG上没有任何LV,如果有就需要先删除LV

四、逻辑卷(LV)的常用管理命令

lvcreate    #创建LV
    -l:设置LV大小,以PE为单位
    -L:设置LV大小,以字节为单位
    -n:设置LV名称
    -p:设置LV权限读写权限,默认为可读可写
    -s:设置一个快照卷,对一个已存在的LV做快照
lvextend    #扩展LV大小
lvreduce    #缩减LV大小
lvchange    #修改LV属性信息
    -ay:标记LV为可用状态
    -an:标记LV为不可用状态
lvremove    #删除LV
lvdisplay   #显示LV属性信息
lvscan      #搜索所有磁盘上的逻辑卷
lvs         #显示LV简要信息

    示例1:创建一个LV,要求大小为10G,名称为lv001,指定卷组为Myvg。

[root@qin ~]# lvcreate -L 10G -n lv001 Myvg

    示例2:扩展lv001的大小,要求增加5G空间大小

#方法一:
[root@qin ~]# lvextend -L +5G /dev/Myvg/lv001
#方法二:
[root@qin ~]# lvextend -L 15G /dev/Myvg/lv001

    示例3:缩减lv001的大小,要求减少8G空间大小

[root@qin ~]# lvreduce -L -8G /dev/Myvg/lv001    #注意,缩减前需确保LV为卸载状态

    示例4:删除lv001

[root@qin ~]# lvchange -an /dev/Myvg/lv001     #标记lv001为不可用状态
[root@qin ~]# lvremove /dev/Myvg/lv001

    示例5:对lv001创建一个快照卷

[root@qin ~]# lvcreate -L 10G -n lv001_snap -p r -s /dev/Myvg/lv001    #必须跟目标逻辑卷在同一卷组中

五、实验:在线扩容和离线缩减逻辑卷的大小。

    1、查看当前系统挂载及逻辑卷的相关信息。

lvm.png

    2、缩减/data的空间大小,并验证查看。

lvreduce.png

注意:缩减逻辑卷大小前必须先缩减文件系统的大小,而且要强制检查文件系统

      缩减不能少于已经存储的所有数据空间的大小

22.jpg

33.png

3、扩展逻辑卷大小

    先查看当前LV大小,卷组可用空间,文件系统大小

44.png

    然后扩展逻辑卷大小

55.png

    最后扩展文件系统大小

66.png

总结:

    LVM的添加顺序:PV–>VG–>LV

    LVM的删除顺序:LV–>VG–>PV

    逻辑卷可在线扩展,但必须离线缩减

    缩减很危险,不到万不得已不要执行缩减操作!!!

    扩展逻辑卷后文件系统也要扩容

    缩减逻辑卷前要先缩减文件系统

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

(0)
秦
上一篇 2015-05-04
下一篇 2015-05-04

相关推荐

  • 马哥教育21期网络班—第12周课程+练习—-LAMP练习

    1、请描述一次完整的http请求处理过程; (1) 建立或处理连接:接收请求或拒绝请求 (2) 接收请求: 接收来自于网络的请求报文中对某资源的一次请求的过程; 持久连接:接收到请求不会断开这个请求 非持久连接:一个连接请求断开一次 并发访问响应模型(Web I/O): 单进程I/O结构:启动一个进程处理用户请求,而且一次只处理…

    Linux干货 2016-09-26
  • 推荐-常用RAID级别详解

    一、RAID是什么       RAID(Redundant Arrays of Indent Disks)的名称是独立磁盘冗余阵列,是一种通过将多块硬盘按照某种特定的结构组织起来当做一块硬盘来使用的技术,多块硬盘不同的组织结构我们称之为RAID的级别。而RAID技术的特性主要表现在两个方面: (1)提高硬盘…

    Linux干货 2016-03-27
  • LAMP 编译安装基于2.4

    一 安装前准备 说明:     操作系统:CentOS 6.7 64位     MySQL数据库版本:mariadb-5.5.48-linux-x86_64.tar.gz     Apache 版本:httpd-2.4.12.tar.bz2…

    Linux干货 2016-11-21
  • keepalived + LVS-NAT 双主互备模型

        实验环境拓扑图:     备注:内网段使用192.168.91.0/24 网段模拟。外网使用192.168.23.0/24网段模拟 1、两节点上关闭防火墙和selinux。 [root@node1 keepalived]# systemctl stop firewalld…

    Linux干货 2016-03-12
  • python 多版本管理(pyenv)

    01 – Python 简介和安装 01 – Python 简介和安装 1. Python 简介 2. 安装 pyenv 3. pyenv 使用 4. pyenv-virtualenv 5. 安装 IPython 和 Jupyter 01 – Python 简介和安装 1. Python 简介 编程风格 面向过程:以指令为…

    Linux干货 2016-07-10