网站搜索

在逻辑卷管理 (LVM) 中设置精简配置卷 - 第 IV 部分


逻辑卷管理具有快照和精简配置等强大功能。之前在(第三部分)中我们已经了解了如何对逻辑卷进行快照。在本文中,我们将了解如何在 LVM 中设置精简配置卷。

什么是精简配置?

Thin Provisioning 在 lvm 中用于在精简池内创建虚拟磁盘。假设我的服务器有 15GB 存储容量。我已经有 2 个客户,每个客户都有 5GB 存储空间。您是第三个客户,您要求 5GB 存储空间。那时我们通常提供整个 5GB(厚卷),但您可以使用 5GB 存储中的 2GB,而 3GB 将是免费的,您可以稍后将其填满。

但我们在精简配置中所做的是,我们在一个大卷组内定义一个精简池,并在该精简池内定义精简卷。因此,您写入的任何文件都会被存储,并且您的存储空间将显示为 5GB。但完整的 5GB 不会分配整个磁盘。其他客户也将执行相同的过程。就像我说的,有 2 个客户,而你是我的第三个客户。

那么,让我们假设我为客户端分配了多少 GB 总量?总共15GB已经完成了,如果有人来找我要5GB我可以给吗?答案是“”,在精简配置中,即使我已经分配了 15GB,我也可以为第四个客户端提供 5GB。

警告:从 15GB 开始,如果我们配置超过 15GB,则称为过度配置。

怎么运行的?以及我们如何向新客户提供存储?

我为您提供了 5GB,但您只能使用 2GB,其他 3GB 将免费。在厚配置中我们不能这样做,因为它首先会自己分配整个空间。

在精简配置中,如果我为您定义 5GB,它不会在定义卷时分配整个磁盘空间,它会根据您的数据写入增长到 5GB,希望您明白了!与您一样,其他客户端也不会使用完整卷,因此将有机会向新客户端添加 5GB,这称为过度配置。

但必须监控每一次交易量的增长,否则最终将导致灾难。当过度配置完成时,如果所有 4 个客户端将数据严重写入磁盘,您可能会遇到问题,因为它将填满您的 15GB 并溢出以删除卷。

要求

  1. 在 Linux 中使用 LVM 创建磁盘存储 – 第 1 部分
  2. 如何在 Linux 中扩展/减少 LVM – 第二部分
  3. 如何在 LVM 中创建/恢复逻辑卷快照 - 第三部分
我的服务器设置
  1. 操作系统 – CentOS 6.5,带 LVM 安装
  2. 服务器IP – 192.168.0.200

步骤 1:设置精简池和卷

让我们实际操作一下如何设置精简池和精简卷。首先我们需要一个大尺寸的卷组。在这里,我创建 15GB 的卷组用于演示目的。现在,使用以下命令列出卷组。

vgcreate -s 32M vg_thin /dev/sdb1

接下来,在创建精简池和卷之前检查逻辑卷可用性的大小。

vgs
lvs

我们可以看到文件系统只有默认逻辑卷,并且上面的 lvs 输出中存在交换。

创建精简池

要在卷组 (vg_thin) 中创建 15GB 的精简池,请使用以下命令。

lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
  1. -L – 卷组的大小
  2. –thinpool – 创建一个thinpool
  3. tp_howtoing_pool – 精简池名称
  4. vg_thin – 我们需要创建池的卷组名称

要获得更多详细信息,我们可以使用命令“lvdisplay”。

lvdisplay vg_thin/tp_tecmint_pool

这里我们还没有在此精简池中创建虚拟精简卷。在图像中,我们可以看到分配池数据显示 0.00%

创建精简卷

现在,我们可以借助带有选项 -V(虚拟)的“lvcreate”命令在精简池内定义精简卷。

lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool

我在 vg_thin 卷组的 tp_howtoing_pool 内创建了一个名为 thin_vol_client1 的精简虚拟卷。现在,使用以下命令列出逻辑卷。

lvs 

刚才我们已经创建了上面的精简卷,所以没有数据显示,即0.00%M

好吧,让我为其他 2 个客户端再创建 2 个精简卷。在这里,您现在可以看到在池 (tp_howtoing_pool) 下创建了 3 个精简卷。所以,从这时起,我们就知道我已经使用了所有 15GB 池。

创建文件系统

现在,创建挂载点并挂载这三个精简卷,并使用以下命令在其中复制一些文件。

mkdir -p /mnt/client1 /mnt/client2 /mnt/client3

列出创建的目录。

ls -l /mnt/

使用“mkfs”命令为这些创建的精简卷创建文件系统。

mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3

使用“mount”命令将所有三个客户端卷安装到创建的安装点。

mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/

使用“df”命令列出挂载点。

df -h

在这里,我们可以看到 3 个客户端卷均已安装,因此每个客户端卷中仅使用 3% 的数据。因此,让我们向桌面上的所有 3 个挂载点添加更多文件以填充一些空间。

现在列出挂载点并查看每个精简卷中使用的空间,并列出精简池以查看池中使用的大小。

df -h
lvdisplay vg_thin/tp_tecmint_pool

上面的命令显示了三个安装品脱及其大小的百分比。

13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3

在查看精简池时,我们可以看到只有 30% 的数据被完全写入。这是上述三个客户端虚拟卷的总和。

过度配置

现在第四个客户来找我并要求5GB的存储空间。我可以给吗?因为我已经给了 3 个客户 15GB Pool。是否可以再给另一个客户 5GB?是的,可以给予。这是我们使用过度配置的时候,这意味着提供的空间比我拥有的更多。

让我为第四个客户端创建 5GB 并验证大小。

lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
lvs

我的池中只有 15GB 大小,但我在精简池中创建了 4 个卷,最大容量为 20GB。如果四个客户端都开始向卷中写入数据以填补速度,那么那时我们将面临严重的情况,否则就没有问题。

现在我已经在thin_vol_client4中创建了文件系统,然后安装在/mnt/client4下并复制了其中的一些文件。

lvs

从上图中我们可以看到,新创建的客户端 4 中的总使用大小达到 89.34%,精简池的使用大小为 59.19%。如果所有这些用户都没有向卷写入错误,那么它将不会出现溢出、丢失的情况。为了避免溢出,我们需要扩展精简池的大小。

重要:精简池只是一个逻辑卷,因此如果我们需要扩展精简池的大小,我们可以使用与我们使用过的相同命令对于逻辑卷扩展,但我们无法减少精简池的大小。

lvextend

在这里我们可以看到如何扩展逻辑精简池(tp_howtoing_pool)。

lvextend -L +15G /dev/vg_thin/tp_tecmint_pool

接下来,列出精简池大小。

lvs

早些时候,我们的 tp_howtoing_pool 大小为 15GB 和 4 个精简卷,超出了配置 20GB。现在它已扩展到 30GB,因此我们的超额配置已标准化,并且精简卷不会溢出、丢失。通过这种方式,您可以向池中添加更多精简卷。

在这里,我们了解了如何使用大容量卷组创建精简池,以及如何使用过度配置和扩展池在精简池内创建精简卷。在下一篇文章中,我们将了解如何设置 lvm Striping。