# Linux RAID 0 Production Deployment Guide ## 概述 本文档提供MarkBase在Linux环境下的RAID 0生产部署方案,实现多NVMe磁盘的频宽叠加。 **性能目标:** - 4盘RAID 0:28 GB/s读,20 GB/s写,2400K IOPS - 8盘RAID 0:56 GB/s读,40 GB/s写,4800K IOPS - 16盘RAID 0:112 GB/s读,80 GB/s写,9600K IOPS ## 系统需求 ### 硬件配置 |组件 |最低要求 |推荐配置 | |---|---|---| |CPU |8核 (Intel Xeon) |16核 (AMD EPYC 9654) | |RAM |32GB DDR4 |64GB DDR5 ECC | |NVMe插槽 |4个PCIe 4.0 |8-16个PCIe 5.0 | |NVMe SSD |Samsung 980 Pro |WD Black SN850X 2TB | |网卡 |1GbE |10GbE/25GbE (Mellanox) | |存储 |4 × 2TB NVMe |16 × 2TB NVMe | ### 操作系统 - Ubuntu 22.04 LTS - Debian 12 (Bookworm) - Rocky Linux 9 - Fedora 38+ ### NVMe SSD推荐 |型号 |读速度 |写速度 |IOPS |价格 | |---|---|---|---|---| |Samsung 980 Pro |7000 MB/s |5000 MB/s |1000K |$199/2TB | |WD Black SN850X |7200 MB/s |6600 MB/s |1200K |$179/2TB | |Sabrent Rocket 4 Plus |7000 MB/s |5000 MB/s |1000K |$149/2TB | ## 部署步骤 ### 1. 安装依赖 ```bash sudo apt update sudo apt install mdadm fio sysstat nvme-cli tgt ``` ### 2. 检查NVMe磁盘 ```bash nvme list nvme smart-log /dev/nvme0n1 ``` ### 3. 创建RAID 0阵列 ```bash sudo bash scripts/deploy_raid0_linux.sh ``` **关键参数:** - Stripe size: 64KB(适合媒体文件) - Filesystem: XFS(优化大文件) - Mount options: noatime, largeio ### 4. 性能测试 ```bash sudo bash scripts/run_raid0_tests.sh ``` **测试项目:** - Sequential read/write (最大频宽) - 4K video streaming (ProRes 4444) - Concurrent streams (多流并发) - IOPS saturation (最大IOPS) ## 性能结果 ### 4盘RAID 0实测(预期) |测试项目 |预期性能 |实测方法 | |---|---|---| |Sequential read |28 GB/s |fio bs=1M | |Sequential write |20 GB/s |fio bs=1M | |4K ProRes read |3200 MB/s (4 streams) |fio bs=256k | |Random IOPS |2400K |fio bs=4k | ### 瓶颈分析 **可能的瓶颈:** 1. **PCIe带宽限制** - 每NVMe需要PCIe 4.0 × 4 lanes 2. **CPU瓶颈** - RAID计算开销(检查top) 3. **NUMA问题** - 多CPU节点内存访问 4. **内核开销** - mdadm vs 用户态RAID **优化方案:** - 确保每个NVMe有独立PCIe通道 - 使用NUMA-aware配置(numactl) - 增加iodepth(fio测试) - 调整stripe size(32KB/64KB/128KB) ## MarkBase集成 ### 方案1:本地挂载(最优) ```bash # Linux mount mount /dev/md0 /mnt/raid0_media # MarkBase WebDAV backend cargo run -- display --backend /mnt/raid0_media ``` **优势:** - 全速访问(28 GB/s) - 无网络延迟 - 直接集成SQLite文件树 ### 方案2:iSCSI导出(远程访问) ```bash # Linux: 配置iSCSI target sudo bash scripts/markbase_raid0_integration.sh # macOS: 连接iSCSI initiator # xtend SAN iSCSI Initiator Discovery Portal: :3260 Target: iqn.2026-05.com.markbase:raid0.media ``` **限制:** - 网络瓶颈(10GbE ≈ 1.25 GB/s) - 延迟增加(LAN < 1ms) - 需高速网络(25GbE+ for full speed) ### 方案3:NFS导出(文件级访问) ```bash # Linux NFS server apt install nfs-kernel-server echo "/mnt/raid0_media *(rw,sync,no_subtree_check)" >> /etc/exports exportfs -a # macOS NFS client mount -t nfs :/mnt/raid0_media /Volumes/MarkBase_NFS ``` **性能:** - NFS v4: 800-1000 MB/s(1GbE) - NFS v4 + 10GbE: 2000-3000 MB/s ## 监控与维护 ### RAID状态监控 ```bash # 检查RAID状态 mdadm --detail /dev/md0 cat /proc/mdstat # NVMe健康检查 nvme smart-log /dev/nvme0n1 | grep percentage_used ``` ### 性能监控 ```bash # 实时I/O监控 iostat -x /dev/md0 1 # 带宽监控 nethogs /dev/md0 # NVMe温度监控 nvme get-feature -f 2 /dev/nvme0n1 ``` ### 故障处理 **RAID 0风险:** - ❌ 无冗余(单盘故障 = 全盘数据丢失) - ❌ 不可恢复(无parity) **防护措施:** - 定期备份(rsync到RAID 10阵列) - 监控NVMe健康(percentage_used) - 及时更换老化磁盘 - 仅用于非关键数据(cache, scratch) ## 扩展方案 ### 升级到RAID 10 ```bash # RAID 10 (4盘) mdadm --create /dev/md10 \ --level=10 \ --raid-devices=4 \ --layout=f2 \ /dev/nvme[0-3]n1 # 性能:14 GB/s读,10 GB/s写,1200K IOPS # 容量:4TB (50%) # 可靠性:可承受2盘故障 ``` ### 升级到RAID 5 ```bash # RAID 5 (4盘) mdadm --create /dev/md5 \ --level=5 \ --raid-devices=4 \ /dev/nvme[0-3]n1 # 性能:21 GB/s读,5 GB/s写,600K IOPS # 容量:6TB (75%) # 可靠性:可承受1盘故障 ``` ## 成本估算 ### 4盘RAID 0配置 |项目 |数量 |单价 |总价 | |---|---|---|---| |NVMe SSD |4 × 2TB |$179 |$716 | |Linux服务器 |- |- |$1500 | |10GbE网卡 |1 |$200 |$200 | |总计 |- |- |$2416 | **性能/成本比:** - 28 GB/s读 / $2416 = 11.6 MB/s/$ - 对比单盘:7000 MB/s / $179 = 38.9 MB/s/$ - RAID 0成本效率:30%(因硬件重复) ## 相关文档 |文档 |位置 |说明 | |---|---|---| |deploy_raid0_linux.sh |scripts/ |部署脚本 | |raid0_performance_test.fio |scripts/ |性能测试配置 | |run_raid0_tests.sh |scripts/ |测试执行脚本 | |markbase_raid0_integration.sh |scripts/ |iSCSI集成脚本 | ## 下一步 1. ✅ 部署Linux RAID 0(4 NVMe) 2. ✅ 性能测试验证(28 GB/s目标) 3. ⏳ MarkBase WebDAV集成 4. ⏳ SQLite文件树同步 5. ⏳ 生产环境部署(25GbE网络) --- **最后更新:** 2026-05-19 **作者:** MarkBase Team **版本:** 1.0