既存の大規模な SVN リポジトリをリシャードする
-
26-09-2019 - |
質問
かなり大規模な SVN リポジトリ (50 GB、リビジョン数 100,000 以上) があります。作業はかなり遅く、私の推測では、db/revs と db/revprops のフラットなディレクトリ構造 (各リビジョンが 1 つのファイルである) がその理由だと思います。
SVN 1.5 (Linux サーバー上) で FSFS 形式を使用していますが、リポジトリは古い SVN バージョンで作成されています。さて、SVN 1.5 が「シャーディング」をサポートしていることを読み、この機能によりリビジョンが複数のディレクトリに分散されるため、1 つのディレクトリにそれほど多くのファイルが含まれないことを理解しました。これは非常に便利に思えますが、残念ながら、この機能は SVN 1.5 で新しく作成されたリポジトリでのみ使用されるようです。
既存の大規模なリニア リポジトリをシャード リポジトリに変換するにはどうすればよいですか?マニュアルには「fsfs-reshard.py」ツールについて言及されていますが、このスクリプトには「このスクリプトは未完成であり、ライブ データで使用する準備ができていません。私たちを信じて。"。だから絶対に使いたくないんです。代替手段はありますか?
解決
最良の方法は、上記のダンプ/ロード・cylcleようです。しかし、あなたはのアップグレードを試すことができます。
svnadmin upgrade
最初の(バックアップを作成するために逃してはいけない)......アップグレードとテストをしてみてください、あなたのレポのコピーを作成します。
他のヒント
svnadmin dump
とsvnadmin load
は、トリックを行うだろうか? http://subversion.apache.org/faq.html#dumploadする
ダンプ/復元プロセスには多くのディスク容量と処理時間が必要となるため、(2010 年に) の改良版を公開しました。 fsfs-reshard.py
これには、Subversion 1.6 FSFS フォーマット 5 のサポートが含まれます。https://github.com/ymartin59/svn-fsfs-reshard
線形レイアウトとシャード レイアウト間の切り替えをサポートし、必要に応じてシャードを解凍します。シャード統計の計算により、適切なシャード サイズを選択することで、パックされたリビジョン サイズが予測される場合があります。
もちろんそうに違いない 大切に使われている:
- 可能であればリポジトリのコピーで最初のテスト手順を行う
- 復元できるようにバックアップを取得する
- 処理時にリポジトリへのアクセスを禁止する
- 走る
svnadmin verify
ライブにする前に