Linux 基于 LVM 逻辑卷的磁盘管理【简明教程】

一、传统磁盘管理的弊端

传统的磁盘管理:使用MBR先对硬盘分区,然后对分区进行文件系统的格式化最后再将该分区挂载上去

传统的磁盘管理当分区没有空间使用进行扩展时,操作比较麻烦。分区使用空间已经满了,不再够用了,此时无法通过拉伸分区来进行分区扩充,只能通过添加新的硬盘来扩展,然后在新的硬盘上创建分区,接着再对分区格式化,然后将之前分区的所有东西拷贝到新的分区里面。
新增的硬盘作为独立的文件系统存在的,原有的文件系统没有得到任何的扩充。

传统的磁盘管理不能进行动态的磁盘管理,新增硬盘拷贝原有内容时还需要卸载掉当前的挂载点,并且当原有内容文件较多时,花费的时间也较多,一些实时的服务也不接受去停止再去拷贝内容挂载

二、LVM的磁盘管理

LVM (logical volume Manager)逻辑卷管理。

逻辑卷管理LVM是一个多才多艺的硬盘系统工具。无论在Linux或者其他类似的系统,都是非常的好用。传统分区使用固定大小分区,重新调整大小十分麻烦。但是,LVM可以创建和管理“逻辑”卷,而不是直接使用物理硬盘。可以让管理员弹性的管理逻辑卷的扩大缩小,操作简单,而不损坏已存储的数据。可以随意将新的硬盘添加到LVM,以直接扩展已经存在的逻辑卷。LVM并不需要重启就可以让内核知道分区的存在。

LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。

在传统的磁盘管理机制中,上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。

例如:当新增一个物理硬盘时,上层服务是感觉不到的,因为呈现给上次服务的是以逻辑卷的方式(挂载的是逻辑卷)。

LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!!!

三、基础概念 PE,PV,VG,LV 及 LVM的原理

  1. PE (Physical Extend) 物理拓展
  2. PV (Physical Volume) 物理卷
  3. VG (Volume Group) 卷组
  4. LV (Logical Volume) 逻辑卷

在这里插入图片描述

在LVM的磁盘管理中,首先将硬盘划分分区,然后将分区格式化存储物理卷(PV),一个或多个物理卷可以用来创建卷组(VG),然后基于卷组可以创建逻辑卷(LV)。

格式化物理卷的过程中LVM是将底层的硬盘划分为了一个一个的PE(Physical Extend)LVM磁盘管理中PE的默认大小是4M大小,PE就是逻辑卷管理的最基本单位

只要在卷组中有可用空间,就可以随心所欲的创建逻辑卷,文件系统就是在逻辑卷上创建的,然后操作系统挂载和使用访问。

四、实验-使用LVM磁盘管理

实验内容:给当前的操作系统新增两块硬盘,然后使用LVM磁盘管理

在这里插入图片描述

下图中的/dev/sdb和/dev/sdc为我们新增的硬盘

在这里插入图片描述

(一)磁盘分区

将/dev/sdb 划分为三个主分区,分别为2GB,3GB,5GB的空间

fdisk /dev/sdb
[root@robin robin]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x7e72cf82 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{
    
    K,M,G} (2048-20971519,默认为 20971519):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):2
起始 扇区 (4196352-20971519,默认为 4196352):
将使用默认值 4196352
Last 扇区, +扇区 or +size{
    
    K,M,G} (4196352-20971519,默认为 20971519):+3G
分区 2 已设置为 Linux 类型,大小设为 3 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (10487808-20971519,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{
    
    K,M,G} (10487808-20971519,默认为 20971519):
将使用默认值 20971519
分区 3 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):1
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):2
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”

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

Calling ioctl() to re-read partition table.
正在同步磁盘。

分区划分完毕后进行查看

fdisk -l /dev/sdb # 查看sdb的磁盘分区列表信息

在这里插入图片描述

(二)准备物理卷

刚创建的分区是用来储存物理卷的。LVM可以使用不同大小的物理卷。
接下来会使用的几个命令的说明:

  1. pvcreate 创建物理卷
  2. pvremove 删除物理卷
  3. pvdisplay 查看物理卷的属性信息
  4. pvs 列出系统上的所有物理卷及其信息(LVM提供的一个命令行工具)
  5. pvextend 扩展物理卷的大小

首先,根据刚刚的三个主分区依次创建三个不同大小的物理卷

pvcreate /dev/sdb1
pvcreate /dev/sdb2
pvcreate /dev/sdb3

使用pvdisplay看一下物理卷的属性信息,可以看到每个物理卷的名称就是它的主分区名称

在这里插入图片描述

(三)准备卷组

常用命令(和物理卷的格式一样)

  1. vgcreate 创建卷组
  2. vgremove 删除卷组
  3. vgdisplay 查看卷组信息
  4. vgs 列出系统上的所有卷组及其信息(LVM提供的一个命令行工具)
  5. vgextend 扩展卷组中的物理卷(添加新的物理卷到卷组中)

将刚刚创建的三个物理卷都放到一个卷组(vg_test)中

# -s 选项用来指定 PE的大小, vg_test为新建的卷组名称
vgcreate -s 4M vg_test /dev/sdb1 /dev/sdb2 /dev/sdb3

同样,验证查看一下卷组的信息,使用 vgdisplay 命令
在这里插入图片描述

(四)创建逻辑卷

常用命令:

  1. lvcreate 创建逻辑卷
  2. lvremove 删除逻辑卷
  3. lvdisplay 查看逻辑卷信息
  4. lvs 列出系统上的所有逻辑卷及其信息(LVM提供的一个命令行工具)
  5. lvresize 调整逻辑卷的大小
  6. lvextend 扩展逻辑卷的大小

我们刚刚生成的卷组大小差不多有10GB,现在根据卷组去创建逻辑卷,先创建一个5GB的逻辑卷(lv_test)

# -n 指定逻辑卷的名称 
# -L 指定逻辑卷的大小
lvcreate -n lv_test -L 5G /dev/vg_test

使用lvdisplay命令查看一下,可以看到lv_test的卷组是vg_test,以及它的一个大小是5G,并且它的路径为 “/dev/vg_test/lv_test” (/dev/卷组/逻辑卷)

在这里插入图片描述

(五)格式化-挂载

格式化逻辑卷为文件系统,使用 mkfs 命令。挂载使用 mount 命令。

  1. 格式化逻辑卷
mkfs.ext4 /dev/vg_test/lv_test

在这里插入图片描述

  1. 挂载
mkdir /home/robin/data # 这里我存在一个robin用户,所以我将robin用户下的data目录作为挂载点使用
mount /dev/vg_test/lv_test /home/robin/data
  1. 查看挂载后的状态(df)
df -h /home/robin/data

在这里插入图片描述

(六)扩展逻辑卷

动态的扩展,是LVM最有用的功能.
扩展逻辑卷分为如下几步:

  1. 卸载当前要进行扩展的逻辑卷 (umount)
  2. 扩展逻辑卷大小 (lvresize)
  3. 检查磁盘错误
  4. 更新文件系统大小
  5. 重新挂载
 umount /dev/vg_test/lv_test # 1. 卸载逻辑卷
 lvresize -L 7G /dev/vg_test/lv_test # 2. 扩展逻辑卷大小到7G
 e2fsck -f /dev/vg_test/lv_test # 3. 检查逻辑卷磁盘错误
 resize2fs /dev/vg_test/lv_test # 4.更新文件系统大小
 mount /dev/vg_test/lv_test /home/robin/data # 5.重新挂载

再次使用 df 命令查看挂载目录的磁盘信息,容量已经发生改变。

在这里插入图片描述

(七)扩展卷组

假设我们第一块硬盘(/dev/sdb)创建的卷组(vg_test)已经满了,且/dev/sdb这块硬盘已经没有可以使用的多余空间了,同时我们还有一块硬盘/dev/sdc (10GB大小)尚未使用,我们从第二块硬盘中划分两个G给卷组vg_test进行扩展。

卷组扩展的本质就是 将物理卷加入到卷组中

所以从其他硬盘进行扩展卷组可以分为如下几步:
● 新的硬盘进行分区
● 创建不同大小的物理卷
● 将新创建的物理卷添加到需要扩展的卷组中
● 查看检验卷组是否扩充

  1. 将/dev/sdc进行分区(先分一个2G的分区给我们扩展使用就行)
fdisk /dev/sdc

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-20971519,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{
    
    K,M,G} (2048-20971519,默认为 20971519):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):t
已选择分区 1
Hex 代码(输入 L 列出所有代码):8e

WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.

已将分区“FAT12”的类型更改为“Linux LVM”

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

Calling ioctl() to re-read partition table.

在这里插入图片描述

在这里插入图片描述

  1. 基于主分区/dev/sdc1创建物理卷 /dev/sdc1
pvcreate /dev/sdc1
  1. 将新建的物理卷添加到需要扩展的卷组(vg_test)中
vgextend vg_test /dev/sdc1
  1. 查看卷组是否正确的扩充
vgdisplay vg_test

在这里插入图片描述

tips: 这里第一块硬盘10G加上第二块扩展的2G所以就是接近于12G的一个大小


猜你喜欢

转载自blog.csdn.net/m0_63622279/article/details/134345525