# 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: <SERVER_IP>: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 <SERVER_IP>:/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