LVM创建逻辑卷,实现单个目录挂载多个磁盘

1. 理论知识

1.1 LVM 是什么

LVM 是 Logical Volume Manager 的缩写,中文一般翻译为 "逻辑卷管理",它是 Linux 下对磁盘分区进行管理的一种机制。LVM 是建立在磁盘分区和文件系统之间的一个逻辑层,系统管理员可以利用 LVM 在不重新对磁盘分区的情况下动态的调整分区的大小。如果系统新增了一块硬盘,通过 LVM 就可以将新增的硬盘空间直接扩展到原来的磁盘分区上。

LVM 的优点如下:

  • 文件系统可以跨多个磁盘,因此大小不再受物理磁盘的限制。
  • 可以在系统运行状态下动态地扩展文件系统大小。
  • 可以以镜像的方式冗余重要数据到多个物理磁盘上。
  • 可以很方便地导出整个卷组,并导入到另外一台机器上。

LVM 也有一些缺点:

  • 在从卷组中移除一个磁盘的时候必须使用 reducevg 命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
  • 当卷组中的一个磁盘损坏时,整个卷组都会受影响。
  • 因为增加了一个逻辑层,存储的性能会受影响。

LVM 的优点对服务器的管理非常有用,但对于桌面系统的帮助则没有那么显著,所以需要我们根据使用的场景来决定是否应用 LVM。

1.2 LVM 中的基本概念

通过 LVM 技术,可以屏蔽掉磁盘分区的底层差异,在逻辑上给文件系统提供了一个卷的概念,然后在这些卷上建立相应的文件系统。下面是 LVM 中主要涉及的一些概念。

  • 物理存储设备(Physical Media):指系统的存储设备文件,比如 /dev/sda、/dev/sdb 等。
  • PV(物理卷 Physical Volume):指硬盘分区或者从逻辑上看起来和硬盘分区类似的设备(比如 RAID 设备)。
  • VG(卷组 Volume Group):类似于非 LVM 系统中的物理硬盘,一个 LVM 卷组由一个或者多个 PV(物理卷)组成。
  • LV(逻辑卷 Logical Volume):类似于非 LVM 系统上的磁盘分区,LV 建立在 VG 上,可以在 LV 上建立文件系统。
  • PE(Physical Extent):PV(物理卷)中可以分配的最小存储单元称为 PE,PE 的大小是可以指定的。
  • LE(Logical Extent):LV(逻辑卷)中可以分配的最小存储单元称为 LE,在同一个卷组中,LE 的大小和 PE 的大小是一样的,并且一一对应。

可以这么理解,LVM 是把硬盘的分区分成了更小的单位(PE),再用这些单元拼成更大的看上去像分区的东西(PV),进而用 PV 拼成看上去像硬盘的东西(VG),最后在这个新的硬盘上创建分区(LV)。文件系统则建立在 LV 之上,这样就在物理硬盘和文件系统中间添加了一层抽象(LVM)。下图大致描述了这些概念之间的关系:


对上图中的结构做个简单的介绍:两块物理硬盘 A 和 B 组成了 LVM 的底层结构,这两块硬盘的大小、型号可以不同。PV 可以看做是硬盘上的分区,因此可以说物理硬盘 A 划分了两个分区,物理硬盘 B 划分了三个分区。然后将前三个 PV 组成一个卷组 VG1,后两个 PV 组成一个卷组 VG2。接着在卷组 VG1 上划分了两个逻辑卷 LV1 和 LV2,在卷组 VG2 上划分了一个逻辑卷 LV3。最后,在逻辑卷 LV1、LV2 和 LV3 上创建文件系统,分别挂载在 /usr、/home 和 /var 目录。

2. 具体操作

step-1:使用fdisk -l查看当前的磁盘信息


step-2:用 parted 命令可以查看 /dev/sdd 当前的分区情况

parted /dev/sdd print

step-3:安装gdisk ,使用gdisk对物理磁盘进行分区

apt install gdisk
gdisk /dev/sdd

通过 p 命令可以查看磁盘当前的状态:


输出中的前几行是磁盘的基本信息,比如总大小为 20G,一共有多少个扇区(sector),每个扇区的大小,当前剩余的空间等等。然后是已经存在的分区信息(上图显示还没有任何分区):

  • 第一列 Number 显示了分区的编号,比如 1 号指 /dev/sdd1。
  • 第二列 Start 表示磁盘分区的起始位置。
  • 第三列 End 表示磁盘分区的结束位置。
  • 第四列 Size 显示分区的容量。
  • 第五列 Code 和第六列 Name 显示分区类型的 ID和名称,比如 Linux filesystem 为 8300,Linux swap 为 8200,Linux LVM 为 8e00。

下面通过 以下命令来创建新分区(依次敲):

n
enter 
enter 
enter  
8e00  
w
q

step-4:如果之前已经划分为多个分区,则可以执行fdisk /dev/sdc合并为1个分区,把分区删除后,再对/dev/sdc进行LVM

step-5:现在我们可以基于磁盘分区 /dev/sdd1等来创建 LVM 物理卷(LV),可以通过 pvcreate 命令来完成

pvcreate  /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1

使用pvdisplay可以看到我们创建的5个物理卷。

step-6:基于一个或多个 PV,可以创建 VG,lvm_data是vg组的名字,可以自定义,,vgs 命令可以观察 VG 的信息

vgcreate lvm_data  /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1
vgs lvm_data

step-7:有了 VG 就可以创建逻辑卷 LV 了,lvcreate 命令用来创建 LV,让我们在前面创建的lvm_data上创建名称为lvm_data_1的 LV

lvcreate -L 11111G -n lvmdata_1 lvm_data
fdisk -l

当我们创建 LV lvm_data/lvm_data_1时,其实是创建了名称为 /dev/lvm_data/lvm_data_1的设备文件,现在我们来格式化这个逻辑卷(在该 LV 上创建文件系统),目标为比较常见的 ext4 格式:

mkfs.ext4 /dev/mapper/lvm_data-lvmdata_1

最后可以挂载到一个目录上,查看结果:


参考:

  • LVM 简介
  • Linux单目录挂载多块磁盘

你可能感兴趣的:(LVM创建逻辑卷,实现单个目录挂载多个磁盘)