本指南概述了在系统重装后,或在任何类似的、需要重新激活存储配置的情况下,恢复软件 RAID 阵列和 LVM 卷的步骤。
1. 前置条件
安装必要的软件包:
sudo apt-get update
sudo apt-get install mdadm lvm2
如果这是一次恢复会话,在确认阵列布局和 LVM 元数据之前,请避免向磁盘写入数据。
2. 识别 RAID 阵列和 LVM 卷
检查 RAID 阵列
# Check for existing RAID arrays
sudo mdadm --detail --scan
cat /proc/mdstat
也可以直接检查候选成员设备:
sudo mdadm --examine /dev/nvme1n1p3 /dev/nvme3n1p3
请根据你的机器调整设备名称。在组装任何阵列之前,使用 lsblk、blkid,或安装器/Live 环境中的磁盘工具确认设备无误。
识别 LVM 配置
# Examine partition types to identify RAID and LVM members
sudo blkid
# Check for LVM physical volumes
sudo pvs
# Check volume groups
sudo vgs
# Check logical volumes
sudo lvs
# Get detailed information about physical volumes
sudo pvdisplay --maps
如果 RAID 设备尚未组装,LVM 可能不会显示位于其上的物理卷。请先组装 RAID 阵列,然后重新扫描 LVM。
3. 激活 RAID 阵列
# Assemble all detected RAID arrays
sudo mdadm --assemble --scan
# Verify successful assembly
cat /proc/mdstat
# Get detailed information about a specific RAID array
# Replace md0 with the actual device name if different
sudo mdadm --detail /dev/md0
如果正常组装失败,请先检查元数据:
sudo mdadm --examine /dev/nvme1n1p3 /dev/nvme3n1p3
如果成员设备正确,并且已知阵列状态一致,可以尝试强制组装:
# Only use this if normal assembly fails and you are sure these are the correct members
sudo mdadm --assemble --force /dev/md0 /dev/nvme1n1p3 /dev/nvme3n1p3
尤其对于 RAID-0,成员顺序很重要。如果阵列无法干净地组装,请停止操作,并在尝试破坏性命令之前核实原始布局。
4. 激活 LVM 卷
# Scan for volume groups
sudo vgscan
# Activate all volume groups
sudo vgchange -ay
# Verify all logical volumes are available
sudo lvs -a
如果需要激活特定卷:
sudo lvchange -ay vg_name/lv_name
# For example:
sudo lvchange -ay vg_home/lv_home
可以使用以下命令确认生成的设备路径:
lsblk -f
sudo lvs -o +devices
5. 挂载卷
创建挂载点并挂载逻辑卷:
# Create mount points if they do not exist
sudo mkdir -p /mnt/home /mnt/home_lfs /mnt/storage /mnt/trash
# Mount the logical volumes
sudo mount /dev/vg_home/lv_home /mnt/home
sudo mount /dev/vg_home_lfs/home_lfs /mnt/home_lfs
sudo mount /dev/vg_storage/lv_storage /mnt/storage
sudo mount /dev/vg_trash/lv_trash /mnt/trash
# Verify successful mounting
df -h
如果不确定文件系统类型或正确的挂载选项,请先检查逻辑卷:
sudo blkid /dev/vg_home/lv_home
sudo file -s /dev/vg_home/lv_home
6. 使挂载永久生效(可选)
要让这些挂载在重启后仍然生效,请将它们添加到 /etc/fstab。
首先获取每个逻辑卷的 UUID:
sudo blkid | grep /dev/mapper
然后编辑 /etc/fstab:
sudo vim /etc/fstab
使用 UUID 的条目通常比使用设备名的条目更稳定。示例格式:
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/home ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/home_lfs ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/storage ext4 defaults 0 2
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /mnt/trash ext4 defaults 0 2
如果设备映射器路径与你的系统匹配,也可以使用:
/dev/mapper/vg_home-lv_home /mnt/home ext4 defaults 0 2
/dev/mapper/vg_home_lfs-home_lfs /mnt/home_lfs ext4 defaults 0 2
/dev/mapper/vg_storage-lv_storage /mnt/storage ext4 defaults 0 2
/dev/mapper/vg_trash-lv_trash /mnt/trash ext4 defaults 0 2
重启前,测试该文件:
sudo mount -a
findmnt /mnt/home /mnt/home_lfs /mnt/storage /mnt/trash
7. 故障排查
如果 RAID 组装失败
检查成员设备上的 RAID 元数据:
sudo mdadm --examine /dev/nvme1n1p3 /dev/nvme3n1p3
检查当前内核对 RAID 设备的视图:
cat /proc/mdstat
lsblk -f
如果该阵列之前是用 mdadm 创建的,优先从现有元数据组装。恢复过程中应避免使用 mdadm --create,除非你完全了解原始 RAID 级别、成员顺序、chunk 大小、元数据版本和设备数量。错误的 --create 命令可能会破坏对数据的访问。
如果你确定正在重建完全相同的原始 RAID-0 定义,命令会类似这样:
# Dangerous during recovery unless the original layout is known exactly
sudo mdadm --create /dev/md0 --level=0 --raid-devices=2 /dev/nvme1n1p3 /dev/nvme3n1p3
如果找不到 LVM 卷
# Scan physical devices for LVM metadata
sudo pvscan
# Force a volume group scan and create missing device nodes
sudo vgscan --mknodes
# Check a specific volume group
sudo vgdisplay vg_name
如果物理卷位于 RAID 阵列内部,请在重新扫描 LVM 之前,确认 /dev/md0 或正确的 /dev/md/* 设备已经存在。
如果卷无法挂载
# Check the filesystem type
sudo file -s /dev/mapper/vg_name-lv_name
sudo blkid /dev/mapper/vg_name-lv_name
# Check kernel messages for mount errors
dmesg | tail -n 50
只有在确认设备和文件系统类型正确之后,才运行文件系统修复:
# For ext filesystems, use the matching logical volume path
sudo fsck -f /dev/mapper/vg_name-lv_name
对于 XFS,请使用 xfs_repair 而不是 fsck:
sudo xfs_repair /dev/mapper/vg_name-lv_name
8. 快速恢复命令
快速恢复时,最小命令集为:
sudo apt-get update && sudo apt-get install -y mdadm lvm2
sudo mdadm --assemble --scan
sudo vgscan
sudo vgchange -ay
sudo lvs -a
lsblk -f
# Create mount points and mount volumes as needed
对于在 nvme1n1p3 和 nvme3n1p3 上使用 RAID-0,并且包含 LVM 卷组 vg_home、vg_home_lfs、vg_storage 和 vg_trash 的特定配置,只要 RAID 元数据和 LVM 元数据仍然完整,这些命令应能在系统重装后恢复存储设置。
在向磁盘写入任何内容之前,请根据你的实际设置调整设备名称、逻辑卷名称、文件系统类型和挂载点。
