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
用于ext4
,xfs_growfs
用于xfs
)。
✅ 总结
- 分区操作 :使用
fdisk
创建新分区并设置为 LVM 类型8e
。 - 创建 PV :使用
pvcreate
创建物理卷。 - 创建 VG :使用
vgcreate
创建卷组。 - 创建 LV :使用
lvcreate
创建逻辑卷。 - 扩容 VG :使用
vgextend
向卷组添加物理卷。 - 扩容 LV :使用
lvextend
扩展逻辑卷。 - 扩展文件系统 :使用
resize2fs
或xfs_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 状态分析一下选哪个更合适吗?你可以贴一下 vgs
和 lvs
输出。
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 大小?
- 空间粒度:PE 越小,空间利用更精细;PE 越大,适合大容量分配但有可能浪费小空间。
- LV 大小限制:逻辑卷大小 = PE大小 × PE数量。如果你计划使用非常大的磁盘,就可能要调大 PE。
- 性能无明显区别:这主要是空间管理单位,不直接影响性能。
🔍 如何查看已有 VG 的 PE 大小?
bash
vgdisplay vg0
输出中你会看到类似:
PE Size 4.00 MiB
❗ 一旦 VG 创建好了,PE 大小就固定了,不能更改
如果你非要修改,只能:
- 备份数据
- 删除 VG
- 重新创建 VG(设置新的 PE 大小)
- 恢复数据
想看看你当前的 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 的注意事项:
- 不需要分区表 ,也不会有
/dev/sdb1
这种分区设备。 - 某些旧版本的操作系统、安装器或工具(特别是系统恢复工具)可能不太支持裸盘做 PV。
- 如果将来这块盘要做别的用途,比如多分区使用、挂载普通文件系统等,直接用裸盘就不太方便了。
🧠 总结建议:
- 💡 生产环境 推荐用标准方式:先分区 ➜
pvcreate /dev/sdXN
- 🧪 测试环境 / 临时用途 可以直接用整盘 ➜
pvcreate /dev/sdX
你是打算长期用这块盘作为 LVM 存储吗?我可以根据你的使用场景建议最合适的方式。
6 | 理解 fdisk 创建分区设置为 8e 类型
理解fdisk
fdisk
作用
fdisk
是 Linux 的磁盘分区管理工具,用于查看、创建、删除和修改磁盘分区。
它主要用于 MBR(主引导记录)分区表 ,而对于 GPT(GUID 分区表) ,推荐使用 parted
或 gdisk
。
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
按以下步骤操作:
- 输入
n
→ 新建分区 - 选择
p
→ 主分区 - 选择 分区号(默认即可)
- 选择 起始扇区(默认即可)
- 选择 结束扇区(默认使用整个磁盘)
- 输入
t
→ 修改分区类型 - 选择
8e
→ Linux LVM - 输入
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 分区建议使用 parted
或 gdisk
。
你现在是要在 新磁盘上配置 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
命令将它们初始化为物理卷。bashsudo pvcreate /dev/sdb1 sudo pvcreate /dev/sdc1
-
物理卷需要加入到卷组(VG)中 :物理卷必须先被添加到卷组中,才能用于创建逻辑卷。可以使用
vgextend
命令将物理卷加入现有的卷组。bashsudo vgextend vg0 /dev/sdb1 sudo vgextend vg0 /dev/sdc1
-
空间分配:如果指定了多个物理卷,LVM 会在这些物理卷中分配空间,按照一定的策略(如线性或交错模式)将空间划分到逻辑卷中。
3. 创建逻辑卷时的步骤总结
无论是否指定物理卷,在创建逻辑卷时,通常需要遵循以下步骤:
不指定物理卷:
- 确保卷组(VG)中有足够的可用空间。
- 使用
lvcreate
创建逻辑卷,LVM 会自动从卷组中选择物理卷进行空间分配。
指定物理卷:
-
初始化物理卷 :使用
pvcreate
命令将硬盘或分区初始化为物理卷(PV)。bashsudo pvcreate /dev/sdb1 sudo pvcreate /dev/sdc1
-
将物理卷加入卷组 :使用
vgextend
命令将物理卷添加到卷组(VG)中。bashsudo vgextend vg0 /dev/sdb1 sudo vgextend vg0 /dev/sdc1
-
创建逻辑卷 :使用
lvcreate
命令创建逻辑卷,并指定物理卷。bashsudo lvcreate -L 20G -n my_lv vg0 /dev/sdb1 /dev/sdc1
4. 常见问题与注意事项
- 没有足够的空间 :在不指定物理卷时,如果卷组中的空间不足,
lvcreate
命令会失败。指定物理卷时,需要确保这些物理卷有足够的空间。 - 物理卷的初始化和添加:如果指定的物理卷没有被初始化为 PV 或没有加入到卷组中,LVM 会报错,无法创建逻辑卷。
- 空间分配策略:当指定多个物理卷时,LVM 会根据逻辑卷的类型(线性或交错)分配空间。交错模式会提高性能,但需要小心数据丢失的风险。
总结
- 不指定物理卷:LVM 会自动从卷组中的所有物理卷中选择空间,适用于卷组中空间充足的情况。
- 指定物理卷:你可以控制逻辑卷的存储位置,前提是物理卷已经初始化为 PV,并加入到卷组中。
通过了解这些方法和注意事项,你可以灵活地在 LVM 中创建逻辑卷,并根据需求选择是否指定物理卷。