想把两块物理硬盘(或者它们的分区)合并成一个统一、能动态管理的存储空间?在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 目录下。
