逻辑卷管理(LVM)入门指南
立即解锁
发布时间: 2025-09-13 00:43:05 阅读量: 8 订阅数: 20 AIGC 

# 逻辑卷管理(LVM)入门指南
## 1. 逻辑卷管理(LVM)的必要性
在系统管理中,磁盘空间管理一直是一项重要任务。过去,当磁盘空间不足时,管理员需要执行一系列复杂的操作来增加磁盘分区的可用空间,这通常还需要让系统离线。具体步骤包括:
1. 安装新的硬盘。
2. 进入恢复或单用户模式。
3. 在新硬盘上创建分区和文件系统。
4. 使用临时挂载点将数据从空间不足的文件系统移动到新的、更大的文件系统。
5. 修改 `/etc/fstab` 文件以反映新分区的正确设备名称。
6. 重新启动系统以在正确的挂载点重新挂载新的文件系统。
而逻辑卷管理(LVM)的出现改变了这一状况。LVM 允许非常灵活的磁盘空间管理,它具有以下优点:
- 可以在不重启或卸载现有文件系统的情况下,向文件系统添加(或移除)磁盘空间。
- 能够将多个物理存储设备和分区组合成一个单一的卷组(VG),然后将卷组划分为逻辑卷(LV)。
- 可以创建全新的卷组和逻辑卷。
### 1.1 虚拟盒子(VirtualBox)中磁盘空间不足的场景
在新发行版发布后,很多人会选择在 VirtualBox 虚拟机中运行一段时间,以确保在生产环境中安装时不会遇到重大问题。有一次,在安装 Fedora 时,安装到大约三分之一时,主机文件系统的磁盘空间不足。幸运的是,VirtualBox 检测到了空间不足的情况,暂停了虚拟机,并显示了错误消息。
### 1.2 恢复过程
由于 Fedora 和大多数现代发行版使用逻辑卷管理,并且硬盘上还有一些可用空间,因此可以在不重新格式化整个硬盘、不重新安装操作系统甚至不重启的情况下,为相应的文件系统分配额外的磁盘空间。具体操作是将一些可用空间分配给相应的逻辑卷,并调整文件系统的大小,整个过程中文件系统处于挂载和活动状态,运行的程序(如 VirtualBox)仍在使用该文件系统。之后,继续运行虚拟机,安装过程就像什么都没发生一样继续进行。
## 2. LVM 结构
LVM 磁盘环境的结构允许将多个单独的存储设备和/或磁盘分区组合成一个单一的卷组。卷组可以再细分为逻辑卷,也可以作为一个大的单一卷使用。然后可以在逻辑卷上创建常规的文件系统,如 EXT3 或 EXT4。
### 2.1 结构示例
假设有两个完整的物理存储设备和第三个硬盘的一个分区,它们可以组合成一个单一的卷组。从这个卷组的空间中创建两个逻辑卷,并在每个逻辑卷上创建一个文件系统,如 EXT4 文件系统。
### 2.2 扩展逻辑卷
如果要向逻辑卷添加空间,可以按以下规则操作:
- 如果卷组中有可用空间,可以将逻辑卷扩展到该空间中。
- 如果没有可用空间,可能需要安装新的硬盘,并将现有卷组扩展以包含新硬盘的至少一部分,然后在卷组内扩展逻辑卷。
需要注意的是,逻辑卷的大小不能超过其所在的卷组,而卷组可以包含多个分区和物理卷(PV),这些物理卷可以涵盖多个存储设备的部分或全部。卷组也可以扩展以提供更多的磁盘空间给包含的逻辑卷。
以下是 LVM 结构的 mermaid 流程图:
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(物理存储设备/分区):::process --> B(卷组 VG):::process
B --> C(逻辑卷 LV1):::process
B --> D(逻辑卷 LV2):::process
C --> E(文件系统 EXT4):::process
D --> F(文件系统 EXT4):::process
```
## 3. 扩展逻辑卷
扩展现有文件系统的需求从 Unix 早期就存在了,在 Linux 中,借助逻辑卷管理和扩展活动、挂载文件系统的能力,这个过程变得更加容易。以下是在卷组中有可用空间的情况下,扩展现有逻辑卷的步骤:
### 3.1 适用条件
此过程仅适用于 Linux 2.6 内核(及更高版本)和 EXT3、EXT4、BTRFS 文件系统。由于最新的内核系列是 5.x.x,并且大多数发行版默认使用 EXT3、EXT4 或 BTRFS 文件系统,因此这些要求通常不难满足。
### 3.2 操作步骤
#### 3.2.1 检查卷组和逻辑卷信息
使用以下命令列出所有卷组和逻辑卷:
```bash
[root@studentvm1 ~]# lsblk -i
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 60G 0 disk
|-sda1 8:1 0 1M 0 part
|-sda2 8:2 0 1G 0 part /boot
|-sda3 8:3 0 1G 0 part /boot/efi
`-sda4 8:4 0 58G 0 part
|-fedora_studentvm1-root 253:0 0 2G 0 lvm /
|-fedora_studentvm1-usr 253:1 0 15G 0 lvm /usr
|-fedora_studentvm1-tmp 253:2 0 5G 0 lvm /tmp
|-fedora_studentvm1-var 253:3 0 10G 0 lvm /var
|-fedora_studentvm1-home 253:4 0 2G 0 lvm /home
`-fedora_studentvm1-test 253:5 0 500M 0 lvm /test
sdb 8:16 0 20G 0 disk
|-sdb1 8:17 0 2G 0 part
`-sdb2 8:18 0 2G 0 part
sr0 11:0 1 1024M 0 rom
zram0 252:0 0 8G 0 disk [SWAP]
[root@studentvm1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
fedora_studentvm1 1 6 0 wz--n- <58.00g <23.51g
[root@studentvm1 ~]# lvs
LV VG Attr LSize Pool Origin Data% ...
home fedora_studentvm1 -wi-ao---- 2.00g
root fedora_studentvm1 -wi-ao---- 2.00g
test fedora_studentvm1 -wi-ao---- 500.00m
tmp fedora_studentvm1 -wi-ao---- 5.00g
usr fedora_studentvm1 -wi-ao---- 15.00g
var fedora_studentvm1 -wi-ao---- 10.00g
```
这些命令显示 `/home` 文件系统位于 `fedora_studentvm1` 卷组中,并且该卷组中有 23.51GB 的可用空间。
#### 3.2.2 扩展逻辑卷
使用以下命令将逻辑卷扩展 2GB:
```bash
[root@studentvm1 ~]# lvextend -L +2G /dev/fedora_studentvm1/home
Size of logical volume fedora_studentvm1/home changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
Logical volume fedora_studentvm1/home successfully resized.
```
#### 3.2.3 调整文件系统大小
扩展逻辑卷后,文件系统的大小并未改变。使用以下命令调整文件系统的大小以填充逻辑卷的空间:
```bash
[root@studentvm1 ~]# resize2fs /dev/fedora_studentvm1/home ; df -h
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/fedora_studentvm1/home is mounted on /home; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 1
The filesystem on /dev/fedora_studentvm1/home is now 1048576 (4k) blocks long.
Filesystem Size Used Avail Use% Mounted on
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 7.9G 12K 7.9G 1% /dev/shm
tmpfs 3.2G 1.2M 3.2G 1% /run
/dev/mapper/fedora_studentvm1-root 2.0G 631M 1.2G 35% /
/dev/mapper/fedora_studentvm1-usr 15G 5.8G 8.2G 42% /usr
/dev/sda2 974M 280M 628M 31% /boot
/dev/mapper/fedora_studentvm1-var 9.8G 659M 8.6G 7% /var
/dev/sda3 1022M 18M 1005M 2% /boot/efi
/dev/mapper/fedora_studentvm1-test 459M 1.1M 429M 1% /test
/dev/mapper/fedora_studentvm1-home 3.9G 1.4G 2.4G 37% /home
/dev/mapper/fedora_studentvm1-tmp 4.9G 160K 4.6G 1% /tmp
tmpfs 1.6G 72K 1.6G 1% /run/user/984
tmpfs 1.6G 64K 1.6G 1% /run/user/0
```
通过以上步骤,成功地在不重启或卸载文件系统的情况下,为活动的 `/home` 文件系统添加了 2GB 的空间。
### 1.3 注意事项
并非所有文件系统类型都可以调整大小。EXT3、EXT4、BTRFS 和 XFS 文件系统可以在活动、挂载的文件系统上进行扩展,在卸载的文件系统上可以进行缩减。其他文件系统可能无法调整大小,因此在调整文件系统大小时,务必查看相应文件系统的文档以确保可以进行操作。
## 4. 创建和扩展卷组
卷组的使用为磁盘空间管理提供了很大的灵活性,特别是在需要为一个或多个逻辑卷添加更多空间时。下面将介绍创建新卷组和扩展现有卷组的方法。
### 4.1 创建新卷组
有时候需要创建一个新的卷组来包含一个或多个新的逻辑卷。例如,在 `/dev/sdb` 上有一个 2GB 的未使用分区和大约 16GB 尚未分区的空间。以下是创建新卷组的具体步骤:
#### 4.1.1 验证磁盘空间
使用 `lsblk` 命令验证 `/dev/sdb` 上剩余的空间:
```bash
[root@studentvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 59G 0 part
|-fedora_studentvm1-root 253:0 0 2G 0 lvm /
|-fedora_studentvm1-swap 253:1 0 4G 0 lvm [SWAP]
|-fedora_studentvm1-usr 253:2 0 15G 0 lvm /usr
|-fedora_studentvm1-home 253:3 0 4G 0 lvm /home
|-fedora_studentvm1-var 253:4 0 10G 0 lvm /var
`-fedora_studentvm1-tmp 253:5 0 5G 0 lvm /tmp
sdb 8:16 0 20G 0 disk
|-sdb1 8:17 0 2G 0 part /TestFS
`-sdb2 8:18 0 2G 0 part
```
该命令显示 `/dev/sdb` 驱动器总共有 20GB 的空间,`/TestFS` 分区(`/dev/sdb1`)和 `/dev/sdb2` 分区各使用了 2GB,剩余未分配的空间约为 16GB。
#### 4.1.2 创建新分区
在 `/dev/sdb` 上创建一个新的主分区,使用驱动器上剩余的空间,新的 `/dev/sdb3` 分区大小将为 16GB。创建完成后,验证分区是否创建成功。
#### 4.1.3 创建物理卷(PV)
使用以下命令在 `/dev/sdb2` 和 `/dev/sdb3` 分区上创建物理卷:
```bash
[root@studentvm1 ~]# pvcreate /dev/sdb2 /dev/sdb3
WARNING: btrfs signature detected on /dev/sdb2 at offset 65600. Wipe it?
[y/n]: y
Wiping btrfs signature on /dev/sdb2.
Physical volume "/dev/sdb2" successfully created.
Physical volume "/dev/sdb3" successfully created.
```
#### 4.1.4 创建卷组
使用以下命令创建一个包含 `/dev/sdb2` 和 `/dev/sdb3` 分区的卷组:
```bash
[root@studentvm1 ~]# vgcreate NewVG-01 /dev/sdb2 /dev/sdb3
Volume group "NewVG-01" successfully created
```
#### 4.1.5 验证新卷组
使用 `vgs` 命令验证新卷组:
```bash
[root@studentvm1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
NewVG-01 2 0 0 wz--n- 17.99g 17.99g
fedora_studentvm1 1 6 0 wz--n- <58.00g <21.51g
```
可以看到新卷组 `NewVG-01` 的总大小约为 18GB,且所有空间都可用。
#### 4.1.6 创建逻辑卷
使用以下命令在新卷组中创建一个 2GB 的逻辑卷:
```bash
[root@studentvm1 ~]# lvcreate -L 2G NewVG-01 --name TestVol1
Logical volume "TestVol1" created.
```
#### 4.1.7 创建文件系统并挂载测试
在新的逻辑卷上创建 EXT4 文件系统,临时挂载到 `/mnt` 并进行测试:
```bash
[root@studentvm1 ~]# mkfs -t ext4 /dev/mapper/NewVG--01-TestVol1
mke2fs 1.46.5 (30-Dec-2021)
Creating filesystem with 524288 4k blocks and 131072 inodes
Filesystem UUID: 67e5badd-933b-4bb8-9851-3eed9cb16553
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@studentvm1 ~]# mount /dev/mapper/NewVG--01-TestVol1 /mnt
[root@studentvm1 ~]# ll /mnt
total 16
drwx------ 2 root root 16384 Feb 16 16:04 lost+found
```
可以在 `/mnt` 下创建一些测试文件,验证新卷组和逻辑卷是否正常工作。测试完成后,卸载该卷。
### 4.2 总结
通过以上步骤,我们成功地创建了一个新的卷组,并在其中创建了一个逻辑卷,还在逻辑卷上创建了文件系统并进行了测试。这个过程展示了如何将多个分区组合成一个单一的卷组,并在卷组中创建逻辑卷,充分体现了 LVM 在磁盘空间管理方面的灵活性。
通过本文的介绍,你应该对逻辑卷管理(LVM)有了更深入的了解,包括其优势、结构、扩展逻辑卷以及创建和扩展卷组的方法。在实际应用中,合理运用 LVM 可以大大提高磁盘空间管理的效率和灵活性。
## 5. 扩展现有卷组
除了创建新的卷组,扩展现有卷组也是常见的需求,特别是当现有的逻辑卷需要更多空间时。以下将详细介绍扩展现有卷组的步骤。
### 5.1 适用场景
当现有的卷组空间不足,而系统中还有其他可用的物理存储设备或分区时,可以考虑扩展现有卷组。
### 5.2 操作步骤
#### 5.2.1 确定可用的物理存储设备或分区
首先,使用 `lsblk` 命令查看系统中所有的存储设备和分区,找出可用的设备或分区。例如:
```bash
[root@studentvm1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 60G 0 disk
|-sda1 8:1 0 1G 0 part /boot
`-sda2 8:2 0 59G 0 part
|-fedora_studentvm1-root 253:0 0 2G 0 lvm /
|-fedora_studentvm1-swap 253:1 0 4G 0 lvm [SWAP]
|-fedora_studentvm1-usr 253:2 0 15G 0 lvm /usr
|-fedora_studentvm1-home 253:3 0 4G 0 lvm /home
|-fedora_studentvm1-var 253:4 0 10G 0 lvm /var
`-fedora_studentvm1-tmp 253:5 0 5G 0 lvm /tmp
sdb 8:16 0 20G 0 disk
|-sdb1 8:17 0 2G 0 part /TestFS
`-sdb2 8:18 0 2G 0 part
sdc 8:32 0 10G 0 disk
```
假设这里发现 `/dev/sdc` 是一个未使用的 10GB 磁盘,可以用于扩展卷组。
#### 5.2.2 创建物理卷(PV)
使用 `pvcreate` 命令将可用的存储设备或分区转换为物理卷。例如,将 `/dev/sdc` 转换为物理卷:
```bash
[root@studentvm1 ~]# pvcreate /dev/sdc
Physical volume "/dev/sdc" successfully created.
```
#### 5.2.3 扩展卷组
使用 `vgextend` 命令将新创建的物理卷添加到现有的卷组中。假设要扩展的卷组是 `fedora_studentvm1`,则执行以下命令:
```bash
[root@studentvm1 ~]# vgextend fedora_studentvm1 /dev/sdc
Volume group "fedora_studentvm1" successfully extended
```
#### 5.2.4 验证卷组扩展
使用 `vgs` 命令验证卷组是否已成功扩展:
```bash
[root@studentvm1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
fedora_studentvm1 2 6 0 wz--n- <68.00g <31.51g
```
可以看到,`fedora_studentvm1` 卷组的总大小增加了,可用空间也相应增加。
#### 5.2.5 扩展逻辑卷
扩展卷组后,可以根据需要扩展其中的逻辑卷。例如,将 `/home` 逻辑卷再扩展 3GB:
```bash
[root@studentvm1 ~]# lvextend -L +3G /dev/fedora_studentvm1/home
Size of logical volume fedora_studentvm1/home changed from 4.00 GiB (1024 extents) to 7.00 GiB (1792 extents).
Logical volume fedora_studentvm1/home successfully resized.
```
#### 5.2.6 调整文件系统大小
扩展逻辑卷后,需要调整文件系统的大小以利用新增加的空间。使用 `resize2fs` 命令(对于 EXT4 文件系统):
```bash
[root@studentvm1 ~]# resize2fs /dev/fedora_studentvm1/home ; df -h
resize2fs 1.46.5 (30-Dec-2021)
Filesystem at /dev/fedora_studentvm1/home is mounted on /home; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 2
The filesystem on /dev/fedora_studentvm1/home is now 1835008 (4k) blocks long.
Filesystem Size Used Avail Use% Mounted on
...
/dev/mapper/fedora_studentvm1-home 6.9G 1.4G 5.2G 22% /home
...
```
### 5.3 流程图
下面是扩展现有卷组的 mermaid 流程图:
```mermaid
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
A(确定可用存储设备/分区):::process --> B(创建物理卷 PV):::process
B --> C(扩展卷组 VG):::process
C --> D(验证卷组扩展):::process
D --> E(扩展逻辑卷 LV):::process
E --> F(调整文件系统大小):::process
```
## 6. LVM 的优势总结
逻辑卷管理(LVM)在磁盘空间管理方面具有诸多优势,以下是一个总结表格:
| 优势 | 描述 |
| ---- | ---- |
| 灵活性 | 可以在不重启或卸载文件系统的情况下,动态地添加或移除磁盘空间,方便应对磁盘空间不足的问题。 |
| 整合资源 | 能够将多个物理存储设备和分区组合成一个单一的卷组,然后再划分为逻辑卷,提高了磁盘空间的利用率。 |
| 易于扩展 | 无论是扩展逻辑卷还是卷组,操作都相对简单,减少了传统磁盘空间管理的复杂性。 |
| 数据安全 | 在扩展或调整磁盘空间时,不需要重新格式化整个硬盘或重新安装操作系统,降低了数据丢失的风险。 |
## 7. 注意事项和最佳实践
在使用逻辑卷管理(LVM)时,有一些注意事项和最佳实践可以帮助你更好地管理磁盘空间。
### 7.1 注意事项
- **文件系统兼容性**:并非所有的文件系统都支持在线调整大小,如前文所述,在调整文件系统大小时,务必查看相应文件系统的文档以确保可以进行操作。
- **系统稳定性**:虽然 LVM 允许在不重启系统的情况下进行磁盘空间调整,但在关键系统上进行操作时,仍需谨慎。建议在操作前备份重要数据,以防万一。
- **物理设备限制**:卷组和逻辑卷的大小受到物理存储设备的限制,在规划磁盘空间时,需要考虑物理设备的容量和性能。
### 7.2 最佳实践
- **定期监控磁盘空间**:使用工具如 `df -h` 和 `vgs` 定期监控磁盘空间的使用情况,及时发现空间不足的问题并进行处理。
- **合理规划卷组和逻辑卷**:在创建卷组和逻辑卷时,要根据实际需求合理分配空间,避免空间浪费或不足。
- **备份重要数据**:在进行任何磁盘空间调整操作之前,备份重要的数据,以防止数据丢失。
## 8. 总结
逻辑卷管理(LVM)是一种强大的磁盘空间管理工具,它提供了灵活性、高效性和数据安全性。通过本文的介绍,你已经了解了 LVM 的必要性、结构、扩展逻辑卷、创建和扩展卷组的方法,以及相关的注意事项和最佳实践。
在实际应用中,合理运用 LVM 可以大大提高磁盘空间管理的效率和灵活性,帮助你更好地应对各种磁盘空间管理问题。希望本文能够对你有所帮助,让你在系统管理中更加得心应手。
通过不断地实践和探索,你将能够熟练掌握 LVM 的使用技巧,为系统的稳定运行提供有力保障。
0
0
复制全文
相关推荐









