如果你想增加(扩展)根分区(根目录)容量,可以看这篇文章
准备环境
确保你有一些未分区的磁盘空间或额外的磁盘设备来创建 LVM 逻辑卷
安装 LVM 工具
大部分现代的 Linux 发行版都默认包含了 LVM 工具,如果没有可以通过以下命令安装:
在基于 Debian 的系统上(例如 Ubuntu):
sudo apt install lvm2
在基于 RedHat 的系统上(例如 CentOS):
sudo yum install lvm2
LVM 基本概念
LVM 主要涉及以下几个概念:
- 物理卷 (PV, Physical Volume):LVM 直接管理的物理存储单元,通常是一个分区或一整个硬盘
- 卷组 (VG, Volume Group):由一个或多个物理卷组成的存储池,逻辑卷可以在这个存储池中创建
- 逻辑卷 (LV, Logical Volume):从卷组中分配的虚拟磁盘空间,可以动态调整大小
创建 LVM
创建物理卷 (PV)
首先,将未分区的磁盘或分区初始化为物理卷
磁盘可以进行分区使用也可以不分区直接使用整个磁盘
假设要使用 /dev/sdb
作为 LVM 的物理卷:
sudo pvcreate /dev/sdb
创建卷组 (VG)
将物理卷添加到卷组中
在此示例中,创建一个名为 vg_data
的卷组:
sudo vgcreate vg_data /dev/sdb
你可以通过 vgdisplay
或者vgs
查看卷组的信息:
vgdisplay
查看详细信息,vgs
快速查看卷组基本信息
sudo vgdisplay
sudo vgs
创建逻辑卷 (LV)
从卷组中分配空间来创建逻辑卷
假设需要创建一个 20GB 的逻辑卷,并将其命名为 lv_data:
sudo lvcreate -L 20G -n lv_data vg_data
lvcreate
的 -L
参数用于指定大小,可以使用-l
(小写的-L)指定多少个块,也就是多少容量;-n
参数用于指定逻辑卷的名称
格式化逻辑卷
创建逻辑卷后,需要对其进行格式化才能使用
假设使用 ext4 文件系统:
sudo mkfs.ext4 /dev/vg_data/lv_data
挂载逻辑卷
将格式化好的逻辑卷挂载到系统中,例如挂载到 /mnt/data
:
sudo mount /dev/vg_data/lv_data /mnt/data
为了开机自动挂载,可以在 /etc/fstab
中添加一行:
/dev/vg_data/lv_data /mnt/data ext4 defaults 0 0
扩展逻辑卷
扩展逻辑卷大小
如果卷组中有剩余空间,可以动态扩展逻辑卷
假设你要将 lv_data
扩展到 30GB:
sudo lvextend -L 30G /dev/vg_data/lv_data
全部扩展到逻辑卷
sudo lvextend -l +100%FREE /dev/vg_data/lv_data
在线调整文件系统大小
扩展逻辑卷后,需要调整文件系统大小来匹配新的容量
对于 ext4 文件系统,使用以下命令:
sudo resize2fs /dev/vg_data/lv_data
缩小逻辑卷
缩小 LVM 容量有风险,特别是操作文件系统时,建议先备份重要数据
确保缩小后的大小足够容纳现有数据,缩小到比实际数据量更小的大小将导致数据不可恢复的丢失,可以使用以下命令查看文件系统的使用情况:
df -h /mnt/data
卸载逻辑卷
缩小逻辑卷前,必须先卸载它:
sudo umount /mnt/data
检查文件系统
缩小前要先检查文件系统:
sudo e2fsck -f /dev/vg_data/lv_data
调整文件系统大小
假设要将文件系统调整到 15GB:
sudo resize2fs /dev/vg_data/lv_data 15G
缩小逻辑卷
现在可以缩小逻辑卷大小:
sudo lvreduce -L 15G /dev/vg_data/lv_data
或者使用交互模式,系统会提示确认:
sudo lvreduce -r -L 15G /dev/vg_name/lv_name
-r
选项表示同时调整文件系统和逻辑卷大小
如果上一步没有使用 -r
选项,再次调整文件系统大小以适应新的逻辑卷大小:
resize2fs /dev/vg_data/lv_data
挂载逻辑卷
重新挂载逻辑卷:
sudo mount /dev/vg_data/lv_data /mnt/data
验证
通过 df -h
/ lsblk
/fdisk -l
检查新的文件系统和逻辑卷大小是否正确
删除 LVM 组件
卸载逻辑卷:
sudo umount /mnt/data
删除逻辑卷:
sudo lvremove /dev/vg_data/lv_data
删除卷组:
sudo vgremove vg_data
删除物理卷:
sudo pvremove /dev/sdb