# 预生产数据盘第一阶段(2026-08-31) 本文件保留第一阶段的实施证据与当时状态。长期目录分工、后续部署约束和待实施规划统一维护于[部署手册的“预生产磁盘与目录规划”](production-deployment.md#预生产磁盘与目录规划);更新规划不表示第二阶段已实施。 ## 授权与范围 - 主机:`8.160.169.106:12022`。用户授权现在执行第一阶段,第二阶段等待今晚明确指令,不自动执行、不设定时迁移。 - 仅初始化独立100GiB数据盘、挂载 `/data`、迁移现有版本备份及其目录中的操作记录、设置缺盘保护。 - 当前代码、上一个版本运行目录、PostgreSQL、Redis、MinIO的运行数据仍在系统盘;未改业务配置、未重启业务服务、未发送或重投短信。 ## 磁盘与挂载 - 系统盘:`/dev/nvme0n1`,60GiB;根分区 `/dev/nvme0n1p2`。 - 数据盘设备标识:`/dev/disk/by-id/nvme-Alibaba_Cloud_Elastic_Block_Storage_0jli8w4nwo7s3niwyqz0`,当时解析为 `/dev/nvme1n1`,107374182400字节。 - 初始化前已核对设备标识、容量、无分区、无挂载、无holders、无打开设备描述符;只读 `wipefs --no-act` 未报告签名,首尾及中间采样为零。采样不能证明全盘无任何历史内容;本次依据用户明确授权初始化该数据盘。 - GPT分区 `/dev/nvme1n1p1`,ext4,标签 `cmpp-data`,保留块1%。UUID:`ef4ee3bb-a19b-4aeb-b00c-aa2b995611c2`。 - `/etc/fstab` 新增: ```fstab UUID=ef4ee3bb-a19b-4aeb-b00c-aa2b995611c2 /data ext4 defaults,nofail,nodev,nosuid,x-systemd.device-timeout=10s 0 2 ``` - 执行了 `systemctl daemon-reload` 和 `data.mount` 启停验证,没有重启服务器或业务服务。最终 `findmnt --verify --verbose` 无错误、无警告;尚未通过整机重启验证。 - 系统盘上未挂载时的空 `/data` 目录设置 immutable 属性。实际数据盘挂载后正常可写;缺盘时即使root也不能直接向空挂载目录创建文件,防止备份回落系统盘。不得移除此保护或在缺盘时重新创建备份入口。 ## 备份入口与完整性 - 固定入口:`/opt/cmpp-platform-backups -> /data/cmpp-platform-backups`。 - 仅保留上一版本 `4d526b83abe73a495945137e88fd7b679565d0bf` 的恢复点 `preprod-protocol-flush-fix-20260830T135502Z`,以及既有 `operations` 操作记录。上一个版本的运行目录 `/opt/cmpp-platform.previous-protocol-flush-20260830T135712Z` 未迁移。 - 复制使用低I/O优先级并限速10MiB/s;对21个文件/目录条目核对全部文件SHA-256、属主、权限、mtime及扩展属性一致。 - `renameat2(RENAME_EXCHANGE)` 原子切换目录与符号链接;切换前无进程持有源备份路径,切换后再次校验,再删除系统盘的备份副本。 - 原备份 `SHA256SUMS` 全部通过,`pg_restore --list` 和运行目录/系统配置两份tar可读性通过。未执行数据库恢复演练。 - 原路径实际写入探针确认落在数据盘,探针已删除。 ## 后续备份规则 备份脚本必须先执行以下检查,失败就终止,不允许自动改写到系统盘: ```bash set -e /usr/local/sbin/cmpp-backup-storage-check # 后续备份统一写入 /opt/cmpp-platform-backups,实际存储位于 /data。 ``` - 服务器检查脚本核对 `/data` 确实挂载、UUID、磁盘标记、备份目录所在文件系统及读写挂载选项。 - 已实测数据盘卸载时检查失败,直接以root向底层 `/data` 创建目录也失败;重新挂载后恢复正常。 - 本轮未发现引用现有备份入口或 `pg_dump` 的cron/systemd备份作业;没有新建自动备份计划。新增发布/备份脚本应显式调用检查,不得另建系统盘备份目录。 - 本机另一块数据盘上的备份仍属于同机备份,不等价于异机灾备。 ## 最终验证(09:35 CST) - 系统盘:59G文件系统,已用13G,可用44G,24%。数据盘:98G文件系统,已用575M,可用97G,1%。 - API、Send Worker、Submit Outbox、Gateway Callback、Protocol Log Worker、Gateway、Security Agent、MinIO、Nginx、PostgreSQL、Redis共11项服务active,MainPID均与操作前一致。 - API/Callback/Gateway健康正常,PostgreSQL接受连接,Redis PONG。09:30开始至最终检查的所选8项服务error级journal计数0;未据此声称已完成真实短信端到端测试。 - `/opt/cmpp-platform`、`/var/lib/pgsql`、`/var/lib/redis`、`/var/lib/minio` 均仍位于系统盘。 - `.deployed-commit` 保持 `1a5063a7c635280b912021c42c33a07c99f4c5dd`。 ## 证据与第二阶段 - 服务器配置前副本、UUID和文件校验记录:`/etc/cmpp-platform/storage-stage1-20260831/`。 - 本地证据:`outputs/data-disk-stage1-{baseline,mount,copy,switch,final}-20260831.txt`。 - 初始化脚本中的一次额外 `wipefs` 列筛选调用因本机参数语义不同失败;初始化前独立的只读签名检查及设备检查已完成。后续检查使用 `wipefs --no-act `,不要复用错误的 `-o TYPE` 参数。 - 第二阶段未开始。收到用户明确指令后重新核对业务状态、数据增长、持久化配置及恢复资产,再确定数据库/Redis/MinIO一致性迁移与切换窗口;本次授权不延伸到第二阶段。