前面发过一个帖子,git fork 200M 的仓库,服务端磁盘占用并不会变大,是怎么做到的,引发了激烈讨论。
然而,故事还没完。
场景是,我们有上亿的 git 仓库,大几百 T ,分布在几十块云盘,这些仓库之间存在深层次的 fork 关系,上亿的仓库可能母仓库就几万个。 那么 fork 关系与其底层的磁盘存储的关系如下: A(位于磁盘 1) -> B(位于磁盘 1) -> C(位于磁盘 2) -> D(位于磁盘 3) -> E(位于磁盘 1) -> F(位于磁盘 2) 假定仓库 A 的大小是 200M ,由于 git 服务端的 alternates 机制存在,同一块磁盘会通过硬链接节约磁盘空间,整体这 6 个仓库在几块盘上的占用空间只有 600M ,而不是 200*6=1200M
现在的问题是我想做冷热仓库的分离,对于上亿的 git 仓库可能就几百万的活跃,但是如果按照时间一刀切,把不活跃的仓库迁移到 oss ,比如把 oss 挂在到云主机通过 rsync 拷贝或者通过 oss api 上传,都会导致这里的 A 、B 、E 三个库就变成了 600M ,一个库还好,大量的这种仓库的存在会导致冷存储的存储量的爆炸式增长
各位有什么建议的方案么?
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.