如果你以为管理磁盘分区就是关闭系统,然后祈祷重启后一切正常,我真替你感到遗憾。遗憾的是,你没能用上 Linux 的 LVM 挂载功能,也就体验不到存储管理其实可以这么轻松。
本指南展示如何在 Linux 上创建 LVM、挂载 LVM 分区以及管理逻辑卷,整个过程无需停机。你将学到在 Linux、Ubuntu LVM 和 CentOS 系统上(或者说它们的现代替代品)都能使用的基础 LVM 命令。
TL;DR
- LVM 在物理磁盘和文件系统之间创建了一个灵活的存储层,让你能在系统运行时调整分区大小
- Install with apt install lvm2 on Ubuntu or dnf install lvm2 on Rocky Linux/AlmaLinux (CentOS 已停用,改用这两个型号)
- 通过初始化驱动器来创建 LVM pvcreate,将它们分组在 vgcreate,以及使用 lvcreate
- 格式化后,像挂载任何其他分区一样挂载 LVM 分区 mkfs.ext4 并向其中添加条目 /etc/fstab
- Key commands: pvs, vgs, lvs 展示你的设置; lvresize 随时调整大小; lvcreate -s creates snapshots
Linux 中的 LVM 是什么?

LVM(逻辑卷管理器)位于物理磁盘和文件系统之间。与其直接在驱动器上划分固定分区,LVM 创建了一个灵活的层,让你可以调整大小、移动和快照存储,同时一切保持在线
下面是其工作原理。你的物理驱动器变成「物理卷」。这些汇集到「卷组」中。从这些组中,你创建「逻辑卷」,就像常规分区一样,但真正具有灵活性
实际差异在你需要更多空间时显现。传统分区迫使你关闭系统、从 USB 启动,祈祷不会丢失数据。用 LVM,你只需运行一个命令,系统继续工作。我在一次服务器迁移中学到这点,扩展 /home 200GB 只花了大约 30 秒,而不是整个周末
物理卷的工作原理
物理卷是任何 LVM 可以使用的存储设备。硬驱动器、SSDs、RAID 阵列,甚至循环设备都算。你用 pvcreate初始化它们,这会写入 LVM 元数据并将设备标记为卷组可用
物理卷不关心底层硬件是什么。那块 500GB 的机械硬盘和你的新 2TB NVMe 驱动器对 LVM 来说看起来一样。当你混合使用存储时这很重要
理解卷组
卷组将多个物理卷汇集为一个存储单元。想象把三块 1TB 硬盘合并成一个 3TB 池。你用 vgcreate 创建卷组,并可以在容量改变时随时添加或移除物理卷
这种汇集方式意味着你不受限于按磁盘规划。需要更多空间?向卷组添加另一块驱动器。更换旧驱动器?用 pvmove 将数据迁移出去,系统照常运行,然后交换硬件
逻辑卷的作用

逻辑卷是你实际使用的。它们从卷组中划分出来,行为像常规分区。用 ext4 或 xfs 格式化,在任何地方挂载,随时调整大小。区别在于它们不受物理磁盘边界限制
当你运行 lvcreate -L 50G -n data datavg时,你从卷组的池中分配 50GB。这些空间可能来自一块驱动器,也可能分散在多块驱动器上。你不用关心,因为 LVM 处理分布
物理区块解释
物理区块是 LVM 中最小的分配单位,通常是 4MB 块。创建逻辑卷时,LVM 从卷组分配物理区块。这种细粒度方法让你能精确调整卷的大小
区块大小对大容量卷有影响。更大的区块意味着更少的元数据开销但分配更粗糙。4MB 的默认值适用于大多数情况。除了巨大存储阵列的数学倾向于更大区块的情况,我从未改过它
快照用于时间点备份
快照捕获逻辑卷在特定时刻的状态。LVM 使用写时复制技术。原始数据保持不动。当有变化时,LVM 在快照中保留旧块,同时将新数据写入主卷
想测试系统更新?先创建快照。有什么损坏了?从快照恢复。整个操作只需几秒钟,因为 LVM 只跟踪改动的数据块,不会复制所有内容。
我在进行重大数据库架构变更前会创建生产快照。心理上的安心几乎不产生额外开销,而且我通过回滚失败的迁移避免了三次完全重建。
何时使用 LVM 条纹化
条纹化将数据分散在多个物理卷上, similar to RAID 0。当你写入文件时,LVM 同时将数据块分发到不同的驱动器。这种并行化加快读取和写入速度,尤其是对大文件或数据库。
性能提升取决于你的工作场景。大文件的顺序读取收益最大。随机访问模式改进较少。数据库服务器和视频编辑工作站能感受到明显差异。
LVM 镜像以实现冗余
镜像在物理卷间复制数据。一块驱动器故障时,你的数据在镜像副本上保存无虞。LVM 自动处理同步。当停机成本大于额外存储成本时,性能损失就值得了。
现代设置通常结合 RAID 提供冗余和 LVM 提供灵活性。你既得到硬件级别的保护,也得到软件级别的管理。两者结合比单独依赖其一效果更好。
如果你在比较存储管理方案,查看 LVM vs. ZFS 以理解每种方案何时适合你的工作场景。
如何在 Ubuntu 和 CentOS 上安装 LVM?

安装 LVM 大约需要 60 秒,前提是你知道正确的命令。现代 Linux 发行版会自动处理依赖。你安装包、验证它正常工作,就可以开始配置存储了。
开始前有一点重要说明:CentOS 在 2020 年停止维护。如果你还在运行 CentOS,切换到 Rocky Linux 或 AlmaLinux。它们是直接替代品,还能获得安全更新。这里的命令在 Rocky Linux 9、AlmaLinux 9、Ubuntu 24.04 和当前 Debian 版本上完全相同。
先更新你的系统
首先更新系统的软件包列表。这确保你获得最新的 LVM2 版本及所有安全补丁和错误修复。
对于 Ubuntu 系统:
sudo apt update
对于基于 CentOS 的系统(Rocky Linux/AlmaLinux):
sudo dnf update
现代基于 RHEL 的系统使用 dnf 作为软件包管理器。如果你看到旧教程提到 yum,忽略它们。DNF 在 2015 年取代了 yum,提供更好的依赖解析和性能。
安装 LVM2 软件包
软件包名称是 lvm2 在所有发行版上均可使用。安装过程会自动拉取依赖项,包括 device-mapper 工具和相关库。
Ubuntu 逻辑卷管理器安装:
sudo apt install lvm2
CentOS 逻辑卷管理器安装 (Rocky/AlmaLinux):
sudo dnf install lvm2
等待安装完成。在配置现代化、网络良好的硬件上通常需要 10-15 秒。安装包较小,约 2-3MB 加上依赖项。
验证安装成功
检查 LVM2 是否正确安装,以及你当前运行的版本:
sudo lvm version
You’ll see version information and build details. Current versions run 2.03.x or higher. If the command fails or returns “command not found,” something went wrong with the installation.
现代的基于 systemd 的发行版在启动时会自动激活 LVM。你不需要像使用旧的 init 系统那样手动启用服务。lvm2-activation-generator 会自动处理一切。这是一项少配置的任务。
想在不涉及关键数据的系统上测试 LVM?可以考虑启动一个 最佳VPS提供商 在这里你可以尝试新想法,不用担心影响生产环境。
如何在 Linux 中创建 LVM?

创建 LVM 分三步:初始化物理卷、将它们分组到卷组,然后划分出逻辑卷。听起来比实际操作复杂得多。总共也就跑六条命令。
开始前,确定你要使用哪些驱动器。下面的例子使用 /dev/sdX 作为占位符。你的实际设备名称会不同。运行 lsblk 查看系统中连接了什么。
初始化物理卷
物理卷告诉 LVM 可以使用哪些驱动器。使用以下命令初始化驱动器 pvcreate:
sudo pvcreate /dev/sdb
Replace /dev/sdb 在您的实际设备上进行。这将 LVM 元数据写入驱动器,并将其标记为可用。该驱动器不再需要传统的分区方案。
想要同时初始化多个驱动器?把它们都列出来:
sudo pvcreate /dev/sdb /dev/sdc /dev/sdd
LVM 会一起处理它们。检查你创建的内容:
sudo pvs
这显示所有物理卷、它们的大小,以及它们属于哪个卷组(目前还没有)。
创建卷组
卷组将物理卷合并为一个存储单元。创建一个名为 datavg 的卷组:
sudo vgcreate datavg /dev/sdb
在创建时向同一个组添加多个驱动器:
sudo vgcreate datavg /dev/sdb /dev/sdc
现在这些驱动器充当一个存储池。检查卷组:
sudo vgs
你会看到总大小、分配给逻辑卷的容量,以及剩余的空间可用于未来扩展。
创建逻辑卷
逻辑卷是你实际格式化和挂载的东西。它们从卷组的可用空间中划分出来。创建一个 50GB 的卷:
sudo lvcreate -L 50G -n data datavg
这从 datavg 卷组创建了一个名为 data 的逻辑卷。完整的设备路径变为 /dev/datavg/data.
想用所有可用空间而不是指定大小?
sudo lvcreate -l 100%FREE -n data datavg
The -l 100%FREE 选项分配每个剩余字节。对于简单设置很有用,其中一个逻辑卷使用整个卷组。
格式化逻辑卷
逻辑卷像任何分区一样需要文件系统。用 ext4 格式化:
sudo mkfs.ext4 /dev/datavg/data
这对小卷需要几秒钟,对大卷需要更长时间。输出显示块计数和 inode 信息。除非出现问题,否则可以忽略这些细节。
想要 xfs?把 ext4 替换为 xfs。两者都可以。Ext4 在 Ubuntu 系统上更常见。Rocky Linux 在大多数使用场景中默认使用 xfs。
对 LVM 命令要非常小心。它们直接修改你的存储基础设施。我曾经在设备名称上打错字,就删除了 2TB 的客户文件。在运行任何改变存储配置的命令之前,要备份关键数据。
怎样挂载 LVM 分区?
挂载 LVM 分区的方式与挂载任何其他分区完全相同。创建一个挂载点目录,运行 mount 命令,并可选地添加一条记录到 /etc/fstab 用于在启动时自动挂载。
唯一的区别是设备路径。不再使用 /dev/sda1, you use /dev/volumegroup/logicalvolume。其他一切保持不变。
创建挂载点目录
挂载点就是你访问文件系统的目录。根据你的使用场景在任何合适的地方创建一个:
sudo mkdir /mnt/data
使用描述性的名称。 /mnt/data, /mnt/backup, /home/shared 都可以。位置不影响功能。有些人喜欢用 /mnt 作为临时挂载点,用专用目录在 / 下作为永久挂载点。
挂载逻辑卷
将格式化后的逻辑卷挂载到你的挂载点:
sudo mount /dev/datavg/data /mnt/data
把设备路径和挂载点替换成你的实际值。现在文件系统可以在 /mnt/data访问。你在那里创建的任何文件都存放在逻辑卷上。
验证挂载是否成功:
df -h /mnt/data
你会看到该卷的总大小、已用空间、可用空间和挂载点。如果什么都没显示,说明挂载命令失败了。检查你的设备路径,确保逻辑卷存在: lvs.
设置永久挂载
临时挂载在重启后会消失。添加条目到 /etc/fstab 以设置永久挂载:
sudo nano /etc/fstab
在末尾添加这一行:
/dev/datavg/data /mnt/data ext4 defaults 0 0
格式是:设备、挂载点、文件系统类型、挂载选项、转储优先级、fsck 顺序。末尾的两个零在大多数情况下都没问题。更改 ext4 匹配你实际使用的文件系统。
保存并退出编辑器。不重启系统的情况下测试 fstab 条目:
sudo mount -a
这会挂载 fstab 中所有未挂载的条目。如果看到错误,说明 fstab 中有输入错误。重启前一定要修复,否则系统可能无法正常启动。
为生产工作负载挂载卷时,性能至关重要。设置好 LVM 配置后, 在 Linux 中测试磁盘速度 来测试实际的吞吐量和延迟。
在 Ubuntu 安装期间挂载 LVM
Ubuntu’s installer supports LVM configuration during system setup. When you reach the partition screen, select “Manual” partitioning and choose “Configure the Logical Volume Manager.”
这种方法适合全新安装。在安装操作系统前,你先设置卷组和逻辑卷。安装程序会处理 /etc/fstab entries automatically.
对于现有系统,上面的命令行方法让你更好地控制过程,能够清楚地了解每一步发生了什么。
排查挂载问题
如果 LVM 分区无法挂载,先检查这些常见问题:
卷组未激活:
sudo vgchange -ay
这会激活所有卷组。有时在添加新驱动器或重启后,它们不会自动激活。
设备路径错误: 使用以下命令验证逻辑卷是否存在 lvs 并使用完整路径,例如 /dev/volumegroup/logicalvolume, not shortcuts.
文件系统错误: 在未挂载的卷上运行文件系统检查:
sudo fsck /dev/datavg/data
文件系统损坏导致无法挂载。fsck 工具可以自动修复大多数问题。
Linux LVM 的基本命令有哪些?
Linux LVM 命令让你从命令行管理整个存储设置。这些都是实际工作中会用到的命令,而不是过时文档里的理论命令。
显示物理卷
查看系统中的所有物理卷:
sudo pvs
这里展示了一个简洁表格,包含设备名称、卷组、格式、属性、大小和可用空间。如需查看某个物理卷的详细信息:
sudo pvdisplay /dev/sdb
详细视图显示物理扩展大小、总扩展数、已分配扩展数和 UUID。在你需要精确数字来规划容量时非常有用。
显示卷组
列出所有卷组:
sudo vgs
你将看到卷组名称、物理卷数量、逻辑卷数量、属性、总大小和可用空间。如需完整详情:
sudo vgdisplay datavg
这显示了所有信息:区块大小、总区块数、分配策略和 UUID。我在规划新逻辑卷时用它来查看还剩多少可用空间。
显示逻辑卷
列出所有逻辑卷:
sudo lvs
输出显示逻辑卷名称、所属卷组、属性、大小以及使用的物理区块。完整信息请查看:
sudo lvdisplay /dev/datavg/data
显示逻辑卷的路径、块设备、创建时间、状态和分段信息。在排查挂载问题或检查快照关系时很有用。
扩展卷组
当您需要更多容量时,可以向现有卷组添加物理卷:
sudo vgextend datavg /dev/sdd
This adds /dev/sdd to the “datavg” volume group. The free space becomes immediately available for existing logical volumes or creating new ones. No restart required.
我就这样给备份卷组添加了一块2TB硬盘,整个过程中备份一直在运行。整个操作只花了大约5秒钟。
调整逻辑卷大小
扩展逻辑卷以增加其空间:
sudo lvresize -L +50G /dev/datavg/data
这会向逻辑卷添加 50GB。调整大小后,扩展文件系统以使用新的空间:
For ext4:
sudo resize2fs /dev/datavg/data
For xfs:
sudo xfs_growfs /mnt/data
文件系统会自动扩展以填充逻辑卷。整个过程在卷保持挂载和使用状态下进行。用户察觉不到任何变化,只会看到可用空间增加。
想要缩小吗?这样风险更高,需要先卸载。缩小卷之前一定要备份。
创建卷快照
快照捕获逻辑卷的当前状态,用于备份或测试:
sudo lvcreate -s -L 10G -n data-snapshot /dev/datavg/data
这条命令创建了一个 10GB 的快照,名称为 "data-snapshot",来自 "data" 逻辑卷。快照采用写时复制技术。它只占用改动块的空间,而不是整个卷。
以只读方式挂载快照以获得一致的备份:
sudo mkdir /mnt/snapshot
sudo mount -o ro /dev/datavg/data-snapshot /mnt/snapshot
Back up from /mnt/snapshot 同时原始卷继续接收写入。这彻底解决了「如何备份活跃数据库」的问题。
删除逻辑卷
删除不再需要的逻辑卷:
sudo lvremove /dev/datavg/old-data
该命令在删除前会要求确认。这会永久销毁逻辑卷及其上的所有数据。确保重要数据已备份。
迁移物理存储区
移除物理卷之前,先将数据迁出:
sudo pvmove /dev/sdb
LVM 会自动迁移所有物理盘区从 /dev/sdb 到卷组中的其他物理卷。操作在后台运行,系统保持在线。
硬盘开始出现 SMART 错误时,这救了我一命。我把所有数据转移到其他硬盘,从卷组中移除故障盘,然后在维护时段更换它。全程零停机。
扫描卷组
有时添加新硬盘或重启后,卷组可能不会显示。强制扫描一下:
sudo vgscan
sudo vgchange -ay
第一条命令扫描卷组。第二条命令激活找到的所有内容。你的逻辑卷随即恢复可访问。
如果你正在为开发环境配置 Ubuntu LVM,可能还需要参考以下指南 在 Ubuntu 上安装 Hadoop, 在 Ubuntu 上安装 Redis, or 在 Ubuntu 上安装 XRDP 用于远程访问 LVM 管理的系统。
Conclusion
LVM 将 Linux 存储管理从固定的分区规划转变为灵活的容量分配。你可以动态调整卷大小、创建时间点快照,以及将多个磁盘合并为统一的存储空间。所有这一切都无需关闭系统。
核心工作流在各个发行版上保持一致。使用以下命令初始化物理卷 pvcreate,将它们合并为卷组 vgcreate,创建逻辑卷 lvcreate,用你喜欢的文件系统格式化,然后像挂载分区一样挂载。这些命令在 Ubuntu LVM 和 Rocky Linux 设置上的工作方式完全相同。
如果你刚接触逻辑卷管理,从小处开始。在备用磁盘上创建测试卷组。练习调整逻辑卷大小、创建快照,以及在物理卷之间移动数据。在非生产存储上犯错的代价要低得多。
关于 CentOS:它已停止维护。改用 Rocky Linux 或 AlmaLinux。它们与 RHEL 二进制兼容且获得持续维护。LVM 命令完全相同,但你会获得重要的安全更新。
想在不影响本地文件的情况下练习 LVM?启动一个 Ubuntu VPS VPS,你可以在其中自由试验。打破常规、从错误中学习、掌握命令,然后再将它们应用到生产系统。
选择经济版或高级 Linux VPS 来托管网站或远程桌面,价格最低。VPS 运行在 Linux KVM 上,效率更高,采用强大硬件和 NVMe SSD 存储,速度更快。
Read More