Linux Reshard现有大型SVN存储库

Linux Reshard现有大型SVN存储库,linux,svn,version-control,fsfs,Linux,Svn,Version Control,Fsfs,我们有一个相当大的SVN存储库(50GB,超过100000个版本)。使用它的速度相当慢,我猜原因是db/revs和db/revprops中的扁平目录结构(每个版本都是一个文件) 我们在SVN 1.5中使用FSFS格式(在linux服务器上),但repo是使用较旧的SVN版本创建的。现在我读到SVN1.5支持“分片”,我了解到该功能将修订分发到多个目录中,这样单个目录就不会包含这么多文件。这听起来很有用,但不幸的是,这项功能似乎只用于使用SVN1.5新创建的存储库 如何将现有的大型线性回购转换为分

我们有一个相当大的SVN存储库(50GB,超过100000个版本)。使用它的速度相当慢,我猜原因是db/revs和db/revprops中的扁平目录结构(每个版本都是一个文件)

我们在SVN 1.5中使用FSFS格式(在linux服务器上),但repo是使用较旧的SVN版本创建的。现在我读到SVN1.5支持“分片”,我了解到该功能将修订分发到多个目录中,这样单个目录就不会包含这么多文件。这听起来很有用,但不幸的是,这项功能似乎只用于使用SVN1.5新创建的存储库


如何将现有的大型线性回购转换为分片回购?手册中提到了工具“fsfs reshard.py”,但这个脚本说“这个脚本还没有完成,还没有准备好用于实时数据。相信我们。”。所以我绝对不想用这个。有其他选择吗?
svnadmin转储和
svnadmin加载会起作用吗

最好的方法是卸载/装载循环。但是你可以试试这个


制作一份您的repo副本首先尝试升级并测试它……(不要错过备份)。

由于转储/恢复过程需要大量磁盘空间和处理时间,我(在2010年)发布了一个改进版的
fsfs reshard.py
,其中包括对Subversion 1.6 fsfs格式5的支持:

它支持在线性到分片布局之间切换,在需要时解包分片。由于碎片统计计算,您可以通过选择合适的碎片大小来预测压缩版本大小

当然,它必须是:

  • 如果可能,在存储库副本上执行第一个测试过程
  • 准备好要恢复的备份
  • 处理时阻止访问存储库
  • 启动前运行
    svnadmin验证

虽然将更改为新的存储库格式可能会有所帮助,但我怀疑它能否解决性能问题。我很想知道一旦你尝试过它是否有用。我想我们已经使用了最新的格式(或者至少是1.5版的最新版本(我们还没有使用1.6版))。如果我没记错的话,我们已经做了一个“svnadmin升级”来拥有新的合并功能。因此,这可能就是为什么svnadmin升级会立即退出而不做任何更改的原因。看起来“升级”不会升级目录结构。如果完全转储/加载有帮助,我会试试。升级步骤非常快,值得一试。对于这样大小的存储库,转储/加载周期可能需要一个周末的大部分时间,这可能是不切实际的。升级什么都不做。立即退出,并表示已完成,但回购协议仍为线性格式。如果转储/加载有帮助,我将尝试一下。可能需要几个小时。这很有效!对于8000个变更集,它花费了大约10分钟,所以时间不算太长。你非常幸运。上次我在我们的(相当旧的服务器)上尝试它时,花了整整一个周末的时间,达到60000转!很高兴它起作用了。
svnadmin upgrade