Skip to content

[P1][Storage][Fix] 单父目录部署与原生 CE 升级/恢复验收 #33

Open

Description

@servicememeai

目标与职责(Docker / 部署)

在已有 V2 自动本地布局上,验证单一父目录挂载、新装与原有 Seafile CE 升级的部署、预检、恢复合同;不为每个库独立设置 Compose 卷或运行一套分配服务。

既有成果

  • deploy/compose/docker-compose.auto-library-storage.yml 已为主服务/worker 绑定 CF_LIBRARY_STORAGE_HOST_DIR 到一个父目录。
  • scripts/scripts_cf14.0/library_storage.py 与 Hub storage-reconcile 已支持原生事实预检和显式配置切换。
  • tests/test_v06_default_library_storage.py、tests/test_library_storage_config.py 已覆盖部分配置合同。

规划改进

  1. 新装默认本地、单父目录、多库自动隔离;拒绝静默创建不存在的宿主挂载或把旧存储改绑到空目录。
  2. 现有 CE 安装默认原地升级:检测当前布局与 RepoStorageId,dry-run/备份/明确升级/回滚指引;不默认迁移原生库存量对象、UUID 或物理路径。
  3. 对显式 repo_key 场景验证 C/Go/Python/GC/fsck 路由一致,离线导出/备份/恢复与跨设备本地暂存正确;不手改原生对象目录数据。
  4. 默认部署无 S3 依赖;既有外部/S3 后端的配置和已分配库绝不被 local 默认覆盖。

验收

  • 一处父目录挂载、多库/旧库并存、失效挂载安全拒绝、备份恢复文件/版本 SHA、明确停写和回滚;
  • 固定 Server/Hub/Docker SHA、镜像与部署配置版本,区分 unit/CI/实际容器证据;
  • 文档/Issue 不允许直接触发生产运行数据迁移或全量构建。

参考:Compose overlay · storage bootstrap。

跨仓协作(仅公开通用工程 Issue)

各仓维护自己的实现/验收,任何交叉协调不新增私有项目依赖。

Activity

  1. servicememeai commented on Oct 24, 2026

    @servicememeai
    Author

    已提交备份缺陷修复 PR #36:离线 snapshot/restore 包含 data/libraries,拒绝外部非默认根、缺失的 V2 管理根,增加合成回归用例。静态 CI 通过;真实 Docker 停写/恢复与新老库字节校验仍待完成。

  2. servicememeai commented on Oct 24, 2026

    @servicememeai
    Author

    本轮审查补充:检查 Python seafobj 与当前 V2 local-only 模式的路由一致性。 patches/seafobj/automatic-local-storage.patch 的 AutoLocalStores 仅从 self.seafile_cfg.multi_backend_cfg 中读取 is_auto 模板;但现行 library_storage.py::_render_auto 明确写 enable_storage_classes=false 和 native filesystem。尚不能证明 Seahub/seafobj 在这种模式下会按 cf_library_storage 自动选择新库目录。请增加真实 Python 对象读取或触达 Python seafobj 的调用路径验收(同时覆盖 C/Go 读写、fsck/GC/离线导出),不要仅用手工构造的 auto-template 单元测试宣布全栈路径兼容。如 Python 路径实际上不使用 seafobj,则记录真实调用证据并明确移除/限定无用补丁。

  3. servicememeai commented on Oct 24, 2026

    @servicememeai
    Author

    2026-10-24 离线单库运维切片已提交:Docker PR #40。不依赖 CloudFile Web/Hub/SQL,基于 Seafile CE14 既有 storage/{commits,fs,blocks}/<repo_id> 识别原生库与 <repo_key>/storage/...;明确只支持 inspect --repo-id(只读定位)、export --repo-id --output-dir(显式调用原生 seaf-fsck --export)、verify-export --repo-id(显式检查已导出文件,可选哈希)。不同物理位置出现相同 UUID 时拒绝猜测,无全库批量操作,无自动备份与复制。

    已核实原生 server/gc/seaf-fsck.c 在 --export 时 need_db=false,因此可借临时标准 Seafile 对象视图离线导出而无需自行解释 Commit/FS/Block。针对性 unittest 与 Quick Source Checks 已通过;完整原生 CE14 二进制 + 真实库验收待做。

    先前 Docker PR #36 已改为 Draft 并缩小为“原生 CE 整实例备份必须明确 --legacy-ce-only,发现 V2 管理目录拒绝”;不再将 data/libraries 默认复制到全实例快照。不将备份启动嵌入 Docker / Server 默认启动路径。

  4. servicememeai commented on Oct 24, 2026

    @servicememeai
    Author

    已提交 Docker Draft #42:沿用 V2 默认 UUID 外层目录、单父目录挂载;真新装/正常 V2 重启不再主动全库 reconcile,只有已有 Seafile CE 明确转换才执行原预检。真实 Docker Compose 配置及 Python 单元测试 Actions #40090924889 通过;不会自动迁移、备份或改动已有 V2 自定义 key 目录。后续联合 CE14 服务/GC/fsck/恢复验收前不合并。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions