lvm的基础及基本应用

Lvm是Logical Volume Manager的简写,是Linux系统下对磁盘分区进行管理的一种机制。Lvm将几个磁盘分区或disk通过软件组合成一个大的磁盘VG,然后再通过将这个大的VG分割成若干个逻辑块(LV),最后对相应的逻辑块进行格式化挂载使用。Lvm最大的特点是可弹性调整文件系统的容量,通过调整每个逻辑块(LV)的容量,可轻松在线扩大或缩小某个对应的文件系统的空间,方便快捷。

一、Lvm概念

要学习lvm,必然离不开几个概念,PV、VG、LV等。它们是lvm管理磁盘的基础,lvm任何的管理操作基本都离不开这几个概念。

1、PE

我们知道Linux文件系统中数据存储的最小单位是block,而PE的作用就像block一样,是Lvm数据存储的最小单位,默认是4MB ,一个卷组VG最多能有65534个PE。

2、物理卷PV

物理卷PV可以是硬盘分区,也可以是硬盘本身或回环文件,是Lvm的基本存储逻辑块。物理卷包括一个特殊的header,其余部分被分割为一块块物理区域。

3、卷组VG

将一个物理卷或多个物理卷组合成为一个管理单元,该管理单元就是卷组。卷组就相当于正常的文件系统中的硬盘,可在上面创建一个或多个Lvm分区。

4、逻辑卷LV

逻辑卷就像正常的硬盘分区,用户可以在逻辑卷上格式化创建文件系统。


lvm的基础及基本应用_第1张图片
Lvm的组成

二、lvm的相关管理命令

lvm应用包括创建管理物理卷、卷组、逻辑卷,对逻辑卷的扩展及缩减空间大小等等。

1、物理卷的管理

与物理卷PV的相关的一些管理命令有:pvcreate,pvdisplay,pvs,pvscan,pvremove,pvmove

  • pvcreate:将硬盘分区创建成为PV
    使用格式:pvcreate [options] [device1] [device2]...
    其常用选项包括:
    -f:强制创建物理卷,不需要用户确认;
    -u:指定PV的UUID;

  • pvscan:搜索目前系统中任何具有PV的数据;
    使用格式:pvscan [options]
    常用选项:
    -n:显示没有关联卷组的物理卷;
    -e:仅显示有关联卷组的物理卷;
    -u:显示物理卷的UUID;
    -s:以短格式显示;

  • pvdisplay:显示出目前系统上得物理卷状态;
    使用格式:pvdisplay [options] [device]
    常用选项:
    -s:以短格式显示;
    -m:显示PV与LV、LE的关联情况;
    -C:以列表的形式显示;

  • pvremove:移除物理卷,把对应磁盘分区的物理卷PV属性删除;
    使用格式:pvremove [options] [device]
    选项:
    -d:调试模式,显示删除的过程;

  • pvmove:将一个物理卷的数据转移到其他物理卷上,根据数据量的大小,这操作有可能会占用大量的时间,并且降低逻辑卷的性能,建议在空闲时间操作;

2、卷组的管理

卷组的管理命令包括:vgcreate,vgdisplay,vgs,vgscan,vgremove

  • vgcreate:创建卷组VG
    命令格式:vgcreate [options] VG_NAME [device1] [device2]...
    常用选项:
    -l:卷组上允许创建的最大逻辑卷数量;
    -p:卷组上允许添加的最大物理卷数;
    -s PESIZE:设置卷组上的物理卷PE大小,PE在物理卷加入到卷组时已经设置好。
  • vgscan:搜索系统上是否存在VG。
  • vgdisplay:显示目前系统上的VG状态;
    命令格式:vgdisplay [options] [device]
    常用选项:
    -s:以短格式显示;
    -A:只显示活动卷组的属性;
    -C:以列表的形式显示;
  • vgextend:在VG内添加额外的PV;
    命令格式:vgextend VG_NAME Device1 Device2 ...
  • vgreduce:在VG内移除PV;
    命令格式:vgreduce VG_NAME Device1 Device2 ...
  • vgchange:用于修改卷组的属性,经常被用来设置卷组是处于活动状态或非活动状态。处于活动状态的卷组无法被删除,必须使用vgchange命令将卷组设置为非活动状态后才能删除。
    命令格式:vgchange [options] VG_NAME
    常用选项:
    -a {y|n}:将VG设置为激活或非激活状态;
    -l,--logicalvolume:设置逻辑卷的最大数量;
  • vgremove:移除卷组;
    命令格式:vgremove VGNAME

3、逻辑卷的管理

与LV相关的命令包括:lvcreate、lvscan、lvdisplay、lvextend、lvreduce、lvremove、lvresize。

  • lvcreate:创建逻辑卷
    命令格式:lvcreate [options] VG_NAME | -s orginal_LV_NAME
    常用选项:
    -L:指定逻辑卷的大小,单位为“kKmMgGtT”字节;
    -n:设置逻辑卷的命令;
    -s:按照给定的逻辑卷的名称或路径,创建其对应的快照卷;
  • lvscan:扫描系统中的逻辑卷;
  • lvdisplay:显示逻辑卷的相关信息;
  • lvextend:增加逻辑卷空间;
    命令格式:lvextend [optioins] [Lv_Name]
    常用命令:
    -L [+]SIZE[kKmMgGtT]:指定扩展后的逻辑卷大小;
  • lvreduce:缩减逻辑卷空间;
  • lvremove:删除指定逻辑卷;
  • lvresize:调整LVM逻辑卷的空间大小,可以增大空间和缩小空间。使用lvresize命令调整逻辑卷空间大小和缩小空间时需要谨慎,因为它有可能导致数据丢失。

注意:所有的逻辑卷在创建完成后,必须对其进行格式化挂载才能使用。

三、LVM的基本应用

1、创建一个10G的卷组,取名给myvg,PE大小为16MB

[root@localhost ~]# fdisk -l /dev/sdd

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2a039123

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    10487807     5242880   8e  Linux LVM
/dev/sdd2        10487808    20973567     5242880   8e  Linux LVM
/dev/sdd3        20973568    31459327     5242880   8e  Linux LVM
/dev/sdd4        31459328    41943039     5241856   8e  Linux LVM
[root@localhost ~]# pvcreate /dev/sdd{1,2}
  Physical volume "/dev/sdd1" successfully created
  Physical volume "/dev/sdd2" successfully created

[root@localhost ~]# vgcreate  -s 16M myvg /dev/sdd{1,2}
  Volume group "myvg" successfully created
[root@localhost ~]# vgdisplay myvg
  --- Volume group ---
  VG Name               myvg
  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.97 GiB
  PE Size               16.00 MiB
  Total PE              638
  Alloc PE / Size       0 / 0   
  Free  PE / Size       638 / 9.97 GiB
  VG UUID               RpVYYx-SsPF-2h7l-9hlW-FXMf-ti5T-iCytfw
   

2、创建一个逻辑卷,取名为mylv,大小为5G。

[root@localhost ~]# lvcreate -L 5G -n mylv myvg
  Logical volume "mylv" created.

3、为卷组myvg新增一个分区,扩展其大小为15G;

[root@localhost ~]# pvcreate /dev/sdd{3,4}
  Physical volume "/dev/sdd3" successfully created.
  Physical volume "/dev/sdd4" successfully created.
[root@localhost ~]# vgextend myvg /dev/sdd3
  Volume group "myvg" successfully extended
[root@localhost ~]# vgdisplay myvg
  --- Volume group ---
  VG Name               myvg
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               14.95 GiB
  PE Size               16.00 MiB
  Total PE              957
  Alloc PE / Size       320 / 5.00 GiB
  Free  PE / Size       637 / 9.95 GiB
  VG UUID               RpVYYx-SsPF-2h7l-9hlW-FXMf-ti5T-iCytfw

4、在格式化挂载逻辑卷mylv之后,尝试扩展逻辑卷mylv大小为10G;

[root@localhost ~]# df -lh 
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   18G  4.8G   13G   28% /
.....
/dev/mapper/myvg-mylv    4.8G   66M  4.5G    2% /mydata
[root@localhost ~]# umount /mydata
[root@localhost ~]# lvextend -L +5G /dev/myvg/mylv 
  Size of logical volume myvg/mylv changed from 5.00 GiB (320 extents) to 10.00 GiB (640 extents).
  Logical volume myvg/mylv successfully resized.
[root@localhost ~]# resize2fs /dev/myvg/mylv 
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv to 2621440 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 2621440 blocks long.
[root@localhost ~]# lvdisplay /dev/myvg/mylv
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                LUVw2b-hxTp-nMWh-swgU-n62l-hSL3-QVUoEY
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2018-03-08 20:48:31 +0800
  LV Status              available
  # open                 0
  LV Size                10.00 GiB
  Current LE             640
  Segments               3
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:6

5、创建逻辑卷mylv的快照。
使用命令lvcreate创建快照,其格式为:lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name orginal_lv_name

[root@localhost ~]# mount /dev/myvg/mylv /mydata/
[root@localhost ~]# lvcreate -L 10G -s -n mysnap /dev/myvg/mylv
  Using default stripesize 64.00 KiB.
  Logical volume "mysnap" created.
[root@localhost ~]# mount /dev/myvg/mysnap /snap/

此时对比 /mydate 和/mysnap 目录内的内容,会发现一样。
6、使用快照备份对应的逻辑卷内容,备份完成会后,删除快照;

[root@localhost ~]# tar Jcf snaptest.tar.xz /snap/*
tar: 从成员名中删除开头的“/”
[root@localhost ~]# ll snaptest.tar.xz 
-rw-r--r--. 1 root root 7820112 3月   8 21:11 snaptest.tar.xz
[root@localhost ~]# umount /snap/
[root@localhost ~]# lvremove /dev/myvg/mysnap 
Do you really want to remove active logical volume myvg/mysnap? [y/n]: y
  Logical volume "mysnap" successfully removed

7、缩减逻辑卷mylv的大小为6G;

root@localhost ~]# umount /dev/myvg/mylv 
[root@localhost ~]# e2fsck -f /dev/myvg/mylv
e2fsck 1.42.9 (28-Dec-2013)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 3A: Optimizing directories
Pass 4: Checking reference counts
第5步: 检查簇概要信息

/dev/myvg/mylv: ***** 文件系统已修改 *****
/dev/myvg/mylv: 3722/655360 files (0.1% non-contiguous), 91436/2621440 blocks
[root@localhost ~]# resize2fs /dev/myvg/mylv 6G
resize2fs 1.42.9 (28-Dec-2013)
Resizing the filesystem on /dev/myvg/mylv to 1572864 (4k) blocks.
The filesystem on /dev/myvg/mylv is now 1572864 blocks long.
[root@localhost ~]# lvreduce -L 6G /dev/myvg/mylv 
  WARNING: Reducing active logical volume to 6.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce myvg/mylv? [y/n]: y
  Size of logical volume myvg/mylv changed from 10.00 GiB (640 extents) to 6.00 GiB (384 extents).
  Logical volume myvg/mylv successfully resized.
root@localhost ~]# mount /dev/myvg/mylv /mydata/
[root@localhost ~]# head -n 2 /mydata/passwd  
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin

8、删除逻辑卷,卷组及物理卷

[root@localhost ~]# umount /mydata/
[root@localhost ~]# lvremove /dev/myvg/mylv 
Do you really want to remove active logical volume myvg/mylv? [y/n]: y
  Logical volume "mylv" successfully removed
[root@localhost ~]# vgremove /dev/myvg
  Volume group "myvg" successfully removed
[root@localhost ~]# pvremove /dev/sdd{1,2,3,4}
  Labels on physical volume "/dev/sdd1" successfully wiped.
  Labels on physical volume "/dev/sdd2" successfully wiped.
  Labels on physical volume "/dev/sdd3" successfully wiped.
  Labels on physical volume "/dev/sdd4" successfully wiped.

你可能感兴趣的:(lvm的基础及基本应用)