【k8s学习之CSI】理解 LVM 存储概念和相关操作

0 | 理解 vg 相关概念



Linux LVM(逻辑卷管理) 中,以下是 partition(分区)、PV(物理卷)、VG(卷组)、LV(逻辑卷)、PE(物理块) 之间的关系:


LVM 结构层次

复制代码
+-------------------------------+
|  文件系统(ext4 / xfs)        |  ⬅ 用户存储数据
+-------------------------------+
|  逻辑卷(LV,Logical Volume)  |  ⬅ 提供类似 /dev/sda1 的设备
+-------------------------------+
|  卷组(VG,Volume Group)      |  ⬅ 由多个 PV 组成的存储池
+-------------------------------+
|  物理卷(PV,Physical Volume) |  ⬅ 磁盘或分区
+-------------------------------+
|  磁盘分区(Partition)         |  ⬅ 硬盘 /dev/sdX
+-------------------------------+
|  物理磁盘(HDD/SSD/RAID)     |
+-------------------------------+

1. Partition(分区)

作用:

  • 硬盘可以被分为多个 分区,每个分区可以用作不同用途(如 /boot、swap、LVM 等)。
  • 分区工具:fdisk / parted / gparted

示例:

bash 复制代码
# 8e 是 Linux 系统中表示 LVM(Logical Volume Manager)物理卷 的分区类型代码。
# 设置这个类型可以让系统识别这是 LVM 用途的分区。
fdisk /dev/sdb           # 创建分区(比如 /dev/sdb1),设置类型为 8e
partprobe /dev/sdb       # 让内核刷新分区表
pvcreate /dev/sdb1       # 创建物理卷

创建 LVM 兼容的分区时,建议使用 分区类型 8e(Linux LVM)


2. PV(物理卷,Physical Volume)

作用:

  • LVM 的最底层单位 ,可以是整个硬盘 /dev/sdb,也可以是一个分区 /dev/sdb1
  • 相当于 LVM 的"原材料",多个 PV 组成一个 VG(卷组)。

创建 PV:

bash 复制代码
sudo pvcreate /dev/sdb1

查看 PV 信息:

bash 复制代码
sudo pvdisplay

3. VG(卷组,Volume Group)

作用:

  • 多个 PV 组成一个 VG,相当于一个存储池,可以动态扩展和管理存储。
  • VG 里可以创建多个 LV(逻辑卷)

创建 VG:

bash 复制代码
sudo vgcreate my_vg /dev/sdb1 /dev/sdc1

查看 VG 信息:

bash 复制代码
sudo vgdisplay

4. PE(物理块,Physical Extent)

作用:

  • LVM 以 PE(物理块)为单位分配空间(默认 4MB)。
  • VG 内的所有 PE 大小相同,LV 由 PE 组成。

查看 PE 信息:

bash 复制代码
sudo vgdisplay my_vg | grep "PE"

5. LV(逻辑卷,Logical Volume)

作用:

  • LV 相当于"动态分区",可以自由创建、扩展、缩小(不像传统分区那样固定大小)。
  • 在 VG 里划分 PE 创建 LV,可以格式化为 ext4/xfs 并挂载使用。

创建 LV:

bash 复制代码
sudo lvcreate -L 10G -n my_lv my_vg

格式化:

bash 复制代码
sudo mkfs.ext4 /dev/my_vg/my_lv

挂载:

bash 复制代码
sudo mount /dev/my_vg/my_lv /mnt/data

总结

概念 作用 命令
Partition(分区) 硬盘分区 fdisk /dev/sdb
PV(物理卷) LVM 的最底层单元 pvcreate /dev/sdb1
VG(卷组) 由多个 PV 组成的存储池 vgcreate my_vg /dev/sdb1
PE(物理块) LVM 分配存储的基本单位 `vgdisplay my_vg
LV(逻辑卷) 在 VG 里划分的存储空间 lvcreate -L 10G -n my_lv my_vg

实战示例

如果你有 两块磁盘 /dev/sdb/dev/sdc ,想要创建一个 100GB 的逻辑卷

bash 复制代码
# 1. 创建 LVM 分区
sudo fdisk /dev/sdb   # 创建 LVM 分区(类型 8e)
sudo fdisk /dev/sdc   # 创建 LVM 分区(类型 8e)

# 2. 创建物理卷 PV
sudo pvcreate /dev/sdb1 /dev/sdc1

# 3. 创建卷组 VG
sudo vgcreate my_vg /dev/sdb1 /dev/sdc1

# 4. 创建逻辑卷 LV
sudo lvcreate -L 100G -n my_lv my_vg

# 5. 格式化
sudo mkfs.ext4 /dev/my_vg/my_lv

# 6. 挂载
sudo mount /dev/my_vg/my_lv /mnt/data

开机自动挂载:

bash 复制代码
echo "/dev/my_vg/my_lv /mnt/data ext4 defaults 0 2" | sudo tee -a /etc/fstab

LVM 的优势

可以动态调整大小 (不像传统分区那样固定)。

多个磁盘可以合并成一个大存储池(VG)

支持快照(Snapshot) ,适合备份恢复。

支持条带化(striping),提高性能

LVM 适合 服务器、大型存储系统、RAID 方案等,如果你有具体需求,可以告诉我,我帮你设计最佳方案!🚀

1 | 整体流程梳理

好的,下面是一个完整的命令列表 ,涵盖了分区、创建 PV、PE、VG、LV,及扩容 VG 和 LV的完整操作流程。


🛠️ 完整命令列表:从分区、PV、VG、LV 到扩容

1. 分区操作(使用 fdisk
bash 复制代码
# 启动 fdisk 创建分区
sudo fdisk /dev/sdb

# 在 fdisk 内部,按以下步骤操作
n   # 创建新分区
p   # 选择主分区(primary)
1   # 分区号(通常是 1)
[Enter]  # 使用默认起始扇区
[Enter]  # 使用默认结束扇区(即分区使用整盘空间)
t   # 更改分区类型
8e  # 设置为 LVM 类型
w   # 保存并退出

2. 更新内核分区表
bash 复制代码
sudo partprobe /dev/sdb

3. 创建物理卷(PV)
bash 复制代码
sudo pvcreate /dev/sdb1

4. 创建卷组(VG)
bash 复制代码
# 创建一个新的卷组(假设名称为 vg0)
sudo vgcreate vg0 /dev/sdb1

5. 创建逻辑卷(LV)
bash 复制代码
# 创建一个 10G 的逻辑卷(假设名称为 my_lv)
sudo lvcreate -L 10G -n my_lv vg0
  • 或者,如果想使用卷组中所有空闲空间:
bash 复制代码
sudo lvcreate -l 100%FREE -n my_lv vg0

6. 格式化逻辑卷
bash 复制代码
# 使用 ext4 格式化逻辑卷
sudo mkfs.ext4 /dev/vg0/my_lv
  • 或者,如果使用 xfs 文件系统:
bash 复制代码
sudo mkfs.xfs /dev/vg0/my_lv

7. 挂载逻辑卷
bash 复制代码
# 创建挂载点
sudo mkdir /mnt/my_lv

# 挂载逻辑卷
sudo mount /dev/vg0/my_lv /mnt/my_lv

🧑‍💻 扩容操作

8. 扩展卷组(VG)

如果现有 VG 空间不足,可以通过 vgextend 向卷组添加更多的物理卷。

bash 复制代码
# 创建新物理卷
sudo pvcreate /dev/sdc1

# 将新物理卷添加到现有卷组 vg0
sudo vgextend vg0 /dev/sdc1

9. 扩容逻辑卷(LV)

如果需要将新增加的空间分配给某个逻辑卷,可以使用 lvextend

bash 复制代码
# 将逻辑卷 my_lv 扩展到 20G
sudo lvextend -L 20G /dev/vg0/my_lv

# 或者将剩余的所有空闲空间分配给 my_lv
sudo lvextend -l +100%FREE /dev/vg0/my_lv

10. 扩展文件系统

扩展了逻辑卷之后,还需要扩展文件系统,以便能够使用新增的空间。

  • 对于 ext4 文件系统:
bash 复制代码
sudo resize2fs /dev/vg0/my_lv
  • 对于 xfs 文件系统:
bash 复制代码
sudo xfs_growfs /mnt/my_lv

📊 验证操作

  • 查看物理卷状态:
bash 复制代码
sudo pvdisplay
  • 查看卷组状态:
bash 复制代码
sudo vgdisplay
  • 查看逻辑卷状态:
bash 复制代码
sudo lvdisplay
  • 查看挂载的文件系统空间:
bash 复制代码
df -h

⚠️ 注意事项

  • VG 扩容 :在添加新的物理卷后,通过 vgextend 将其添加到现有的卷组。确保新的磁盘或分区已正确初始化为 LVM 类型。
  • 扩容 LV :使用 lvextend 来将额外的空间分配给逻辑卷。记得扩展文件系统来利用这些新增的空间。
  • 文件系统扩展 :不同的文件系统需要不同的扩展命令。确保你选择了合适的命令(resize2fs 用于 ext4xfs_growfs 用于 xfs)。

总结

  1. 分区操作 :使用 fdisk 创建新分区并设置为 LVM 类型 8e
  2. 创建 PV :使用 pvcreate 创建物理卷。
  3. 创建 VG :使用 vgcreate 创建卷组。
  4. 创建 LV :使用 lvcreate 创建逻辑卷。
  5. 扩容 VG :使用 vgextend 向卷组添加物理卷。
  6. 扩容 LV :使用 lvextend 扩展逻辑卷。
  7. 扩展文件系统 :使用 resize2fsxfs_growfs 扩展文件系统。

这些命令可以根据你的需求定制化,比如自动化脚本或批量操作。如果需要进一步帮助,随时告诉我!

2 | lv 扩容

在 Linux 系统中使用 LVM(Logical Volume Manager)扩容逻辑卷(lv)一般分为以下几个步骤:


🌟 举个例子:

我们以逻辑卷 /dev/vg0/my_lv 扩容 10G 为例。


1. 查看当前磁盘和逻辑卷信息

bash 复制代码
# 查看物理卷(PV)
pvs

# 查看卷组(VG)
vgs

# 查看逻辑卷(LV)
lvs
lvdisplay /dev/vg0/my_lv

2. (可选)为 VG 添加新的物理卷

如果卷组空间不足,可以添加新的磁盘并初始化为 PV,然后加入 VG:

bash 复制代码
# 把新磁盘 /dev/sdb 初始化为 PV
pvcreate /dev/sdb

# 加入已有的卷组 vg0
vgextend vg0 /dev/sdb

3. 扩容逻辑卷

比如扩容 10G:

bash 复制代码
lvextend -L +10G /dev/vg0/my_lv

或者扩容到 VG 所有剩余空间:

bash 复制代码
lvextend -l +100%FREE /dev/vg0/my_lv

4. 扩容文件系统

这个步骤根据你使用的文件系统类型不同而略有差别:

如果是 ext4:
bash 复制代码
resize2fs /dev/vg0/my_lv
如果是 xfs:
bash 复制代码
xfs_growfs /mount/point

⚠️ 注意:xfs 的扩容需要你指定挂载点,而不是设备文件!


5. 验证

bash 复制代码
df -h

需要我帮你写一个脚本来自动扩容吗?或者你现在的设备名、VG、LV 是什么样的,我可以帮你具体看下。

3 | 理解扩容参数

好问题!

lvextend 命令的 -L-l扩容逻辑卷大小的两种不同方式,区别如下:


-L(大写 L)------以字节为单位的绝对或相对容量

  • 单位支持:K, M, G, T
  • 用于指定 具体容量大小 或者 增加多少容量
示例:
bash 复制代码
# 扩展到 20G(绝对值)
lvextend -L 20G /dev/vg0/my_lv

# 在当前基础上增加 10G(相对值)
lvextend -L +10G /dev/vg0/my_lv

-l(小写 L)------以扩展块(PE,Physical Extents)为单位

  • 每个卷组(VG)由若干个 PE 构成(默认一个 PE 是 4MB)
  • 更偏向底层,适用于需要更精细控制或自动扩满整个卷组空间
示例:
bash 复制代码
# 扩展到 1000 个 PE 的大小(绝对)
lvextend -l 1000 /dev/vg0/my_lv

# 增加 500 个 PE(相对)
lvextend -l +500 /dev/vg0/my_lv

# 使用所有可用空间(常见写法)
lvextend -l +100%FREE /dev/vg0/my_lv

🔍 那我该用哪一个?

用法场景 推荐参数
想要加 10G 空间 -L +10G
想要用光 VG 的剩余空间 -l +100%FREE
做自动化脚本或精确控制 -l(PE 级别)

如果你输入 vgdisplay 可以看到 PE 大小和 VG 中总共多少 PE 可用。


需要我帮你把你当前的 VG/LV 状态分析一下选哪个更合适吗?你可以贴一下 vgslvs 输出。

4 | PE 大小的设置

是的,PE(Physical Extent)大小是可以设置的 ,但只能在 创建卷组(VG)的时候指定 ,一旦 VG 创建完成,PE 大小就不能更改了。


🔧 设置 PE 大小的方法

在创建 VG 时使用 vgcreate 命令加 -s 选项:

bash 复制代码
vgcreate -s 16M vg0 /dev/sdX

这个命令会创建一个名为 vg0 的卷组,PE 大小设置为 16MB


📌 支持的单位

常见单位:k, m, g(不区分大小写)

  • 一般默认是 4MB,这对大多数应用是足够的
  • 最大支持 16GB

🧠 为什么关心 PE 大小?

  1. 空间粒度:PE 越小,空间利用更精细;PE 越大,适合大容量分配但有可能浪费小空间。
  2. LV 大小限制:逻辑卷大小 = PE大小 × PE数量。如果你计划使用非常大的磁盘,就可能要调大 PE。
  3. 性能无明显区别:这主要是空间管理单位,不直接影响性能。

🔍 如何查看已有 VG 的 PE 大小?

bash 复制代码
vgdisplay vg0

输出中你会看到类似:

复制代码
PE Size               4.00 MiB

❗ 一旦 VG 创建好了,PE 大小就固定了,不能更改

如果你非要修改,只能:

  1. 备份数据
  2. 删除 VG
  3. 重新创建 VG(设置新的 PE 大小)
  4. 恢复数据

想看看你当前的 VG 设置吗?可以发一下 vgdisplay 输出,我帮你解释下。

5 | 创建分区注意事项

是的,通常你需要先分区,才能创建 PV(Physical Volume) ,不过其实 并不是强制的 ------你也可以直接对整个磁盘创建 PV,而不分区。


✅ 两种方式对比如下:

方式 是否分区 设备路径 是否推荐
推荐做法 ✅ 是 /dev/sdb1 ✅ 推荐(兼容性好)
直接用整块磁盘做 PV ❌ 否 /dev/sdb ✅ 可以,但要小心

🔧 示例 1:标准流程(先分区)

bash 复制代码
fdisk /dev/sdb           # 创建分区(比如 /dev/sdb1),设置类型为 8e
partprobe /dev/sdb       # 让内核刷新分区表
pvcreate /dev/sdb1       # 创建物理卷

⚡ 示例 2:直接用整盘(不分区)

bash 复制代码
pvcreate /dev/sdb        # 直接对整块磁盘操作

❗ 整盘创建 PV 的注意事项:

  1. 不需要分区表 ,也不会有 /dev/sdb1 这种分区设备。
  2. 某些旧版本的操作系统、安装器或工具(特别是系统恢复工具)可能不太支持裸盘做 PV
  3. 如果将来这块盘要做别的用途,比如多分区使用、挂载普通文件系统等,直接用裸盘就不太方便了

🧠 总结建议:

  • 💡 生产环境 推荐用标准方式:先分区 ➜ pvcreate /dev/sdXN
  • 🧪 测试环境 / 临时用途 可以直接用整盘 ➜ pvcreate /dev/sdX

你是打算长期用这块盘作为 LVM 存储吗?我可以根据你的使用场景建议最合适的方式。

6 | 理解 fdisk 创建分区设置为 8e 类型

理解fdisk

fdisk 作用

fdiskLinux 的磁盘分区管理工具,用于查看、创建、删除和修改磁盘分区。

它主要用于 MBR(主引导记录)分区表 ,而对于 GPT(GUID 分区表) ,推荐使用 partedgdisk


fdisk 主要功能

功能 命令
查看磁盘分区 sudo fdisk -l
进入分区管理 sudo fdisk /dev/sdX
创建新分区 n
删除分区 d
修改分区类型 t
查看分区表 p
写入分区表并退出 w
退出不保存 q

fdisk 实战:创建 LVM 分区

假设你要在 /dev/sdb/dev/sdc 上创建 LVM 分区,步骤如下:

1. 进入 fdisk 进行分区

bash 复制代码
sudo fdisk /dev/sdb

按以下步骤操作:

  1. 输入 n新建分区
  2. 选择 p主分区
  3. 选择 分区号(默认即可)
  4. 选择 起始扇区(默认即可)
  5. 选择 结束扇区(默认使用整个磁盘)
  6. 输入 t修改分区类型
  7. 选择 8eLinux LVM
  8. 输入 w写入并退出

2. 再次执行 fdisk 处理 /dev/sdc

bash 复制代码
sudo fdisk /dev/sdc

重复 1-8 步骤


3. 查看分区是否创建成功

bash 复制代码
sudo fdisk -l /dev/sdb /dev/sdc

你应该会看到类似:

复制代码
Device     Boot Start       End   Sectors   Size Id Type
/dev/sdb1        2048 1953525167 1953523120 931.5G 8e Linux LVM
/dev/sdc1        2048 1953525167 1953523120 931.5G 8e Linux LVM

4. 创建 LVM 物理卷

bash 复制代码
sudo pvcreate /dev/sdb1 /dev/sdc1

之后可以继续创建 VG(卷组)LV(逻辑卷),管理 LVM 存储。


总结

🔹 fdisk 是一个 磁盘分区管理工具 ,适用于 MBR 磁盘。

🔹 fdisk 可用于 创建 LVM 分区(类型 8e)

🔹 fdisk -l 可用于 查看磁盘分区信息

🔹 GPT 分区建议使用 partedgdisk

你现在是要在 新磁盘上配置 LVM 吗?如果有具体需求,可以告诉我,我帮你设计方案! 🚀

7 | 线性模式或交错模式写入

在 LVM 中,线性模式(Linear Volume)交错模式(Striped Volume) 是两种不同的逻辑卷(LV)创建方式,它们的创建方式和数据布局策略不同。下面是对这两种模式的详细解释,以及如何在这两种模式下创建逻辑卷。


1. 线性模式(Linear Volume)

线性模式是 LVM 的默认模式。在线性模式下,LVM 会将多个物理卷(PV)上的空间按顺序组合在一起,形成一个连续的逻辑卷。换句话说,数据会按照物理卷的顺序存储,不进行任何交错操作。

特点:
  • 数据在物理卷之间按顺序分布。
  • 不涉及并行读写,因此没有性能的提升。
  • 适合于空间的简单扩展,尤其是当需要跨多个磁盘使用空间时。
创建线性逻辑卷(默认方式):

如果你没有指定 --type striped 参数,LVM 默认会创建一个线性逻辑卷。

命令示例

bash 复制代码
# 手动指定要使用的物理卷(磁盘分区)
sudo lvcreate -L 20G -n my_linear_lv vg0 /dev/sdb1 /dev/sdc1
# 可以写为如下模式,直接采用 vg0 的存储空间,分配的物理卷(磁盘分区)由系统指定
sudo lvcreate -L 20G -n my_linear_lv vg0
  • -L 20G:指定逻辑卷的大小为 20GB。
  • -n my_linear_lv :指定逻辑卷的名称为 my_linear_lv
  • vg0:指定逻辑卷所在的卷组(VG)。
  • /dev/sdb1 /dev/sdc1:指定多个物理卷(PV),LVM 会按顺序在这些物理卷中分配空间。
数据布局:
  • 数据会按顺序写入 /dev/sdb1,直到其空间用尽,然后再写入 /dev/sdc1,以此类推。

2. 交错模式(Striped Volume)

交错模式是 LVM 提供的另一种逻辑卷类型。在交错模式下,LVM 会将数据分割成多个条带(stripes),并将这些条带分布到不同的物理卷上。这样,读写操作会并行进行,通常会提高磁盘 I/O 性能,尤其是在多个物理卷之间进行并行读写时。

特点:
  • 数据被划分为多个条带(stripes),分布在不同的物理卷上。
  • 适用于需要提高性能的场景,尤其是在多个磁盘之间进行并行读写时。
  • 写入性能得到提升,但如果某个磁盘发生故障,可能会导致数据丢失。
创建交错逻辑卷:

要创建交错模式的逻辑卷,需要在 lvcreate 命令中明确指定 --type striped 参数。

命令示例

bash 复制代码
# 手动指定要使用的物理卷(磁盘分区)
sudo lvcreate --type striped -L 20G -n my_striped_lv vg0 /dev/sdb1 /dev/sdc1
# 可以写为如下模式,直接采用 vg0 的存储空间,分配的物理卷(磁盘分区)由系统指定
sudo lvcreate --type striped -L 20G -n my_striped_lv vg0
  • --type striped:指定创建交错模式的逻辑卷。
  • -L 20G:指定逻辑卷的大小为 20GB。
  • -n my_striped_lv :指定逻辑卷的名称为 my_striped_lv
  • vg0:指定逻辑卷所在的卷组(VG)。
  • /dev/sdb1 /dev/sdc1:指定多个物理卷(PV)。
数据布局:
  • 在交错模式下,LVM 会将数据划分为多个条带(stripes),并将它们交替分布到 /dev/sdb1/dev/sdc1 上。例如:
    • 数据的第一个条带会写入 /dev/sdb1,第二个条带写入 /dev/sdc1,第三个条带写入 /dev/sdb1,以此类推。
  • 这种方式可以显著提高磁盘的并行读写性能。

总结

模式 描述 性能优势 创建命令
线性模式 将物理卷按顺序组合在一起,数据按顺序写入 不涉及并行读写,性能较低 sudo lvcreate -L 20G -n my_linear_lv vg0 /dev/sdb1 /dev/sdc1
交错模式 数据被划分为条带并分布到多个物理卷上 并行读写,提高磁盘 I/O 性能 sudo lvcreate --type striped -L 20G -n my_striped_lv vg0 /dev/sdb1 /dev/sdc1

关键点:

  • 线性模式:数据按物理卷的顺序存储,适合于简单的空间扩展。
  • 交错模式:数据被分为条带并分布到多个物理卷,适合需要提高磁盘 I/O 性能的场景,但也伴随更高的故障风险。

根据需求的不同,你可以选择使用线性模式或交错模式来创建逻辑卷。

8 | lvcreate 参数配置

LVM 创建逻辑卷(LV)时的物理卷指定方法总结

在使用 LVM(Logical Volume Manager)时,创建逻辑卷(LV)时可以选择是否指定物理卷(PV)。下面是两种方式的总结以及相关的注意事项。


1. 不指定物理卷参数

在不指定物理卷参数时,LVM 会自动从卷组(VG)中的所有可用物理卷中选择空间来创建逻辑卷。通常,这种方式非常简单,适用于卷组中有足够空间的情况。

命令示例:
bash 复制代码
sudo lvcreate -L 20G -n my_lv vg0
  • -L 20G:指定逻辑卷的大小为 20GB。
  • -n my_lv :指定逻辑卷的名称为 my_lv
  • vg0:指定逻辑卷所在的卷组(VG)。LVM 会从该卷组中的所有物理卷中选择空间。

注意事项

  • 卷组中的空间必须足够 :如果卷组 vg0 中没有足够的空间来创建 20GB 的逻辑卷,命令将失败。
  • 自动选择物理卷:LVM 会自动选择卷组中的所有物理卷来分配空间,无需手动指定。

2. 指定物理卷参数

在创建逻辑卷时,你也可以明确指定物理卷,这意味着 LVM 将仅从你指定的物理卷中选择空间来创建逻辑卷。你可以使用这种方式控制数据存储的位置。

命令示例:
bash 复制代码
sudo lvcreate -L 20G -n my_lv vg0 /dev/sdb1 /dev/sdc1
  • -L 20G:指定逻辑卷的大小为 20GB。
  • -n my_lv :指定逻辑卷的名称为 my_lv
  • vg0:指定逻辑卷所在的卷组(VG)。
  • /dev/sdb1/dev/sdc1:指定要用于创建逻辑卷的物理卷。LVM 会从这些物理卷中选择空间来创建逻辑卷。

注意事项

  • 物理卷需要提前初始化为 PV :在你使用物理卷(如 /dev/sdb1/dev/sdc1)之前,必须通过 pvcreate 命令将它们初始化为物理卷。

    bash 复制代码
    sudo pvcreate /dev/sdb1
    sudo pvcreate /dev/sdc1
  • 物理卷需要加入到卷组(VG)中 :物理卷必须先被添加到卷组中,才能用于创建逻辑卷。可以使用 vgextend 命令将物理卷加入现有的卷组。

    bash 复制代码
    sudo vgextend vg0 /dev/sdb1
    sudo vgextend vg0 /dev/sdc1
  • 空间分配:如果指定了多个物理卷,LVM 会在这些物理卷中分配空间,按照一定的策略(如线性或交错模式)将空间划分到逻辑卷中。


3. 创建逻辑卷时的步骤总结

无论是否指定物理卷,在创建逻辑卷时,通常需要遵循以下步骤:

不指定物理卷:
  1. 确保卷组(VG)中有足够的可用空间。
  2. 使用 lvcreate 创建逻辑卷,LVM 会自动从卷组中选择物理卷进行空间分配。
指定物理卷:
  1. 初始化物理卷 :使用 pvcreate 命令将硬盘或分区初始化为物理卷(PV)。

    bash 复制代码
    sudo pvcreate /dev/sdb1
    sudo pvcreate /dev/sdc1
  2. 将物理卷加入卷组 :使用 vgextend 命令将物理卷添加到卷组(VG)中。

    bash 复制代码
    sudo vgextend vg0 /dev/sdb1
    sudo vgextend vg0 /dev/sdc1
  3. 创建逻辑卷 :使用 lvcreate 命令创建逻辑卷,并指定物理卷。

    bash 复制代码
    sudo lvcreate -L 20G -n my_lv vg0 /dev/sdb1 /dev/sdc1

4. 常见问题与注意事项

  • 没有足够的空间 :在不指定物理卷时,如果卷组中的空间不足,lvcreate 命令会失败。指定物理卷时,需要确保这些物理卷有足够的空间。
  • 物理卷的初始化和添加:如果指定的物理卷没有被初始化为 PV 或没有加入到卷组中,LVM 会报错,无法创建逻辑卷。
  • 空间分配策略:当指定多个物理卷时,LVM 会根据逻辑卷的类型(线性或交错)分配空间。交错模式会提高性能,但需要小心数据丢失的风险。

总结

  • 不指定物理卷:LVM 会自动从卷组中的所有物理卷中选择空间,适用于卷组中空间充足的情况。
  • 指定物理卷:你可以控制逻辑卷的存储位置,前提是物理卷已经初始化为 PV,并加入到卷组中。

通过了解这些方法和注意事项,你可以灵活地在 LVM 中创建逻辑卷,并根据需求选择是否指定物理卷。

相关推荐
GISer_Jing6 分钟前
GitHub Actions 完整 Token/Secret 配置详解(Vercel + Docker 2026最新版)
docker·容器·github
我是Superman丶7 分钟前
Docker 镜像加速
运维·docker·容器
星空语10 分钟前
音频Kernel+HAL层学习规划
学习·音视频
Lw老王要学习15 分钟前
Windows 11 安装配置 Docker Desktop 并部署 sqlbot 完整指南
windows·docker·容器·agent·sqlbot
成为你的宁宁23 分钟前
【K8s Service 基础知识、五大类型应用机制及Endpoint 深度解析】
云原生·容器·kubernetes
老卢聊运维23 分钟前
K8s 资源一直 Terminating?kubectl 强制删除完整实操手册
云原生·容器·kubernetes
眷蓝天24 分钟前
Kubernetes Ingress 资源对象
云原生·容器·kubernetes
南境十里·墨染春水25 分钟前
linux学习进展 mysql视图详解
linux·学习·mysql
python零基础入门小白35 分钟前
驾驭智能体风暴:企业技术管理范式重构与落地实战指南
人工智能·学习·大模型·agent·产品经理·ai大模型·大模型学习
Nice_Fold36 分钟前
Kubernetes Ingress 七层负载均衡与Nginx实现
nginx·kubernetes·负载均衡