Proxmox(pve)添加软raid10阵列存储


安装mdadm工具

apt install mdadm


创建软raid

1.查看系统磁盘

创建前可以通过如下命令查看可用的磁盘:

lsblk

查看磁盘信息

(下面结果中的sda和sdc两个磁盘是我们准备创建RAID 0的两块盘)


2.创建raid

mdadm --create --verbose /dev/md0 --level=10 --raid-devices=8 /dev/nvme{0..7}n1

创建软raid

解读命令

mdadm --create: 创建一个新的 RAID 阵列。

--verbose: 输出详细信息,方便检查和调试。

/dev/md0: 指定 RAID 设备名。

--level=10: RAID 级别,RAID 10 是条带化 (striping) 和镜像 (mirroring) 的结合。

--raid-devices=8: 指定参与 RAID 阵列的设备数量,总共 8 个。

/dev/nvme{0..7}n1: 使用设备名模式指定了 8 个 NVMe 硬盘(如 /dev/nvme0n1 到 /dev/nvme7n1)。

输出解析

layout defaults to n2: RAID 10 的默认布局是 n2,表示每个镜像组有两个设备。

chunk size defaults to 512K: RAID 阵列的块大小默认为 512 KB。

size set to 976630272K: 每个条带(stripe)的总大小设置为 976630272 KB(约 930 GB),具体大小取决于硬盘容量和 RAID 配置。

write-intent bitmap: 自动启用了写意图位图功能,用于加速重建过程。

version 1.2 metadata: 默认使用 1.2 版本的 RAID 元数据。

array /dev/md0 started: RAID 阵列成功创建并启动。


3.查看创建结果

cat /proc/mdstat

查看创建结果

可以看到md0已经创建成功。

关键点解析:

RAID类型:

Personalities : [raid10] 表明这组 RAID 阵列使用的是 RAID 10(1+0),即既有数据镜像,又有数据条带化。

RAID 10 提供了良好的数据冗余和性能。


阵列名称和组成设备:

md0 : active raid10 是阵列名称(md0)。

包含的设备为 nvme0n1 到 nvme7n1,共计 8 块 NVMe SSD。


阵列状态:

[8/8] [UUUUUUUU] 表示阵列有 8 个磁盘([8/8]),所有磁盘均在线并正常工作([UUUUUUUU])。

若某些磁盘离线或故障,U 会被替换为 _。


阵列大小:

3906521088 blocks:整个阵列大小约为 3.91TB(每个 block 通常是 1KB)。


同步进度:

[>....................] 表示阵列正在进行同步操作。

resync = 2.1% 当前同步进度为 2.1%。

finish=316.4min 预计需要约 316.4 分钟完成。

speed=201313K/sec 同步速度约为 201MB/s。


bitmap:

bitmap: 30/30 pages [120KB], 65536KB chunk 说明位图机制被启用,用于跟踪未同步的区域以提高同步效率。


建议与操作:

监控同步进度:

同步操作会影响磁盘 I/O 性能,可以通过 watch cat /proc/mdstat 实时监控进度。

若需要调整同步速度,可以使用以下命令:

echo 50000 > /proc/sys/dev/raid/speed_limit_min
echo 300000 > /proc/sys/dev/raid/speed_limit_max

此命令会将同步速度限制范围调整为 50MB/s 到 300MB/s。


优化性能:

RAID 10 的性能与配置息息相关,例如块大小(512K chunks)。根据实际应用需求(如数据库、文件存储)进行调优。





4.格式化raid

创建完成后会创建一个虚拟设备:/dev/md0,我们格式化:

mkfs.ext4 /dev/md0

格式化raid磁盘



解析输出

命令执行:

mkfs.ext4 /dev/md0

这是在 /dev/md0 设备上格式化为 EXT4 文件系统的命令。

设备信息:

文件系统包含 976630272 个 4KB 块。

有 244162560 个 inode 可供分配文件和目录使用。

文件系统 UUID:

每个文件系统都有唯一的 UUID,在这里是:

34b2527c-f57a-41f0-a2f3-8e82e49abc8b

这个 UUID 可用于挂载配置文件(如 /etc/fstab),避免直接依赖设备名称。

超级块和备份:

超级块用于存储文件系统的元数据(如块组信息、inode 表位置等)。

默认情况下,EXT4 文件系统会在指定的块位置存储超级块备份(例如 32768, 98304 等)。

如果主超级块损坏,可用这些备份进行恢复。

组表和 inode 表:

每个块组分配了 inode 表,用于存储文件/目录信息。

262144 块的日志区 用于支持文件系统的日志功能,确保系统崩溃后数据完整性。





挂载raid

1.手动挂载(手动挂载重启后会失效,文章后面会介绍如何设置开机自动挂载):

mkdir -p /mnt/raid10


# mnt为root权限,因此需要使用sudo来创建

mount /dev/md0 /mnt/raid10


完成挂载后,我们查看当前文件系统

df -h

1.jpg

可以看到我们创建的 md0 已经被挂载到了 /mnt/raid10 ,其空间大小为 3.6T


2.开机自动挂载raid

查询 md0 设备的UUID

blkid /dev/md0

运行结果:

/dev/md0: UUID="34b2527c-f57a-41f0-a2f3-8e82e49abc8b" BLOCK_SIZE="4096" TYPE="ext4"

上面的结果中的UUID后面的字符串即为我们要获取的内容,然后通过 nano 打开配置文件:

nano /etc/fstab

具体配置如下,将下面这行添加到打开的文件末尾即可:

UUID=34b2527c-f57a-41f0-a2f3-8e82e49abc8b /mnt/raid10 ext4 defaults 0 0

(nano说明:添加完成后按Ctrl + x 然后按 Y  然后回车即可)


3.配置 RAID 自动恢复

为了保证系统重启后 RAID 自动组装,执行以下操作:

完成上述命令后为保证下次重启RAID配置自动生效,还需要将RAID信息保存到配置文件。

mdadm --detail --scan >> /etc/mdadm/mdadm.conf



4.验证性能

在 RAID 配置完成后,可以使用工具测试性能:

测试读取速度:

hdparm -tT /dev/md0

测试随机读写性能:使用 fio 工具:

apt install fio -y
fio --name=test --filename=/mnt/raid10/testfile --size=1G --bs=4k --rw=randrw --ioengine=libaio --direct=1 --numjobs=4


PVE添加存储目录

点击 数据中心 - 存储 - 添加 - 目录

添加raid到pve目录

ID填自定义昵称;目录填写我们刚刚挂载的/mnt/raid0目录;内容将全部类型勾选,其他默认即可,如下图:




最后添加成功!如图所示:

已成功添加软raid至pve存储



删除raid

上面的内容已经结束了,下面是如果想删除raid怎么操作:


删除命令


mdadm -D /dev/md0
umount 之前组建的raid
umount /dev/md0

停止raid设备

mdadm -S /dev/md0

删除raid里的所有磁盘


mdadm --misc --zero-superblock /dev/sda
mdadm --misc --zero-superblock /dev/sdc

删除raid和开启启动配置文件中的配置,删除创建时候添加的对应信息


/etc/mdadm/mdadm.conf
/etc/fstab

 



教程来源于飞跃云端,本站作部分修改。