网站搜索

如何在 Linux 中使用 LVM 创建磁盘存储 - 第 1 部分


逻辑卷管理 (LVM) 是一个功能强大的工具,可以极大地简化磁盘空间管理。使用LVM,为文件系统分配额外空间的任务变得毫不费力。

每当文件系统需要更多空间时,它都可以轻松地从相应卷组中的可用空间中提取。因此,文件系统可以动态调整大小以满足我们的特定需求。

此外,LVM 在发生磁盘故障时提供强大的数据保护。如果磁盘开始出现故障迹象,我们可以将替换磁盘作为新的物理卷无缝集成到卷组中。

通过这样做,逻辑卷可以有效地迁移到新磁盘,确保连续性并防止任何潜在的数据丢失。

从本质上讲,LVM 使管理员能够以无与伦比的灵活性和弹性处理磁盘空间分配和管理。其动态调整大小功能和内置冗余功能使其成为优化存储利用率和增强任何系统配置中的数据完整性不可或缺的资产。

隆重推出综合系列“设置 LVM(逻辑卷管理)的准备”,该系列经过精心设计,涵盖第 1 部分至第 6 部分,深入探讨了以下基本主题:

在继续进行 LVM 设置之前,请考虑以下先决条件:

我的服务器设置 – 要求
  • 操作系统 – 带有 LVM 安装的 RHEL 9
  • IP – 192.168.0.200
  • 磁盘 – 3 个磁盘,每个磁盘 20GB。

检查Linux中的LVM磁盘存储

1. 为了深入了解我们的 LVM 设置,我们可以使用以下命令来显示不同的组件:物理卷 (PV)卷组 (VG)逻辑卷 (LV)

pvs 
vgs
lvs

这里是上面截图中显示的每个参数的说明。

  • 物理磁盘大小(PV 大小)
  • 使用的磁盘是虚拟磁盘sda
  • 卷组大小(VG 大小)
  • 卷组名称 (vg_howtoing)
  • 逻辑卷名称(LogVol00LogVol01
  • LogVol00 分配给 956MB 大小的交换
  • LogVol01 分配给 18.63GB

所以,从这里我们知道VDA磁盘中没有足够的可用空间。

在LVM中创建新卷组

2. 要创建新的卷组,我们需要向该服务器添加额外的 3 个硬盘。但是,并不强制要求使用 3 个驱动器;只需 1 就足以在该 VG 内创建一个新的 VGLV逻辑卷)。

我在这里添加以下 3 个磁盘用于演示目的并提供更多功能命令说明。

sdb, sdc, sdd

3. 要列出所有磁盘及其分区,例如磁盘名称、大小、分区类型、起始和结束扇区等,请使用 fdisk 实用程序,如图所示。

fdisk -l

这里是上面屏幕截图中显示的每个磁盘的描述。

  • 操作系统使用的默认磁盘是 RHEL 9。
  • 默认磁盘上定义的分区如下:(sda1=boot)、(sda2=/)。
  • 此外,添加的磁盘被称为 Disk1、Disk2 和 Disk3。

每个磁盘的大小为 20 GB。

4. 现在运行vgdisplay命令来查看系统上存在的所有卷组的详细信息,包括它们的名称、大小、可用空间、物理卷(PV)信息等等。

vgdisplay

这里是上面截图中显示的每个参数的说明。

  • VG 名称 – 卷组名称。
  • 格式 – LVM架构使用lvm2。
  • VG Access卷组处于读写模式并可供使用。
  • VG Status – 可以调整卷组的大小。如果我们需要添加更多空间,我们可以对其进行扩展。
  • 当前 LV – 目前,此卷组中有 2 个逻辑卷。
  • CurPV 和 Act PV – 当前使用的物理磁盘为 1 (vda),并且处于活动状态。所以,我们可以使用这个卷组。
  • PE 大小 – 磁盘的物理范围 (PE) 和大小可以使用 PE 或 GB 大小来定义。 LVM 的默认 PE 大小为 4 MB。例如,如果我们需要创建一个5GB的逻辑卷,则总共可以使用1280个PE。你明白我所说的吗?

解释如下:1 GB 等于 1024 MB,因此 1024 MB x 5=5120 PE=5 GB。现在,将 5120 除以 4=1280。4 是默认 PE 大小。

  • 总 PE – 该卷组有。
  • 分配 PE – 已使用的总 PE,已使用的全部 PE,5008 x 4PE=20032。
  • 免费PE – 这里已经使用了,所以没有免费PE。

5.现在列出文件系统磁盘空间信息,这里仅sda/boot/一起使用,并使用 LVM 在 sda 物理磁盘上交换。该磁盘上没有剩余空间。

df -TH

上图显示了我们正在使用的挂载点,19GB已完全用于根目录,因此没有可用空间。

创建磁盘分区

6.因此,让我们创建一个名为howtoing_add_vg的新物理卷(PV)和卷组(VG),并在其中创建逻辑卷(LV)。在这里,我们可以创建 4 个逻辑卷,名称分别为 howtoing_documentshowtoing_managerhowtoing_public

我们可以扩展当前使用的VGVolume Group来获得更多的空间。但是,在本例中,我们将创建一个新的卷组并对其进行试验。稍后,我们可以看到如何扩展当前正在使用的卷组的文件系统。

在使用新磁盘之前,我们需要使用fdisk命令对磁盘进行分区,如图所示。

fdisk -c /dev/sdb

接下来,按照以下步骤创建新分区。

  • 选择n 创建新的。
  • 选择p 创建主分区。
  • 选择我们需要创建的分区数量。
  • 回车两次可使用磁盘的全部空间。
  • 我们需要更改新创建的分区类型t的类型。
  • 需要更改哪个分区号,选择我们创建的1号。
  • 这里我们需要改变类型,我们需要创建LVM,所以我们要使用LVM的类型代码为8e,如果我们不知道类型代码按L列出所有类型的代码。
  • 打印我们创建的分区以进行确认。
  • 这里我们可以看到ID为8e LINUX LVM
  • 写入更改并退出 fdisk。

7. 对另外 2 个磁盘 sdcsdd 执行上述步骤以创建新分区。然后重新启动机器,使用fdisk命令验证分区表。

fdisk -l

创建LVM物理卷

8. 现在,是时候使用所有 3 个磁盘创建物理卷了。在这里,我使用“pvs”命令列出了物理磁盘,现在只列出了一个默认的PV

pvs

9.然后创建新的物理磁盘并确认新创建的物理磁盘。

pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1
pvs

创建 LVM 卷组

10. 使用可用的免费 PVPE 大小 32 创建名为 howtoing_add_vg 的卷组。当前卷组中,我们可以看到有一个1 PV的卷组正在使用。

vgs

11. 这将使用 32MB PE 大小和我们在最后步骤中创建的 3 个物理卷创建名为 howtoing_add_vg 的卷组。

vgcreate -s 32M tecmint_add_vg /dev/sdb1 /dev/sdc1 /dev/sdd1

12. 接下来,再次运行 vgs 命令来验证卷组。

vgs

了解 vgs 命令输出:

  • 卷组名称。
  • 此卷组中使用的物理卷。
  • 显示该卷组中的可用空间。
  • 卷组的总大小。
  • 该卷组内的逻辑卷,这里我们还没有创建,所以有0个。
  • SN=卷组包含的快照数量。 (稍后我们可以创建快照)。
  • 卷组的状态为可写、可读、可调整大小、导出、部分和集群,这里是wz–n-,表示 w=可写、z=可调整大小。
  • 该卷组中使用的物理卷 (PV) 的数量。

13. 要显示有关卷组的更多信息,请使用该命令。

vgs -v

14. 要获取有关新创建的卷组的更多信息,请运行以下命令。

vgdisplay tecmint_add_vg

这里是上面截图中显示的每个参数的说明。

  • 卷组名称
  • 使用LVM架构。
  • 它可以处于读写状态,随时可以使用。
  • 该卷组的大小是可以调整的。
  • 未使用物理磁盘且它们处于活动状态。
  • 卷组总大小。
  • 这里的单个 PE 大小为 32。
  • 该卷组中可用的 PE 总数。
  • 目前,我们还没有在这个 VG 中创建任何 LV,所以它是完全免费的。
  • 该卷组的 UUID。

创建LVM逻辑卷

15. 现在,创建 3 个逻辑卷,分别命名为 howtoing_documentshowtoing_managerhowtoing_public。在这里,我们将演示如何使用 PE 大小和 GB 大小创建逻辑卷。

首先,使用以下命令列出当前逻辑卷。

lvs

16.这些逻辑卷位于vg_howtoing卷组中。要查看有多少可用空间可用于创建逻辑卷,请使用“vgs”命令列出卷组和可用物理卷。

vgs

卷组大小将近60GB,并且未使用,因此我们可以在其中创建LV。让我们将卷组划分为相等大小以创建 3 个逻辑卷。这意味着 60GB/3=20GB。每个逻辑卷创建后大小为 20GB。

方法一:使用PE大小创建逻辑卷

首先,让我们使用物理盘区 (PE) 大小创建逻辑卷。我们需要知道分配给该卷组的默认 PE 大小以及创建新逻辑卷的可用 PE 总数。

运行以下命令来获取此信息。

vgdisplay tecmint_add_vg

  • 分配给该 VG 的默认 PE 是 32MB,这里单个 PE 大小将为 32MB。
  • 可用 PE 总数为 1917。

只需使用 bc 命令进行一些计算即可。

bc
1917PE/3 = 639 PE. 
639 PE x 32MB = 20448 --> 20GB

CRTL+D退出bc

现在让我们使用 639 个 PE 创建 3 个逻辑卷。这里-l用于扩展大小,-n用于分配逻辑卷名称。

lvcreate -l 639 -n tecmint_documents tecmint_add_vg
lvcreate -l 639 -n tecmint_manager tecmint_add_vg
lvcreate -l 639 -n tecmint_public tecmint_add_vg

使用lvs命令列出创建的逻辑卷。

lvs

方法2:使用GB大小创建逻辑卷

使用 GB 大小创建逻辑卷时,我们无法获得确切的大小。所以,更好的方法是使用extend来创建。

lvcreate -L 20G -n tecmint_documents tecmint_add_vg
lvcreate -L 20G -n tecmint_manager tecmint_add_vg
lvcreate -L 20G -n tecmint_public tecmint_add_vg
lvcreate -L 20G -n tecmint_public tecmint_add_vg

使用 lvs 命令列出创建的逻辑卷。

lvs

在这里,我们可以看到,在创建第三个 LV 时,我们无法舍入到 20GB,这是因为大小变化很小,但在使用扩展大小创建 LV 时,这个问题将被忽略。

创建文件系统

17.为了使用我们需要格式化的逻辑卷。在这里,我使用 ext4 文件系统创建卷并将它们安装在 /mnt/ 下。

mkfs.ext4 /dev/tecmint_add_vg/tecmint_documents
mkfs.ext4 /dev/tecmint_add_vg/tecmint_public
mkfs.ext4 /dev/tecmint_add_vg/tecmint_manager

18.让我们在/mnt中创建目录并挂载我们创建的文件系统的逻辑卷。

mount /dev/tecmint_add_vg/tecmint_documents /mnt/tecmint_documents/
mount /dev/tecmint_add_vg/tecmint_public /mnt/tecmint_public/
mount /dev/tecmint_add_vg/tecmint_manager /mnt/tecmint_manager/

19.列出并确认使用的挂载点。

 
df -h

永久挂载逻辑卷

20. 现在是临时挂载的,对于永久挂载,我们需要在 fstab 中添加条目,为此让我们使用 mtab 获取挂载条目

cat /etc/mtab

21. 在从 mtab 输入挂载条目内容副本时,我们需要对 fstab 条目进行轻微更改,我们需要将 rw 更改为默认值

vi /etc/fstab

我们的 fstab 条目应类似于以下示例。

/dev/mapper/tecmint_add_vg-tecmint_documents    /mnt/tecmint_documents  ext4    defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_public       /mnt/tecmint_public     ext4    defaults 0 0
/dev/mapper/tecmint_add_vg-tecmint_manager      /mnt/tecmint_manager    ext4    defaults 0 0

22. 最后,在重新启动之前运行命令 mount -a 检查 fstab 条目。

mount -av

在这里我们了解了如何通过物理磁盘到物理卷、物理卷到卷组、卷组到逻辑卷来设置逻辑卷的灵活存储。

在我即将发表的文章中,我将了解如何扩展卷组和逻辑卷、减少逻辑卷、拍摄快照以及从快照还原。在此之前,请随时关注 TecMint,以获取更多此类精彩文章。