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

相关推荐

  • 第六周总结VIM编辑器的使用并完成练习题

    第六周 总结VIM编辑器的使用并完成练习题 1. VIM是什么? VIM(Vi IMproved)是从vi发展出来的一个文本编辑器。 2.为什么要使用VIM? VIM有代码补完,编译以及错误跳转等方便编程的功能,在程序员中广泛使用。对于大多数的用户来说,VIM有着比较陡峭的学习曲线,但是一旦掌握一些基本操作之后,能大幅度提高编辑效率。VIM是类Unix系统用…

    Linux干货 2017-09-02
  • 来两道百度的shell开胃菜

    1、写脚本实现,可以用shell、perl等。在目录/tmp下找到100个以abc开头的文件,然后把这些文件的第一行保存到文件new中。 方法1: #!/bin/sh for files in `find /tmp -type f -name "abc*"|h…

    Linux干货 2016-09-19
  • 马哥教育网络班N22期+第3周课程练习

    马哥教育网络班N22期+第3周课程练习 1、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 示例: [root@Red Hat Enterprise Linux Desktop]# who | cut -d' &#039…

    Linux干货 2016-08-29
  • Linux用户操作、文件操作、文件筛选

    Linux用户操作、文件操作、文件筛选 编辑/etc/group文件,添加组hadoop。手动编辑/etc/passwd文件新增一行,添加用户hadoop,其基本组ID为hadoop组的id号;其家目录为/home/hadoop。 vim /etc/group hadoop:x:1001: vim /etc/passwd hadoop:x…

    Linux干货 2016-11-17
  • Bash脚本写法及变量如何使用

    Bash是什么? bash脚本是作为linux执行与内核交互的一个方便快捷的脚本语言工具。它可以帮助我们快速的解决问题。 Bash写法: 需要创建一个文件,以.sh结尾。这样就生成一个脚本文件 我们文件内容开头要以#!/bin/bash 开头,这是脚本规定的格式,目的是告诉编译器我们这个脚本是bash类型的脚本。 当上述工作都做好以后,我们就可以正式开始脚本…

    Linux干货 2017-04-10