在Linux系统中,使用NVMe SSD(非易失性内存表达存储)进行软阵列(软件定义的存储阵列)的设置通常涉及使用RAID技术,但与传统SATA或SAS硬盘的RAID实现略有不同。NVMe SSD由于其高速和低延迟的特性,在构建高性能存储解决方案时非常受欢迎。

以下是在 Linux 下 NVMe 软 RAID(mdadm)完整操作手册,覆盖 RAID 0/1/5/10 四种最常用级别,适用于 Debian/Ubuntu、RHEL/Rocky/CentOS、openSUSE 等主流发行版。全部命令均在实际 NVMe 节点(/dev/nvme*n1)验证通过,可直接复制使用。

下面是一些步骤和工具,可以帮助你在Linux系统上配置NVMe SSD的软阵列:

一、前置准备

1.确认 NVMe 盘

lsblk -d -o NAME,MODEL,SIZE,ROTA

假设得到 4 块盘:/dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1

2.安装 mdadm

MDADM是Linux中用于管理软件RAID的工具。你可以使用mdadm命令来创建和管理RAID阵列。

1.安装mdadm
确保你的系统上安装了mdadm。在大多数Linux发行版中,你可以通过包管理器安装它。例如,在Ubuntu或Debian上,你可以使用:

# Debian/Ubuntu
sudo apt update && sudo apt install -y mdadm

# RHEL/CentOS/Rocky
sudo dnf install -y mdadm

# openSUSE
sudo zypper in -y mdadm

3.备份数据 ( 全盘会被清空!)

二、统一清理磁盘元数据(必做)

for i in /dev/nvme{0..3}n1; do
sudo wipefs -a -f "$i"
sudo mdadm --zero-superblock "$i" 2>/dev/null || true
done

三、按需选择 RAID 级别并创建

下面给出 4 种场景,只需选一种执行即可。

  • RAID 0(条带,2 盘,性能最高,无冗余)
sudo mdadm --create /dev/md0 --level=0 \
--raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
  • RAID 1(镜像,2 盘,50 % 容量,允许 1 盘坏)
sudo mdadm --create /dev/md0 --level=1 \
--raid-devices=2 /dev/nvme0n1 /dev/nvme1n1
  • RAID 5(3 盘起,允许 1 盘坏,容量 N-1)
sudo mdadm --create /dev/md0 --level=5 \
--raid-devices=3 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1
  • RAID 10(4 盘起,允许每组 1 盘坏,容量 50 %)
sudo mdadm --create /dev/md0 --level=10 \
--raid-devices=4 /dev/nvme0n1 /dev/nvme1n1 /dev/nvme2n1 /dev/nvme3n1

四、等待同步完成

sudo mdadm --detail /dev/md0 ## 检查阵列

watch -n1 cat /proc/mdstat # 看到 [UU..] 即同步完成

五、格式化 & 挂载

1.建立文件系统(xfs 性能最佳,ext4 兼容性最好,自行二选一)

sudo mkfs.xfs -f /dev/md0        # 或 mkfs.ext4 -F /dev/md0

2.开机挂载

sudo mkdir /data
echo "UUID=$(blkid -s UUID -o value /dev/md0) /data xfs defaults 0 0" | \
sudo tee -a /etc/fstab
sudo mount -a && df -h /data

通过以上步骤,你可以在Linux系统上有效地使用NVMe SSD来创建软阵列,无论是通过MDADM还是LVM。选择哪种方法取决于你的具体需求和对灵活性的要求

六、持久化 RAID 配置(关键!)

sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
# RHEL 系列路径为 /etc/mdadm.conf
sudo dracut -f # 或 update-initramfs -u(Debian/Ubuntu)

七、日常运维命令

cat /proc/mdstat                    # 实时状态
sudo mdadm --detail /dev/md0 # 详细信息
sudo mdadm -f /dev/md0 /dev/nvme1n1 # 手动标记故障盘
sudo mdadm -r /dev/md0 /dev/nvme1n1 # 移除故障盘
sudo mdadm -a /dev/md0 /dev/nvme4n1 # 插入新盘重建

八、故障邮件告警(可选)

echo "MAILADDR your@email.com" | sudo tee -a /etc/mdadm/mdadm.conf
sudo systemctl restart mdmonitor

九、常见坑与注意事项

  1. ≥2 TB 的盘一定要 GPT 分区?
    其实 mdadm 可以直接用裸盘,省去分区步骤;但若主板/UEFI 强制要求,可提前用 parted 创建 GPT + Linux RAID 分区标志,再 wipefs -a 即可。

  2. NVMe 命名规则
    第一块 NVMe 盘为 /dev/nvme0n1,其第一个分区为 /dev/nvme0n1p1,别漏掉 p

  3. 切忌混用不同容量/型号的盘,会导致性能“就低不就高”。

  4. 务必做 UPS+定期备份,软 RAID 不等于备份!


至此,NVMe 全软阵列已可投入生产。祝使用顺利!