从硬件RAID创建到文件系统格式化,香港服务器磁盘阵列如何初始化?
目标状态是:香港机房中的物理磁盘先由硬件 RAID 控制器组合为一个可用的虚拟磁盘,Ubuntu Server 24.04 LTS 只识别该虚拟磁盘;随后在 Linux 中完成 GPT 分区、文件系统格式化、UUID 挂载和启动持久化。上线前还需要确认阵列状态为 Optimal、初始化或一致性检查完成、文件系统可读写,并且重启后仍能自动挂载。
以下流程以 x86_64 架构的 Ubuntu Server 24.04 LTS、systemd 运行环境和一组受硬件 RAID 控制器管理的 SAS/SATA SSD 为例。示例目标为 4 块容量相同的 SSD 创建 RAID10,并将文件系统挂载到 /srv/data。如果服务器使用的是其他控制器、机械硬盘、NVMe RAID 或系统盘本身也位于阵列中,应以控制器界面显示的设备状态和厂商命令格式为准,不要直接套用物理盘路径。
对于需要在香港部署并自行完成阵列初始化的业务,A5数据提供多种物理服务器硬件基础。香港存储系列可提供四块14TB企业级机械硬盘与H730控制器组合,适合大容量文件、备份和归档场景;同时覆盖SSD、NVMe及Xeon Gold、AMD EPYC等配置,可为网站、数据库、业务后台和多任务应用搭建匹配的数据存储环境。
一、准备条件和上线目标
1. 确认本次初始化的边界
硬件 RAID 初始化通常包含两层操作:
- 在 RAID 控制器层创建 Virtual Disk,也称逻辑磁盘或虚拟磁盘。
- 在操作系统层对 Virtual Disk 分区、格式化并挂载。
操作系统看到的通常是一个逻辑磁盘,而不是 RAID 后面的每一块物理盘。比如 4 块物理盘创建 RAID10 后,Ubuntu 可能只显示一个 /dev/sdb,这属于正常现象。

本文的示例环境如下:
| 项目 | 示例值 |
|---|---|
| 操作系统 | Ubuntu Server 24.04 LTS x86_64 |
| 启动方式 | UEFI + GPT |
| RAID 类型 | 硬件 RAID10 |
| 物理磁盘 | 4 块容量相同的 SAS/SATA SSD |
| 文件系统 | ext4,XFS 作为可选方案 |
| 挂载点 | /srv/data |
| 服务器运行环境 | systemd,非容器化主机数据目录 |
| 上线目标 | RAID 状态正常、数据卷可读写、重启后自动挂载 |
如果操作系统也需要安装在 RAID 上,应先在控制器中创建系统盘对应的 RAID1 或 RAID10 Virtual Disk,再从 UEFI 启动安装介质。安装器中选择的是 RAID 虚拟磁盘,而不是单独的物理盘。
2. 先确定阵列用途
创建前需要明确阵列是用于系统盘、应用数据、数据库,还是备份缓存。不同用途的 RAID 级别和容量取舍不同。
| RAID 级别 | 最少磁盘数 | 可用容量的典型比例 | 故障容忍边界 | 常见用途 |
|---|---|---|---|---|
| RAID1 | 2 | 约 50% | 同一镜像组通常可坏 1 块 | 系统盘、配置和小型业务 |
| RAID10 | 4,通常为偶数 | 约 50% | 取决于故障盘是否位于同一镜像组 | 数据库、虚拟机、高并发读写 |
| RAID5 | 3 | 约为总容量减 1 块 | 可坏 1 块 | 容量优先、写入压力适中的场景 |
| RAID6 | 4 | 约为总容量减 2 块 | 可坏 2 块 | 大容量数据、重建风险较高的场景 |
RAID 不是备份。阵列可以应对部分磁盘故障,但无法替代异地备份、版本备份或对象存储备份。控制器故障、误删除、勒索软件、文件系统损坏和配置误操作仍可能影响整个 Virtual Disk。
3. 检查远程维护和回滚条件
香港服务器通常通过 IPMI、远程 KVM 或云平台控制台进行重启和配置。开始前应确认:
- 能够进入 BIOS/UEFI 或 RAID 控制器管理界面。
- 至少保留一个可用的远程控制台,避免阵列创建后无法远程启动。
- 已保存原有数据的完整备份,并确认可以读取备份目录。
- 已记录当前 RAID 配置、物理盘槽位、序列号和控制器型号。
- 已停止写入该阵列的应用、数据库和定时任务。
- 已安排维护窗口,避免在业务高峰期初始化或重建阵列。
- 如果原阵列存在数据,不能执行清除 Foreign Configuration、删除 Virtual Disk 或重新格式化操作。
阵列创建、分区和格式化都会覆盖元数据甚至业务数据。只要不能明确判断磁盘是否为空,就应暂停操作,不要用“初始化后再恢复”的方式试探。
4. 安装主机侧检查工具
在 Ubuntu Server 中可先安装常用检查工具。storcli 通常由 RAID 控制器厂商单独提供,不一定位于 Ubuntu 默认软件源中。
sudo apt update
sudo apt install -y lsscsi smartmontools sg3-utils sysstat
如果计划使用 XFS,再安装对应工具:
sudo apt install -y xfsprogs
记录当前设备和控制器信息:
sudo lspci -nn | grep -Ei 'raid|sas|scsi'
sudo lsblk -e7 -o NAME,KNAME,PATH,MODEL,SERIAL,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo lsscsi -g
sudo dmesg -T | grep -Ei 'raid|megaraid|scsi|sas|error|fail'
这里的输出只用于识别环境。不要因为看到某个 /dev/sdX 就立即执行 parted 或 mkfs。
二、在硬件 RAID 控制器中创建阵列
1. 进入控制器管理界面
重启服务器,在 POST 阶段根据控制器提示进入管理界面。不同品牌和固件版本可能使用独立按键、UEFI Storage 菜单或远程管理页面,具体入口以屏幕提示为准。
进入后依次确认:
- 控制器本身状态正常。
- 目标物理盘数量、容量、接口类型与规划一致。
- 物理盘状态为可配置或 Unconfigured Good。
- 没有正在进行的重建、预警或介质错误。
- 控制器缓存保护模块处于正常状态。
- 没有需要处理的 Foreign Configuration。
如果看到 Foreign Configuration,先确认这些磁盘是否曾属于旧服务器或旧阵列。只有在已确认数据不需要保留,并且完成备份和配置记录后,才可以清除外部配置。未知来源的 Foreign Configuration 不应直接执行 Clear。
2. 选择 RAID 级别和阵列参数
以 4 块相同 SSD 创建 RAID10 为例,在控制器界面中选择:
- RAID Level:RAID10。
- 物理盘:4 块目标 SSD,优先选择容量和型号一致的磁盘。
- Virtual Disk:创建一个逻辑磁盘。
- 容量:使用全部容量,或按业务规划划分系统盘和数据盘。
- Stripe Size:常见值包括 256 KiB、512 KiB 等,具体根据业务 I/O 模式和控制器建议选择。
- Read Policy:通常保留控制器推荐值,数据库等随机访问业务不要仅凭经验强行修改。
- Write Policy:只有缓存保护模块正常时才考虑 Write Back;电池或闪存保护异常时应使用 Write Through。
- Hot Spare:如有同型号或兼容容量的备用盘,可配置专用或全局热备盘。
写回缓存依赖控制器缓存保护。没有电池、闪存缓存保护或保护状态异常时,强制启用 Write Back 可能在掉电时丢失尚未落盘的数据。远程机房还应确认服务器接入了可靠的供电和带外管理。
3. 初始化方式
控制器一般会提供 Fast Initialization、Full Initialization、Background Initialization 或类似选项。
- Fast Initialization 主要清理逻辑元数据,开始速度较快。
- Full Initialization 会对更大范围进行初始化或校验,耗时更长。
- Background Initialization 可能允许阵列提前呈现,但会持续占用磁盘和控制器资源。
- Consistency Check 用于检查镜像或校验信息的一致性,具体行为取决于 RAID 级别和控制器。
如果阵列存放生产数据,不应只因为 Virtual Disk 已经出现就立即上线。至少应等待控制器状态恢复为 Optimal,并确认初始化、重建或一致性检查没有错误。初始化期间性能下降属于常见现象,但持续出现介质错误、掉盘或控制器告警时应停止上线计划。
4. 使用 StorCLI 查询或创建
部分 Broadcom/LSI 系列控制器可以通过 StorCLI 管理。命令名称、安装路径、控制器编号和物理盘地址会因版本而变化,以下命令只适用于已安装且可执行的 StorCLI 环境。
先查看控制器和物理盘:
sudo storcli64 /c0 show
sudo storcli64 /c0/eall/sall show
sudo storcli64 /c0 show all
输出中的 c0 表示控制器编号,EID:Slt 或类似字段表示机箱和槽位。确认目标盘后,再查看缓存保护状态:
sudo storcli64 /c0/bbu show
sudo storcli64 /c0/cv show
某些版本不支持其中一个子命令,遇到“不支持”时应使用控制器界面或该版本对应的命令帮助,不要据此判断缓存保护一定异常。
以下是使用 4 块指定槽位创建 RAID10 的示例。32:0 至 32:3 只是示例地址,必须替换为上一步查询到的实际机箱号和槽位:
sudo storcli64 /c0 add vd type=raid10 size=all drives=32:0,32:1,32:2,32:3
有些 StorCLI 版本将 RAID10 写成 r10,或要求使用不同的磁盘列表格式。执行创建前可先查看帮助:
sudo storcli64 /c0 add vd help
创建后检查 Virtual Disk:
sudo storcli64 /c0/v0 show all
sudo storcli64 /c0/eall/sall show
删除 Virtual Disk、清除 Foreign Configuration 或强制初始化属于不可逆的高风险操作。命令格式也因版本不同而变化,因此不建议在没有确认数据为空的情况下直接复制删除命令。对于新购空盘,优先使用控制器管理界面逐项确认后操作,并截取配置页面作为回滚记录。
5. 设置启动顺序
如果 RAID Virtual Disk 承载操作系统:
- 将系统 Virtual Disk 设置为第一启动设备。
- 使用 UEFI 启动方式。
- 使用 GPT 分区表安装 Ubuntu Server。
- 在安装器中核对磁盘容量和控制器提供的逻辑磁盘名称。
- 不要把同一控制器后面的单独物理盘当成系统盘。
如果操作系统装在独立系统盘,数据 RAID 可以在系统启动后创建,也可以提前创建。无论哪种方式,都应确保系统盘和数据 Virtual Disk 的容量、序列信息能够区分。
三、在 Ubuntu 中识别 RAID 虚拟磁盘
1. 重启后确认系统只看到预期逻辑盘
控制器配置完成后重启服务器:
sudo reboot
系统恢复后检查块设备:
sudo lsblk -e7 -o NAME,KNAME,PATH,MODEL,SERIAL,SIZE,TYPE,FSTYPE,MOUNTPOINTS
sudo lsscsi -g
sudo dmesg -T | grep -Ei 'raid|megaraid|scsi|sas|error|fail'
正常情况下,系统会看到一个容量接近 RAID10 可用容量的逻辑磁盘。不要要求操作系统显示 4 块独立磁盘;硬件 RAID 的目的就是由控制器对物理盘进行抽象。
同时检查控制器状态:
sudo storcli64 /c0/v0 show all
sudo storcli64 /c0 show
只有在 Virtual Disk 为 Optimal、没有 Failed 或 Degraded 物理盘,并且控制器没有持续报错时,才进入分区和格式化阶段。
2. 使用稳定路径识别目标磁盘
Linux 中的 /dev/sda、/dev/sdb 可能因启动顺序、控制器枚举顺序或设备变化而改变。分区和挂载前,应通过容量、型号、序列号和当前挂载点共同确认目标设备。
查看持久化设备路径:
ls -l /dev/disk/by-id/
选定目标 Virtual Disk 后,将实际路径写入变量。下面的路径是占位示例,需要替换为服务器实际存在的链接:
export RAID_DISK="/dev/disk/by-id/scsi-REPLACE_WITH_VIRTUAL_DISK_ID"
readlink -f "$RAID_DISK"
sudo blockdev --getsize64 "$RAID_DISK"
sudo lsblk -f "$RAID_DISK"
如果 readlink -f 指向了系统盘、已有业务盘或容量不符合规划,应立即停止。不要继续执行分区命令。
四、创建 GPT 分区并格式化文件系统
1. 先确认没有旧数据
分区表和文件系统操作会覆盖目标逻辑磁盘上的结构。操作前再次检查挂载状态和已有签名:
sudo findmnt
sudo lsblk -f "$RAID_DISK"
sudo wipefs -n "$RAID_DISK"
wipefs -n 只显示签名,不会删除数据。只有在已确认目标 Virtual Disk 为空、备份有效且需要清理旧签名时,才考虑使用带 -a 的清理命令。对于已有业务数据,不能通过清理签名来“修复识别问题”。

2. 创建 GPT 和数据分区
以下命令会重新建立 GPT 分区表,适用于已确认为空的新建 RAID Virtual Disk:
sudo parted -s "$RAID_DISK" mklabel gpt
sudo parted -s "$RAID_DISK" mkpart primary 1MiB 100%
sudo partprobe "$RAID_DISK"
sudo udevadm settle
sudo lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS "$RAID_DISK"
从持久化路径生成第一分区路径:
export RAID_PART="${RAID_DISK}-part1"
readlink -f "$RAID_PART"
sudo blockdev --getsize64 "$RAID_PART"
如果系统没有立即创建 -part1 链接,可以通过 lsblk -o PATH 找到实际分区路径,再将 RAID_PART 设置为该路径。不要因为路径未出现就重复执行 mklabel。
3. 选择文件系统
对于 Ubuntu Server 数据目录,ext4 兼容性较好,恢复工具和运维人员熟悉程度也较高。XFS 适合大容量文件系统和较大规模的连续 I/O,但需要使用 XFS 专用工具维护。
两种命令只能选择一种执行,不能连续执行:
sudo mkfs.ext4 -F -L hkdata "$RAID_PART"
或者:
sudo mkfs.xfs -f -L hkdata "$RAID_PART"
-F 和 -f 都可能强制覆盖现有文件系统。执行前再次确认 RAID_PART 指向的是新建且为空的 Virtual Disk 分区。文件系统类型一旦确定,后续检查工具必须匹配:ext4 使用 e2fsck,XFS 使用 xfs_repair。
4. 挂载 ext4 数据卷
先创建挂载点并备份 /etc/fstab:
sudo mkdir -p /srv/data
sudo cp -a /etc/fstab "/etc/fstab.bak.$(date +%Y%m%d-%H%M%S)"
获取 UUID:
sudo blkid "$RAID_PART"
export RAID_UUID="$(sudo blkid -s UUID -o value "$RAID_PART")"
printf '%s\n' "$RAID_UUID"
确认 /etc/fstab 中没有已有的 /srv/data 配置:
grep -nE '[[:space:]]/srv/data[[:space:]]' /etc/fstab || true
确认没有重复项后追加 ext4 配置:
printf 'UUID=%s /srv/data ext4 defaults,noatime 0 2\n' "$RAID_UUID" | sudo tee -a /etc/fstab
验证语法并挂载:
sudo findmnt --verify
sudo mount /srv/data
sudo findmnt -no SOURCE,FSTYPE,OPTIONS,TARGET /srv/data
如果选择 XFS,/etc/fstab 中的文件系统类型和检查字段应改为:
UUID=替换为实际UUID /srv/data xfs defaults,noatime 0 0
修改后执行:
sudo findmnt --verify
sudo mount /srv/data
sudo findmnt -no SOURCE,FSTYPE,OPTIONS,TARGET /srv/data
noatime 可以减少访问时间更新带来的额外写入,但不应随意添加 nobarrier 等可能削弱数据保护的选项。SSD 的 discard/TRIM 是否可透传到物理盘,取决于 RAID 控制器和固件,不能仅凭文件系统支持就直接启用。
5. 设置业务权限
挂载点初始通常由 root 管理。应用使用前,应根据实际服务账户设置目录所有者和权限,不能把目录直接开放为全局可写。
先确认服务账户:
id appuser
确认账户存在并且挂载点正确后,再按业务要求调整:
sudo chown appuser:appuser /srv/data
sudo chmod 0750 /srv/data
chown 和 chmod 会影响应用访问权限。若多个服务共享目录,应先确认各服务的用户组、读写范围和备份账户,再决定权限,不要使用 chmod -R 777 作为通用修复方式。
五、结果验证和上线检查
1. 验证容量、文件系统和挂载关系
执行以下检查:
sudo lsblk -f
sudo findmnt /srv/data
df -hT /srv/data
df -ih /srv/data
sudo stat -f /srv/data
lsblk 通常以二进制单位显示容量,df -h 也采用便于阅读的二进制单位;如果需要十进制容量,可使用:
df -HT /srv/data
以 4 块 1.92 TB 物理盘创建 RAID10 为例,未计入文件系统和控制器保留空间时,可用原始容量约为:
- 4 × 1.92 TB = 7.68 TB 物理总容量。
- RAID10 约使用一半镜像容量:7.68 TB ÷ 2 = 3.84 TB。
- 按 1 TB = 10^12 字节换算,3.84 TB 约等于 3.49 TiB。
- 文件系统元数据、分区对齐和控制器保留空间会使实际可用空间略低于该值。
因此,看到 df -h 显示约 3.4T 到 3.5T,并不代表 RAID 容量异常。关键是同时核对物理盘数量、控制器 Virtual Disk 容量和文件系统容量。
2. 验证读写能力
下面的测试会向数据目录写入约 256 MiB 文件,只适合在空目录或维护窗口执行,不应在生产业务目录中随意运行:
sudo dd if=/dev/zero of=/srv/data/.raid-init-test bs=1M count=256 oflag=direct status=progress
sudo sync
sudo sha256sum /srv/data/.raid-init-test
sudo rm -f -- /srv/data/.raid-init-test
检查内核和系统日志:
sudo journalctl -k -b --no-pager -p warning
sudo dmesg -T | tail -n 100
如果出现 I/O error、媒体错误、文件系统重新挂载为只读、SCSI reset 或控制器异常,应停止业务上线,先检查 RAID 状态和物理盘健康情况。
3. 验证重启后的自动挂载
在确认没有生产任务运行、并且 /etc/fstab 已备份后,执行一次启动配置验证:
sudo mount -a -v
sudo findmnt --verify
sudo findmnt /srv/data
确认挂载来源是预期 UUID,而不是临时手工挂载的 /dev/sdX:
sudo findmnt -no SOURCE,FSTYPE,OPTIONS,TARGET /srv/data
若条件允许,在维护窗口内重启:
sudo reboot
重启后再次检查:
sudo lsblk -f
sudo findmnt /srv/data
df -hT /srv/data
sudo storcli64 /c0/v0 show all
硬件 RAID 状态和 Linux 挂载状态必须同时正常。只有目录可访问但 Virtual Disk 处于 Degraded,或阵列显示 Optimal 但 /srv/data 未挂载,都不能视为验收通过。
4. 观察初始化和性能影响
查看控制器后台任务:
sudo storcli64 /c0 show
sudo storcli64 /c0/v0 show all
查看系统 I/O:
iostat -xz 1 5
初始化、重建和一致性检查期间,磁盘利用率较高、延迟增加是常见现象。不要在这些任务进行时用业务基准测试作为最终性能结论。应等待控制器后台任务结束,再根据实际业务模型测试随机读写、顺序读写和并发延迟。
六、常见失败处理
1. Ubuntu 只看到单块物理盘,未看到预期容量
可能原因包括:
- RAID 控制器没有创建 Virtual Disk。
- 控制器处于 HBA、JBOD 或直通模式。
- 创建阵列后尚未重启或系统未重新枚举设备。
- 控制器驱动、固件或硬件本身存在问题。
- 误把系统盘或其他逻辑盘当成目标盘。
先查看控制器和内核日志:
sudo lspci -nn | grep -Ei 'raid|sas|scsi'
sudo lsscsi -g
sudo dmesg -T | grep -Ei 'raid|megaraid|scsi|sas|error|fail'
sudo lsblk -e7 -o NAME,PATH,MODEL,SERIAL,SIZE,TYPE,FSTYPE,MOUNTPOINTS
在问题没有确认前,不要对任何新出现的设备执行 mkfs。硬件 RAID 模式下,系统通常不应该看到阵列成员盘的独立业务容量。
2. 控制器显示 Foreign Configuration
Foreign Configuration 可能表示磁盘保留了旧阵列元数据,也可能是控制器更换后发现了原有阵列。处理顺序应为:
- 记录控制器型号、磁盘槽位、序列号和当前状态。
- 判断这些磁盘是否有历史业务数据。
- 如果需要保留,优先选择 Import 或恢复原配置的路径。
- 如果确认是空盘或旧配置无业务价值,再考虑 Clear。
- 清除后重新创建阵列,并重新执行初始化和验证。
不要在数据来源不明时选择 Clear Foreign。清除后可能无法直接恢复原来的阵列布局。
3. Virtual Disk 处于 Degraded 或正在重建
先查看具体故障盘和后台任务:
sudo storcli64 /c0 show
sudo storcli64 /c0/eall/sall show
sudo storcli64 /c0/v0 show all
处理原则如下:

- 正在重建时,不要随意重启、删除阵列或强制上线故障盘。
- 确认故障盘槽位后,按控制器和服务器厂商要求更换。
- 替换盘容量不能小于原成员盘,接口和兼容性也要满足控制器要求。
- 不要把状态为 Foreign、Unconfigured Bad 或已有数据的磁盘强制加入阵列。
- 重建期间降低非必要 I/O,等待状态恢复为 Optimal。
- 如果同一镜像组内又出现第二块故障盘,应停止写入并优先处理备份和恢复方案。
RAID 重建期间仍然可以读写,不代表阵列已经恢复到正常保护水平。
4. mount -a 失败或重启后未挂载
常见原因是 UUID 拼写错误、文件系统类型写错、挂载点不存在或 /etc/fstab 出现重复配置。
检查实际 UUID:
sudo blkid "$RAID_PART"
sudo grep -nE '[[:space:]]/srv/data[[:space:]]' /etc/fstab
sudo findmnt --verify
查看挂载错误:
sudo journalctl -b --no-pager | grep -Ei 'mount|fstab|srv/data|ext4|xfs'
不要因为挂载失败就重新执行 mkfs。如果只是配置错误,应修正 /etc/fstab 后再测试:
sudo mount -a
sudo findmnt /srv/data
5. 文件系统报错或被挂载为只读
先停止业务写入并检查控制器状态:
sudo storcli64 /c0/v0 show all
sudo journalctl -k -b --no-pager | grep -Ei 'I/O error|read-only|ext4|xfs|scsi'
如果是 ext4,必须先卸载,再进行只读检查或修复:
sudo umount /srv/data
sudo e2fsck -f -n "$RAID_PART"
-n 用于先进行不修改检查。确认有备份并明确需要修复后,再由维护人员执行实际修复。对于 XFS,不能使用 e2fsck,应先卸载并使用:
sudo umount /srv/data
sudo xfs_repair -n "$RAID_PART"
文件系统工具只能处理文件系统层的问题,不能代替 RAID 重建。若控制器仍处于 Degraded、持续报告介质错误或发生 I/O 超时,应先解决硬件和阵列状态。
6. 阵列可用但性能明显偏低
先排除初始化、重建或一致性检查正在运行:
sudo storcli64 /c0 show all
sudo iostat -xz 1 10
重点检查:
- RAID 是否仍在后台初始化或重建。
- 写缓存是否因保护模块异常而自动切换为 Write Through。
- 是否使用了不匹配的物理盘。
- 是否在阵列上运行了不适合的随机写入负载。
- 文件系统是否已接近满容量。
- 控制器和磁盘是否存在错误重试或链路重置。
不要为了追求测试结果,关闭缓存保护、强制启用无保护写回或降低数据一致性保护。
七、回滚方案
1. 尚未格式化时回滚
如果只是完成了 RAID Virtual Disk 创建,但尚未分区、格式化和写入业务数据:
- 保留控制器配置截图和物理盘槽位记录。
- 通过控制器界面删除刚创建的空 Virtual Disk,或重新调整 RAID 级别。
- 只有确认该 Virtual Disk 没有业务数据时,才可以执行删除。
- 如果原先存在旧阵列,不得把“重新创建”当作恢复原阵列的方法。
删除 Virtual Disk 会使其上的数据不可用。回滚到旧阵列的正确方式是恢复原有配置或从备份恢复,而不是尝试用相同 RAID 级别重新创建一个同名逻辑盘。
2. 已格式化但尚未上线时回滚
如果已经格式化并写入测试文件,但业务尚未使用,可以先恢复挂载配置:
sudo umount /srv/data
ls -lt /etc/fstab.bak.*
选择本次操作前保存的备份文件,替换当前配置:
sudo cp -a /etc/fstab.bak.YYYYMMDD-HHMMSS /etc/fstab
sudo findmnt --verify
如果确认需要撤销整个新建阵列,应在控制器界面删除该空 Virtual Disk,再按新的规划重新创建。删除前必须停止所有可能访问 /srv/data 的服务,并再次确认没有需要保留的数据。
3. 已经写入业务数据时回滚
已有业务数据时,回滚不应通过删除阵列或重新格式化完成。建议采用以下顺序:
- 停止应用和定时写入任务。
- 保留当前控制器配置和系统日志。
- 检查 RAID 是否 Optimal,确认是否存在硬件故障。
- 将可读取数据复制到独立备份介质。
- 在新建且验证通过的阵列上建立临时挂载点。
- 使用备份恢复数据和权限。
- 修改应用配置指向新的挂载点。
- 完成抽样读取、权限和业务功能验证后再恢复服务。
例如,备份已准备在 /backup/data/,目标文件系统已经挂载到 /srv/data,可以使用:
sudo rsync -aHAX --numeric-ids /backup/data/ /srv/data/
恢复前应确认备份路径和目标路径无误。rsync 的源路径末尾斜杠会影响目录层级,执行前应先用小范围目录验证,避免恢复到错误位置。
上线或验收检查清单
上线前逐项确认并保存结果:
- [ ] 已确认 RAID 控制器型号、固件、物理盘槽位和序列号。
- [ ] 已确认本次操作对象为空盘或已有可恢复备份。
- [ ] 已记录原有 RAID 配置,未误清除 Foreign Configuration。
- [ ] RAID 级别、磁盘数量、容量和热备策略符合业务规划。
- [ ] 控制器缓存保护状态正常。
- [ ] Write Back 仅在缓存保护有效时启用。
- [ ] Virtual Disk 状态为 Optimal。
- [ ] 初始化、重建和一致性检查已完成,或已明确不影响上线的维护窗口。
- [ ] Ubuntu 只识别到预期的 RAID Virtual Disk。
- [ ] 已使用 GPT 分区,并确认分区路径不是系统盘或其他业务盘。
- [ ] 已选择正确的 ext4 或 XFS 格式化命令,没有重复执行两种格式化。
- [ ]
/etc/fstab使用 UUID 或其他稳定标识,而不是依赖/dev/sdX。 - [ ]
findmnt --verify通过。 - [ ]
/srv/data能够正常读写,权限符合应用账户要求。 - [ ]
df -hT、df -ih和lsblk -f的容量、文件系统类型一致。 - [ ] 内核日志中没有持续 I/O error、介质错误或控制器重置。
- [ ] 已完成一次
mount -a验证,条件允许时已完成重启后挂载验证。 - [ ] 已保存控制器状态、磁盘状态、分区信息和
/etc/fstab备份。 - [ ] 已确认 RAID 仍不替代独立备份,业务数据已有后续备份计划。



