Files
lislgosms/docs/preprod-data-disk-stage1-20260831.md
T

5.2 KiB
Raw Blame History

预生产数据盘第一阶段(2026-08-31)

本文件保留第一阶段的实施证据与当时状态。长期目录分工、后续部署约束和待实施规划统一维护于部署手册的“预生产磁盘与目录规划”;更新规划不表示第二阶段已实施。

授权与范围

  • 主机:8.160.169.106:12022。用户授权现在执行第一阶段,第二阶段等待今晚明确指令,不自动执行、不设定时迁移。
  • 仅初始化独立100GiB数据盘、挂载 /data、迁移现有版本备份及其目录中的操作记录、设置缺盘保护。
  • 当前代码、上一个版本运行目录、PostgreSQL、Redis、MinIO的运行数据仍在系统盘;未改业务配置、未重启业务服务、未发送或重投短信。

磁盘与挂载

  • 系统盘:/dev/nvme0n160GiB;根分区 /dev/nvme0n1p2
  • 数据盘设备标识:/dev/disk/by-id/nvme-Alibaba_Cloud_Elastic_Block_Storage_0jli8w4nwo7s3niwyqz0,当时解析为 /dev/nvme1n1107374182400字节。
  • 初始化前已核对设备标识、容量、无分区、无挂载、无holders、无打开设备描述符;只读 wipefs --no-act 未报告签名,首尾及中间采样为零。采样不能证明全盘无任何历史内容;本次依据用户明确授权初始化该数据盘。
  • GPT分区 /dev/nvme1n1p1ext4,标签 cmpp-data,保留块1%。UUIDef4ee3bb-a19b-4aeb-b00c-aa2b995611c2
  • /etc/fstab 新增:
UUID=ef4ee3bb-a19b-4aeb-b00c-aa2b995611c2 /data ext4 defaults,nofail,nodev,nosuid,x-systemd.device-timeout=10s 0 2
  • 执行了 systemctl daemon-reloaddata.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可读性通过。未执行数据库恢复演练。
  • 原路径实际写入探针确认落在数据盘,探针已删除。

后续备份规则

备份脚本必须先执行以下检查,失败就终止,不允许自动改写到系统盘:

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项服务activeMainPID均与操作前一致。
  • 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 <device>,不要复用错误的 -o TYPE 参数。
  • 第二阶段未开始。收到用户明确指令后重新核对业务状态、数据增长、持久化配置及恢复资产,再确定数据库/Redis/MinIO一致性迁移与切换窗口;本次授权不延伸到第二阶段。