文章目录

  • 一、LVM概述
  • 二、LVM命令的详解
  • 2.1、新建物理分区
  • 2.2、PV物理卷
  • 2.3、创建VG卷组
  • 2.4、创建LV
  • 三、格式化逻辑卷并挂载
  • 四、总结


一、LVM概述

LVM:是 Logical Volume Manager(逻辑卷管理)的简写。

LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,是建立在硬盘和分区之上的一个逻辑层,能够在保持现

有数据不变的情况下动态调整磁盘容量,从而来提高磁盘分区管理的灵活性。

首先了解LVM的几个基本术语:

名词解释:

物理卷:physical volume PV

卷组:vlolume groap VG

物理分区:physical partition PP

逻辑卷:logical volume LV

逻辑分区:logical partition LP

二、LVM命令的详解

将普通分区转换为物理卷的命令是pvcreate。

将物理卷组合为卷组的命令是vgcreate。

从卷组中提取容量创建逻辑卷的命令是Ivcreate。

创建完成后可以分别使用pvdisplay、vgdisplay、 Ivdisplay 查看效果。

功能

物理卷管理

卷组管理

逻辑卷管理

Scan 扫描

pvscan

vgscan

lvscan

Create建立

pvcreate

vgcreate

lvcreate

Display显示

pvdisplay

vgdisplay

lvdisplay

Remove删除

pvremove

vgremove

lvremove

Extend扩展

--------------

vgextend

lvextend

Reduce 减少

--------------

vgreduce

lvreduce

2.1、新建物理分区

将各物理磁盘或分区的系统类型设为Linux LVM,其system ID为 8e,通过fdisk工具中的 t 命令设置类型。

[root@localhost ~]# fdisk /dev/sdb 
...
Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (20973568-62914559, default 20973568): 
Using default value 20973568
Last sector, +sectors or +size{K,M,G} (20973568-62914559, default 62914559): +5G
...
Command (m for help): t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 8e  # 指定system id为8e
Changed type of partition 'Linux' to 'Linux LVM'
...
Command (m for help): p
...
/dev/sdb1            2048    20973567    10485760   8e  Linux LVM
/dev/sdb2        20973568    31459327     5242880   8e  Linux LVM
Command (m for help): w
...

2.2、PV物理卷

1、pvcreate:用于将分区或整个硬盘转换成物理卷。

用法: pvcreate [选项]物理卷[物理卷..]
例子:
[root@localhost ~]# pvcreate /dev/sdb{1,2}  # 将两个分区初始化为物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdb2" successfully created.

2、pvscan:扫描当前系统上的所有物理卷

用法:pvscan [option]
  [root@localhost ~]# pvscan 
  PV /dev/sdb2                      lvm2 [5.00 GiB]
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  Total: 2 [15.00 GiB] / in use: 0 [0   ] / in no VG: 2 [15.00 GiB]

3、pvdisplay:显示物理卷的属性

用法:pvdisplay [PV_DEVICE]
  
  [root@localhost ~]# pvdisplay /dev/sdb1   # 显示物理卷sdb1的详细信息
  "/dev/sdb1" is a new physical volume of "10.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdb1
  VG Name               
  PV Size               10.00 GiB
  Allocatable           NO
  PE Size               0   # 由于PE是在VG阶段才划分的,所以此处看到的都是0
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               GrP9Gi-ubau-UAcb-za3B-vSc3-er2Q-MVt9OO

4、pvremove:将物理卷信息删除,使其不再被视为一个物理卷

用法:pvremove [option] PV_DEVICE
  
[root@localhost ~]# pvremove /dev/sdb2   # 删除sdb2的物理卷信息
  Labels on physical volume "/dev/sdb2" successfully wiped.
[root@localhost ~]# pvscan     # 可以看到PV列表中已无sdb2
  PV /dev/sdb1                      lvm2 [10.00 GiB]
  Total: 1 [10.00 GiB] / in use: 0 [0   ] / in no VG: 1 [10.00 GiB

2.3、创建VG卷组

卷组将多个物理卷整合起来(屏蔽了底层细节),并划分PE(physical extend)

PE是物理卷中的最小存储单元,有点类似于文件系统中的block,PE大小可指定,默认为4M。

1、vgcreate:创建卷组

用法:vgcreate [option] VG_NAME PV_DEVICE

  选项:

      -s:卷组中的物理卷的PE大小,默认为4M

      -l:卷组上允许创建的最大逻辑卷数

      -p:卷级中允许添加的最大物理卷数
例子:

  [root@localhost ~]# vgcreate -s 8M myvg /dev/sdb{1,2}
  Volume group "myvg" successfully created

2、vgscan:查找系统中存在的LVM卷组,并显示找到的卷组列表

例如:
[root@localhost ~]# vgscan
  Reading volume groups from cache.
  Found volume group "myvg" using metadata type lvm2

3、vgdisplay:显示卷组属性

用法:vgdisplay [option] [VG_NAME]

[root@localhost ~]# vgdisplay
  --- 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               14.98 GiB
  PE Size               8.00 MiB
  Total PE              1918
  Alloc PE / Size       0 / 0   
  Free  PE / Size       1918 / 14.98 GiB
  VG UUID               aM3RND-aUbQ-7RjC-dCci-JiS4-Oj2Z-wv9poA

4、vgextend:动态扩展LVM卷组,它通过向卷组中添加物理卷来增加卷组的容量

用法:vgextend VG_NAME PV_DEVICE

  例 vgextend myvg /dev/sdb3

5、vgreduce:通过删除LVM卷组中的物理卷来减少卷组容量,不能删除LVM卷组中剩余的最后一个物理卷

用法:vgreduce VG_NAME PV_DEVICE

6、vgremove:删除卷组,其上的逻辑卷必须处于离线状态

用法:vgremove [-f] VG_NAME

  -f:强制删除

2.4、创建LV

在卷组上创建LV(logical volume,逻辑卷)

为了便于管理,逻辑卷对应的设备文件保存在卷组目录下,为/dev/VG_NAME/LV_NAME。

1、lvcreate:创建逻辑卷或快照

用法:lvcreate [选项] [参数]

  选项:

      -L:指定大小

      -l:指定大小(LE数)

      -n:指定名称

      -s:创建快照

      -p r:设置为只读(该选项一般用于创建快照中)

  注:使用该命令创建逻辑卷时当然必须指明卷组,创建快照时必须指明针对哪个逻辑卷  
         
例子:
  [root@localhost ~]# lvcreate -L 2G -n mylv myvg  
  Logical volume "mylv" created.

2、lvscan:扫描当前系统中的所有逻辑卷,及其对应的设备文件

例子:
[root@localhost ~]# lvscan 
  ACTIVE            '/dev/myvg/mylv' [2.00 GiB] inherit

3、lvdisplay:显示逻辑卷属性

用法:lvdisplay [/dev/VG_NAME/LV_NAME]
  
[root@localhost ~]# lvdisplay 
  --- Logical volume ---
  LV Path                /dev/myvg/mylv
  LV Name                mylv
  VG Name                myvg
  LV UUID                2lfCLR-UEhm-HMiT-ZJil-3EJm-n2H3-ONLaz1
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-07-05 13:42:44 +0800
  LV Status              available
  # open                 0
  LV Size                2.00 GiB
  Current LE             256
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

4、lvextend:可在线扩展逻辑卷空间

用法:lvextend -L/-l 扩展的大小 /dev/VG_NAME/LV_NAME  

  选项:
    -L:指定扩展(后)的大小。例如,-L +800M表示扩大800M,而-L 800M表示扩大至800M

    -l:指定扩展(后)的大小(LE数)
      
     例子:
   lvextend -L 200M /dev/myvg/mylv

5、lvreduce:缩减逻辑卷空间,一般离线使用

用法:lvexreduce -L/-l 缩减的大小 /dev/VG_NAME/LV_NAME  

  选项:

      -L:指定缩减(后)的大小

      -l:指定缩减(后)的大小(LE数)

  例 lvreduce -L 200M /dev/myvg/mylv

6、lvremove:删除逻辑卷,需要处于离线(卸载)状态

用法:lvremove [-f] /dev/VG_NAME/LV_NAME

  -f:强制删除

三、格式化逻辑卷并挂载

[root@localhost ~]# mke2fs -t ext4 /dev/myvg/mylv 
...                         
Writing inode tables: done                            
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done 
...
[root@localhost ~]# mkdir /data
[root@localhost ~]# mount
mount       mountpoint  
[root@localhost ~]# mount /dev/myvg/mylv /data
[root@localhost ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda1               50G  1.5G   49G   3% /
devtmpfs               903M     0  903M   0% /dev
tmpfs                  912M     0  912M   0% /dev/shm
tmpfs                  912M  8.6M  904M   1% /run
tmpfs                  912M     0  912M   0% /sys/fs/cgroup
tmpfs                  183M     0  183M   0% /run/user/0
/dev/mapper/myvg-mylv  2.0G  6.0M  1.8G   1% /data

四、总结

如果格式化成 EXT4 文件系统,然后在使用 lvextend 命令为逻辑卷扩容,最后一定要用 resize2fs 更新系统识别的
文件系统大小。

如果格式化成 xfs 文件系统,LVM扩容后使用的是 xfs_growfs 命令 更新系统识别的文件系统大小。

通过以上内容,相信大家对LVM的配置过程和一些命令有了一定的了解,但是对于LVM的配置还需要多多练习。不
要担心,在下一个博客我会列举一个实例操作来带着大家做。