|
1 |
lvcreate -L 10G -T vg_bricks/thinpool |
命令解析
这是一个使用 LVM 创建精简池 的命令。
lvcreate: 逻辑卷管理工具中用于创建逻辑卷的命令。-L 10G: 指定逻辑卷的大小。-L是--size的缩写,表示分配固定大小的空间。10G表示容量为 10 GiB。
-T: 这是一个关键选项,它告诉lvcreate命令要创建的是一个精简池 或一个精简卷。- 当
-T后面跟的是一个卷组/池名 的组合时(如本例中的vg_bricks/thinpool),它表示创建一个精简池。
- 当
vg_bricks/thinpool: 指定了要创建的精简池的位置和名称。vg_bricks: 是已经存在的卷组 的名称。thinpool: 是即将在这个卷组中创建的精简池 的名称。中间的/是分隔符。
命令执行结果
行这条命令后,系统会:
- 从名为
vg_bricks的卷组中,划出 10 GiB 的物理空间。 - 用这 10 GiB 的空间创建一个名为
thinpool的精简池。
这个 thinpool 本身是一个特殊的逻辑卷,它不直接存放文件系统数据,而是作为一个共享的资源池,为后续创建的精简卷提供存储空间。
通俗比喻
你可以把这个过程想象成:
- 卷组: 一个巨大的空白硬盘空间(比如 100G)。
- 精简池: 你从这 100G 中专门划出 10G,设立了一个“虚拟资金池”。
- 后续的精简卷: 你可以基于这个“资金池”,创建多个总大小远超 10G 的“虚拟账户”(比如创建 3 个 10G 的卷,总共 30G)。这些“虚拟账户”承诺了最大可用空间,但实际只占用它们真正写入数据的那部分物理空间。
创建完精简池后,你通常会使用它来创建精简卷,命令类似于:
|
1 2 3 4 5 |
# 从 thinpool 中创建一个名为 thin_vol1,虚拟大小为 5G 的精简卷 lvcreate -V 5G -T vg_bricks/thinpool -n thin_vol1 # 从 thinpool 中创建一个名为 thin_vol2,虚拟大小为 8G 的精简卷 lvcreate -V 8G -T vg_bricks/thinpool -n thin_vol2 |
注意:-V 用于指定精简卷的虚拟大小,这个大小可以超过物理池(thinpool)的实际大小(10G)。这就是** thin provisioning 的核心优势——超额配置**。
精简池扩容
当精简池中的空闲空间即将耗尽时,你需要对其进行扩容,以防止精简卷写入失败。扩容主要有两种方法:
方法一:扩大精简池的物理大小
这是最直接的方法,即从所属的卷组中分配更多的物理空间给精简池。
|
1 |
lvextend -L +<新增大小> <VG名称>/<精简池名称> |
举例:
假设你的 vg_bricks 卷组还有剩余空间,现在想给 thinpool 增加 5GB 的物理空间。
|
1 2 3 4 5 |
# 增加 5GB sudo lvextend -L +5G vg_bricks/thinpool # 或者,扩展到总容量为 20GB(无论原来多大) sudo lvextend -L 20G vg_bricks/thinpool |
执行后:
- 精简池的总物理容量从 10GB 变成了 15GB(或 20GB)。
- 之前创建的所有精简卷不受任何影响,可以立即使用新加入的空间,无需对它们进行任何操作。
方法二:先扩充分配给 LVM 的物理磁盘空间
如果卷组 vg_bricks 本身也没有空闲空间了,你需要先扩容底层物理卷,然后再扩容精简池。这是一个更底层的操作流程。
步骤 1:扩展物理磁盘
- 这步在物理机或虚拟化层面完成。例如,在 VMware 中为虚拟机增加硬盘大小,或者在云平台上扩容云硬盘。
步骤 2:扩展物理卷
- 假设你的物理卷是
/dev/sda1,扩展完磁盘后,需要让操作系统识别新的大小。
|
1 |
sudo pvresize /dev/sda1 |
步骤 3:查看卷组空闲空间
- 现在卷组
vg_bricks应该有了新的空闲空间。
|
1 |
sudo vgs |
步骤 4:扩展精简池
- 现在你可以使用 方法一 中的
lvextend命令来扩展精简池了。
|
1 |
sudo lvextend -L +10G vg_bricks/thinpool |
重要概念区分:精简池扩容 vs. 精简卷扩容
这一点非常重要,初学者很容易混淆:
| 操作对象 | 命令示例 | 目的与效果 |
|---|---|---|
| 扩容精简池 | lvextend -L +5G vg_bricks/thinpool | 增加“资金池”的真实资金。为所有精简卷提供更多的实际物理存储空间。这是为了防止空间耗尽。 |
| 扩容精简卷 | lvextend -L +3G vg_bricks/thin_vol1 | 增加“虚拟账户”的信用额度。只是让一个特定的卷(如 thin_vol1)的最大可用空间变大了,但并没有立即消耗池里的物理空间。 |
简单来说:
- 当池子快满了(物理空间不足),你需要扩容精简池。
- 当某个卷的空间不够用了(比如你的数据库文件快把分配给它的 5G 用完了),你需要扩容精简卷。
- 本文固定链接: https://www.yoyoask.com/?p=13910
- 转载请注明: shooter 于 SHOOTER 发表