RAID 和 LVM 恢复指南

本指南概述了在系统重装后,或在任何类似的、需要重新激活存储配置的情况下,恢复软件 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

请根据你的机器调整设备名称。在组装任何阵列之前,使用 lsblkblkid,或安装器/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

对于在 nvme1n1p3nvme3n1p3 上使用 RAID-0,并且包含 LVM 卷组 vg_homevg_home_lfsvg_storagevg_trash 的特定配置,只要 RAID 元数据和 LVM 元数据仍然完整,这些命令应能在系统重装后恢复存储设置。

在向磁盘写入任何内容之前,请根据你的实际设置调整设备名称、逻辑卷名称、文件系统类型和挂载点。

Leave a Reply