想把两块物理硬盘(或者它们的分区)合并成一个统一、能动态管理的存储空间?这事儿在Linux里,靠LVM(逻辑卷管理)技术就能轻松搞定。它能让不同磁盘上的空间像搭积木一样无缝组合,扩容缩容都特别灵活。下面是一套在生产环境里验证过的完整操作流程,照着做就行。

一、确认磁盘与分区状态
动手之前,先得把情况摸清楚。这一步至关重要,目的是准确识别你要操作的磁盘,确保它们没被系统占用,避免手滑误删了重要数据。
首先,打开终端,用 lsblk -f 命令看看所有块设备。这个命令会清晰列出磁盘、分区、文件系统类型、挂载点还有UUID,一目了然。
接着,用 fdisk -l 或者针对具体磁盘的 gdisk -l /dev/sdX 检查一下分区表是MBR还是GPT,顺便确认分区布局是不是你预期的。
最后,执行 df -h 看看目标磁盘分区是不是已经挂载在用。如果显示已挂载,务必先用 umount /dev/sdX1 这样的命令把它安全卸载掉。
二、创建物理卷(PV)
物理卷(PV)是LVM的基石,你可以把它理解成“原材料”。它可以是整块硬盘(比如 /dev/sdb),也可以是硬盘上的一个分区(比如 /dev/sdc1)。创建物理卷的过程,其实就是把这些原始存储空间标记为“可供LVM使用”。
假设我们要合并 /dev/sdb 和 /dev/sdc 这两块盘。操作很简单:
对第一块盘执行:pvcreate /dev/sdb
对第二块盘执行:pvcreate /dev/sdc
创建完成后,别忘了验证一下。运行 pvs 或者更详细的 pvdisplay,确认这两块设备的状态都是“Allocatable yes”(可分配),并且有可用的物理扩展区(Free PE)。
三、构建卷组(VG)
卷组(VG)像个“存储池”,它把多个物理卷的空间汇集在一起管理。我们先创建一个卷组,然后把两块盘都加进去。
用第一块盘创建初始卷组,这里我们起名叫 vg_data:vgcreate vg_data /dev/sdb
接着,把第二块盘扩展到刚才创建的卷组里:vgextend vg_data /dev/sdc
这时候,卷组的总容量就是两块盘之和了。用 vgs 或 vgdisplay vg_data 检查一下,确认Total PE的数值已经包含了两个磁盘的全部物理扩展区。
四、创建逻辑卷(LV)并分配全部空间
逻辑卷(LV)是从卷组这个“大池子”里划出来的“小池子”,也就是最终给系统用的虚拟磁盘分区。我们可以一次性把池子里所有剩余空间都分配给它。
创建一个逻辑卷,名字叫 lv_merged,并且占用卷组里100%的空闲空间:lvcreate -l +100%FREE -n lv_merged vg_data
创建成功后,运行 lvs,应该能看到 /dev/vg_data/lv_merged 这个设备,它的大小基本等于两块磁盘的总容量(会减去一点点LVM自身的元数据开销)。
你也可以用 ls -l /dev/vg_data/lv_merged 看看它的实际设备路径,后面格式化会用到。
五、格式化逻辑卷并挂载
逻辑卷创建好了,但它现在还是一块“裸”空间,需要装上文件系统(比如ext4)才能存文件。放心,格式化只会清空这个逻辑卷,不会动其他卷组或物理卷里的数据。
选择一个文件系统进行格式化,这里以ext4为例:mkfs.ext4 /dev/vg_data/lv_merged
创建一个挂载点目录,比如 /data:mkdir -p /data
先临时挂载上去测试一下:mount /dev/vg_data/lv_merged /data
最后,用 df -h /data 验证一下。如果一切顺利,你会看到 /data 目录的可用空间,差不多就是 /dev/sdb 和 /dev/sdc 两块盘容量的总和。
六、配置开机自动挂载
临时挂载重启后就没了。要想让系统每次开机都自动挂载这个合并后的空间,得修改 /etc/fstab 这个配置文件。强烈建议使用UUID来标识设备,比直接用设备名(如 /dev/vg_data/lv_merged)更可靠。
首先,获取逻辑卷的UUID:blkid /dev/vg_data/lv_merged,记下输出结果里的那串长长的UUID值。
然后,编辑fstab文件,添加一行配置。可以直接用命令追加(注意替换xxx为实际的UUID):echo "UUID=xxx /data ext4 defaults 0 0" >> /etc/fstab
添加完后,务必运行 mount -a 测试一下配置是否正确。如果这条命令执行完没有任何报错,那就大功告成了。下次重启,你的合并存储空间就会自动出现在 /data 目录下。