Appearance
LVM 逻辑卷
LVM(Logical Volume Manager)是一种灵活的磁盘管理技术,它提供了一种逻辑层面的磁盘管理方式,允许用户将多个物理磁盘组合成逻辑卷,从而实现更灵活的存储管理
LVM 的基本概念
- 物理卷(Physical Volume, PV):物理卷是 LVM 管理的最小物理单元,可以是一个磁盘或磁盘分区。物理卷被格式化为 LVM 可以识别的格式后,可以被添加到卷组中。
- 卷组(Volume Group, VG):卷组是物理卷的容器,可以包含一个或多个物理卷。卷组提供了存储空间池,用于创建逻辑卷。
- 逻辑卷(Logical Volume, LV):逻辑卷是卷组中划分出来的虚拟存储设备,可以被格式化为文件系统并挂载使用。逻辑卷的大小可以动态调整,这是 LVM 灵活性的体现。
相关命令
命令 | 作用 |
---|---|
pvcreate | 创建物理卷 |
pvremove | 移除物理卷 |
pvs / pvdisplay | 查看物理卷信息 |
vgcreate | 创建卷组 |
vgs/vgscan/vgdisplay | 查看卷组信息 |
vgreduce | 从卷组移除物理卷 |
vgextend | 扩容卷组 |
lvcreate | 创建逻辑卷 |
lvs/lvdisplay | 查看逻辑卷 |
lvextent | 扩容逻辑卷 |
lvresize | 动态调整逻辑卷(LV)的容量支持 扩展 和 收缩 操作 |
lvremove | 删除逻辑卷 |
resize2fs | 在线格式化ext格式文件系统。调整ext文件系统 |
xfs_growfs | 在线格式化xfs格式文件系统。扩展XFS文件系统 |
使用缓存卷提高性能
LVM 支持使用缓存卷来提高逻辑卷的性能。以下是使用缓存卷的步骤:
创建缓存池。使用
lvcreate
命令创建缓存池。例如:bashlvcreate --type cache-pool --name datalv-cache /dev/sdd
这条命令使用
/dev/sdd
磁盘创建一个缓存池,命名为datalv-cache
。将缓存池附加到逻辑卷。使用
lvcreate
命令将缓存池附加到逻辑卷。例如:bashlvcreate --type cache --name datalv-cached --cache-pool datalv-cache /dev/datavg/datalv
这条命令将缓存池
datalv-cache
附加到逻辑卷datalv
,创建一个缓存卷datalv-cached
。挂载缓存卷并使用。例如:
bashmkdir /mnt/cached-data mount /dev/datavg/datalv-cached /mnt/cached-data
调整性能设置
可以调整 LVM 的性能设置,以优化逻辑卷的性能。例如,可以调整 I/O 调度算法和缓存策略。以下是调整性能设置的示例:
调整 I/O 调度算法。可以使用
ionice
命令调整逻辑卷的 I/O 调度优先级。例如:bashionice -c 2 -n 0 -p $(pidof process_name)
这条命令将指定进程的 I/O 调度优先级设置为实时级别。
调整缓存策略。可以使用
lvchange
命令调整缓存策略。例如:bashlvchange --poll y /dev/datavg/datalv
这条命令启用对逻辑卷
datalv
的轮询,以提高其性能。
最佳实践和注意事项
- 备份数据:在进行任何 LVM 操作之前,建议备份重要数据,以防止操作失误导致数据丢失。
- 监控空间使用:定期监控卷组和逻辑卷的空间使用情况,以避免空间不足导致的问题。
- 性能优化:根据实际需求调整 LVM 的性能设置,以获得最佳的存储性能。
- 快照管理:合理设置快照卷的大小,并及时删除不再需要的快照卷,以释放空间。
创建 LVM 逻辑卷的步骤
1.挂载点
bash
df -h
lsblk
2. 创建物理卷
使用 pvcreate
命令将磁盘或分区转换为物理卷。例如:
bash
# 创建
pvcreate /dev/sdb
# 查看
pvdisplay /dev/sdb
这条命令将 /dev/sdb
磁盘转换为 LVM 物理卷。
3. 创建卷组
使用 vgcreate
命令创建卷组,并将物理卷添加到卷组中。例如:
bash
vgcreate yunjisuan /dev/sdb
这条命令创建了一个名为 yunjisuan
的卷组,并将 /dev/sdb
物理卷添加到该卷组中。
4. 创建逻辑卷
使用 lvcreate
命令在卷组中创建逻辑卷。例如:
bash
lvcreate -n datalv -L +5G yunjisuan
这条命令在 yunjisuan
卷组中创建了一个名为 datalv
、大小增加 5GB 的逻辑卷。
注意:+5G是在原基础上增加,5G是整体大小为5G
5. 格式化逻辑卷
逻辑卷创建完成后,需要格式化为文件系统
bash
mkfs.ext4 /dev/yunjisuan/datalv
命令将逻辑卷格式化为 ext4 文件系统
6.挂载逻辑卷
bash
mkdir /data
mount /dev/yunjisuan/datalv /data
第一条命令创建挂载点 /data
,第二条命令将逻辑卷挂载到该挂载点。
7.开机自动挂载
mount挂载是临时操作,下次系统重启不会自动挂载,可编辑/etc/fstab
文件或者/etc/rc.d.rc.local
bash
# /etc/fstab
/dev/yunjisuan/datalv /data ext4 defaults 0 0
# /etc/rc.d/rc.local
mount /dev/yunjisuan/datalv /data
8.检测
bash
df -Th
调整逻辑卷大小步骤
扩大逻辑卷
使用
lvextend
命令扩展逻辑卷的大小。例如: bashlvextend --size +2G /dev/datavg/datalv
这条命令将逻辑卷
datalv
扩大 2GB。调整文件系统大小以适应新的逻辑卷大小。
对于 ext4 文件系统,可以使用
resize2fs
命令:bashresize2fs /dev/datavg/datalv
对于 XFS 文件系统,可以使用
xfs_growfs
命令:bashxfs_growfs /mnt/data
缩小逻辑卷
在缩小逻辑卷之前,需要确保文件系统不会受到损坏。以下是缩小逻辑卷的步骤:
卸载逻辑卷:
bashumount /dev/datavg/datalv
文件系统完整行检查和修复
bashe2fsck -f /dev/datavg/datalv
调整文件系统大小。
对于 ext4 文件系统,可以使用
resize2fs
命令:bashresize2fs /dev/datavg/datalv 3G
这条命令将文件系统大小调整为 3GB。
使用
lvreduce
命令缩小逻辑卷的大小: bashlvreduce -L 3G /dev/datavg/datalv
注意:在缩小逻辑卷时,必须确保逻辑卷的新大小大于或等于文件系统大小,否则可能导致数据丢失。
挂载逻辑卷:
bashmount /dev/datavg/datalv /mnt/data
创建快照卷
快照卷用于在某一时刻创建逻辑卷的快照,以便进行数据备份或恢复。以下是创建快照卷的步骤:
使用
lvcreate
命令创建快照卷。例如:bashlvcreate --size 1G --snapshot --name datalv-snapshot /dev/datavg/datalv
这条命令创建了一个名为
datalv-snapshot
、大小为 1GB 的快照卷,用于保存datalv
逻辑卷的当前状态。挂载快照卷并进行数据备份。例如:
bashmkdir /mnt/snapshot mount /dev/datavg/datalv-snapshot /mnt/snapshot
在备份完成后,可以删除快照卷以释放空间:
bashumount /mnt/snapshot lvremove /dev/datavg/datalv-snapshot
注意:快照卷的大小应足够保存在创建快照后对原始逻辑卷所做的更改。如果快照卷空间不足,快照将失效。
系统文件扩容步骤
1.查看添加设备
bash
lsblk
2.创建物理卷
bash
pvcreate /dev/sdd
3.卷组扩容
bash
# 先查看要扩容的卷组
pvdisplay
# 我这里以openeuler为例
vgextent openeuler /dev/sdd
4.逻辑卷扩容
bash
lvextent -l +100%FREE /dev/openeuler/root
5.在线格式化
bash
## 操作前先查看文件系统类型
resize2fs /dev/openeuler/root # ext格式
xfs_growfs /dev/openeuler/root # xfs
6.检测
bash
df -Th
重点关注
系统逻辑卷扩容后不要缩减,因为硬盘里已经存储系统文件信息,移除硬盘会影响系统的正常运行