【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 中创建逻辑卷,并根据需求选择是否指定物理卷。

相关推荐
NorthCastle22 分钟前
Docker 镜像 的常用命令介绍
运维·docker·容器·docker 镜像
在河之洲木水24 分钟前
CFS 调度器两种调度类型普通调度 和 组调度
云原生·容器·kubernetes
dessler31 分钟前
Kubernetes(k8s)-网络插件(Flannel)
linux·运维·kubernetes
IT猿手34 分钟前
动态多目标优化:基于可学习预测的动态多目标进化算法(DIP-DMOEA)求解CEC2018(DF1-DF14),提供MATLAB代码
学习·算法·matlab·动态多目标优化·动态多目标进化算法
被子你放开我42 分钟前
Docker 安装CRMEB陀螺匠教程
运维·docker·容器
卜及中1 小时前
【Docker基础】深入解析 Docker 存储卷:管理、绑定与实战应用
运维·docker·容器
Y1anoohh1 小时前
驱动学习专栏--写在前面
学习
小学生搞程序1 小时前
学习Python的优势体现在哪些方面?
开发语言·python·学习
李匠20242 小时前
C++学习之工厂模式-套接字通信
c++·学习
A林玖2 小时前
【学习笔记】服务器上使用 nbconvert 将 Jupyter Notebook 转换为 PDF
服务器·笔记·学习