Linux:LVM逻辑卷管理

在这里插入图片描述

LVM概述

LVM是 Logical Volume Manager(逻辑卷管理)的简写,它是Linux环境下对磁盘分区进行管理的一种机制,它由Heinz Mauelshagen在Linux 2.4内核上实现,目前最新版本为:稳定版1.0.5,开发版 1.1.0-rc2,以及LVM2开发版。Linux用户安装Linux操作系统时遇到的一个常见的难以决定的问题就是如何正确地评估各分区大小,以分配合适的硬盘空间。普通的磁盘分区管理方式在逻辑分区划分好之后就无法改变其大小,当一个逻辑分区存放不下某个文件时,这个文件因为受上层文件系统的限制,也不能跨越多个分区来存放,所以也不能同时放到别的磁盘上。而遇到出现某个分区空间耗尽时,解决的方法通常是使用符号链接,或者使用调整分区大小的工具,但这只是暂时解决办法,没有从根本上解决问题。随着Linux的逻辑卷管理功能的出现,这些问题都迎刃而解,用户在无需停机的情况下可以方便地调整各个分区大小。如下图
在这里插入图片描述
从用户态应用来看,LVM逻辑卷相当于一个普通的块设备,对其的读写操作和普通的块设备完全相同。而从物理设备层来看,LVM相对独立于底层的物理设备,并且屏蔽了不同物理设备之间的差异。因而在LVM层上实现数据的连续保护问题,可以不需要单独考虑每一种具体的物理设备,避免了在数据复制过程中因物理设备之间的差异而产生的问题。从LVM的内核实现原理上看,LVM是在内核通用块设备层到磁盘设备驱动层的请求提交流之间开辟的另外一条路径,即在通用块设备层到磁盘设备驱动层之间插入了LVM管理映射层用于截获一定的请求进行处理,如下图。
在这里插入图片描述
用户通过lvm提供接口,依靠内核创建一系列LVM逻辑卷,所有对lvm逻辑卷的读写操作最终都会由LVM在通用块设备层下方截获下来,进行更进一步的处理。这里的进一步处理主要指的是完成写请求的映射,是将请求的数据根据实际情况进行一些拆分和重定位操作,从而可以将请求和数据分发到实际的物理设备中去。

Logical Volume Manager,逻辑卷管理

动态调整磁盘容量,从而提高磁盘管理的灵活性
/boot分区用户存放引导文件,不能基于LVM创建
图形界面管理工具
● system-config-lvm

LVM机制的基本概念

PV(物理卷) 由多个PE组成 1PE = 4M
VG(卷组)
LV(逻辑卷)
在这里插入图片描述

主要命令

功能 物理卷 卷组管理 逻辑卷管理
Scan 扫描 pvscan vgscan lvscan
Create建立 pvcreate vgcreate lvcreate
Display显示 dvdisplay vgdisplay lvdisplay
Remvoe删除 pvremove vgremove lvremove
Extend扩展 —— vgextend lvextend
REduce减少 —— vgreduce lvreduce

Scan 显示摘要信息

Display 显示详细信息

磁盘需要转换8e格式才可以进行物理卷的建立

pvcreate   设备名1  [设备名2 ……]                      //物理卷建立

vgcreate   卷组名  物理卷名1   物理卷名2                //卷组建立

lvcreate   -L  容量大小  -n  逻辑卷名  卷组名           //逻辑卷建立

lvextend  -L  +大小  /dev/卷组名/逻辑卷名              //扩展逻辑卷

实例:

环境

公司转杯在Internet中搭建邮件服务器(Centos7.3系统平台),面向全国各地的员工及部分VIP客户提供电子邮箱看空间

需求

由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并建构LVM逻辑卷(挂载到“/mailbox”目录下)专门用于存放邮件数据

步骤

在这里插入图片描述

先建分区转8e格式

[root@localhost ~]# fdisk /dev/sdb             //创建分区
命令(输入 m 获取帮助):
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t                         //更换类型命令
已选择分区 1
Hex 代码(输入 L 列出所有代码)8e                //更改为8e类型
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!


Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk /dev/sdc             //创建分区
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t                        //更换类型命令
已选择分区 1
Hex 代码(输入 L 列出所有代码)8e                //更改为8e类型
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# pvcreate /dev/sd[b-c]1                 //创建物理卷
  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
[root@localhost ~]# pvscan                                //扫描物理卷信息
  PV /dev/sdc1                      lvm2 [<20.00 GiB]
  PV /dev/sdb1                      lvm2 [<20.00 GiB]
  Total: 2 [<40.00 GiB] / in use: 0 [0   ] / in no VG: 2 [<40.00 GiB]
[root@localhost ~]# vgcreate kgc /dev/sd[b-c]1             //创建卷组
  Volume group "kgc" successfully created
[root@localhost ~]# vgdisplay                              //显示卷组信息
  --- Volume group ---
  VG Name               kgc
  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               39.99 GiB
  PE Size               4.00 MiB
  Total PE              10238
  Alloc PE / Size       0 / 0   
  Free  PE / Size       10238 / 39.99 GiB
  VG UUID               dLmCiV-MXH5-XZ9j-RTcg-WOEZ-OipE-ZMnQzG
   
[root@localhost ~]# lvcreate -L 30G -n ky02 kgc          //创建逻辑卷
  Logical volume "ky02" created.
[root@localhost ~]# lvdisplay                            //显示逻辑卷信息
  --- Logical volume ---
  LV Path                /dev/kgc/ky02
  LV Name                ky02
  VG Name                kgc
  LV UUID                XoQJq4-grr5-qMMQ-hYhV-yyrs-9DRY-VayGEc
  LV Write Access        read/write
  LV Creation host, time localhost.localdomain, 2019-11-04 21:31:11 +0800
  LV Status              available
  # open                 0
  LV Size                30.00 GiB
  Current LE             7680
  Segments               2
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:0
   
[root@localhost ~]# mkfs.xfs /dev/kgc/ky02          //创建文件系统“格式化”
meta-data=/dev/kgc/ky02          isize=512    agcount=4, agsize=1966080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=7864320, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /zb               //根目录下创建目录
[root@localhost ~]# vim /etc/fstab          //进入配置文件设置自动挂载

在这里插入图片描述

[root@localhost ~]# mount -a           //启动所有挂载,无需重启
[root@localhost ~]# df -hT             //查看挂载详细信息
文件系统             类型      容量  已用  可用 已用% 挂载点
/dev/sda2            xfs        20G  4.3G   16G   22% /
devtmpfs             devtmpfs  898M     0  898M    0% /dev
tmpfs                tmpfs     912M     0  912M    0% /dev/shm
tmpfs                tmpfs     912M  9.0M  903M    1% /run
tmpfs                tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda5            xfs        10G   37M   10G    1% /home
/dev/sda1            xfs       6.0G  174M  5.9G    3% /boot
tmpfs                tmpfs     183M   12K  183M    1% /run/user/42
tmpfs                tmpfs     183M     0  183M    0% /run/user/0
/dev/mapper/kgc-ky02 xfs        30G   33M   30G    1% /zb               //挂载成功
[root@localhost ~]# lvextend -L +5G /dev/kgc/ky02           //扩展逻辑卷
  Size of logical volume kgc/ky02 changed from 30.01 GiB (7683 extents) to 35.01 GiB (8963 extents).
  Logical volume kgc/ky02 successfully resized.
[root@localhost ~]# df -hT                                //查看挂载信息
文件系统             类型      容量  已用  可用 已用% 挂载点
/dev/sda2            xfs        20G  4.3G   16G   22% /
devtmpfs             devtmpfs  898M     0  898M    0% /dev
tmpfs                tmpfs     912M     0  912M    0% /dev/shm
tmpfs                tmpfs     912M  9.0M  903M    1% /run
tmpfs                tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda5            xfs        10G   37M   10G    1% /home
/dev/sda1            xfs       6.0G  174M  5.9G    3% /boot
tmpfs                tmpfs     183M   12K  183M    1% /run/user/42
tmpfs                tmpfs     183M     0  183M    0% /run/user/0
/dev/mapper/kgc-ky02 xfs        30G   33M   30G    1% /zb
[root@localhost ~]# xfs_growfs /dev/kgc/ky02              //针对xfs文件类型更新逻辑卷
meta-data=/dev/mapper/kgc-ky02   isize=512    agcount=5, agsize=1966080 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0 spinodes=0
data     =                       bsize=4096   blocks=7867392, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal               bsize=4096   blocks=3840, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 7867392 to 9178112
[root@localhost ~]# df -hT                               //查看挂载信息
文件系统             类型      容量  已用  可用 已用% 挂载点
/dev/sda2            xfs        20G  4.3G   16G   22% /
devtmpfs             devtmpfs  898M     0  898M    0% /dev
tmpfs                tmpfs     912M     0  912M    0% /dev/shm
tmpfs                tmpfs     912M  9.0M  903M    1% /run
tmpfs                tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda5            xfs        10G   37M   10G    1% /home
/dev/sda1            xfs       6.0G  174M  5.9G    3% /boot
tmpfs                tmpfs     183M   12K  183M    1% /run/user/42
tmpfs                tmpfs     183M     0  183M    0% /run/user/0
/dev/mapper/kgc-ky02 xfs        35G   33M   35G    1% /zb             //扩展成功,增加5G

xfs_growfs 针对xfs文件类型更新
resize2fs 针对ext 文件类型更新

猜你喜欢

转载自blog.csdn.net/weixin_47219818/article/details/106945803