全履歴の設定
デフォルトの構成では、新しいレジャーバージョンが利用可能になるとrippled
サーバが古いXRP Ledger状態とトランザクションの履歴を自動的に削除するように設定されています。ほとんどのサーバでは現在の状態を把握してトランザクションを処理するのに古い履歴は不要なため、この設定で十分です。ただし、一部のサーバが可能な限り多くのXRP Ledgerの履歴を提供する場合、これはネットワークにとって有用であることがあります。
警告
全履歴の保存にはコストがかかります。2018年12月11日の時点では、XRP Ledgerの全履歴が専有するディスク容量は約9テラバイトにのぼります。適切なサーバパフォーマンスのためには、全履歴を高速なソリッドステートディスクドライブに保存する必要があります。このような大量のソリッドステートストレージは安価ではなく、また保管する必要のある履歴の合計量は毎日約12 GBずつ増加します。
ピアツーピアネットワークから全履歴を取得するには非常に長い時間がかかり(数か月)、また古い履歴を取得し、かつレジャーの新たな進展を常に把握するには、システムリソースとネットワークリソースを十分に備えたサーバが必要となります。レジャー履歴の取得を迅速に開始するため、すでに大量の履歴をダウンロードしている別のサーバオペレーターを探すこともできます。このようなオペレーターは、データベースダンプを提供できるか、または少なくとも、履歴の取得に十分な時間、あなたのサーバをオペレーターのサーバに明示的にピア接続することができます。サーバはファイルからレジャー履歴を読み込み、インポートする履歴レジャーの整合性を検証できます。
ネットワークへの参加、トランザクションの検証、またはネットワークの現在の状態の確認には、全履歴を記録するサーバは必要ありません。全履歴が有用となるのは、過去に発生したトランザクションの結果や、過去の特定の時点におけるレジャーの状態を確認する場合だけです。このような情報を取得するには、必要とする履歴を保持している他のサーバを利用する必要があります。
全履歴は保管せずにXRP Ledgerネットワークの履歴の保管に参加したい場合には、履歴シャーディングを構成すれば、レジャー履歴のグループをランダムに選択して保管できます。
構成手順
サーバが全履歴を取得して保管するように構成するには、以下の手順を実行します。
rippled
サーバが稼働中の場合は停止します。$ sudo systemctl stop rippled
サーバの構成ファイルで
[node_db]
スタンザのonline_delete
設定とadvisory_delete
設定を削除(またはコメントアウト)し、タイプをまだNuDB
に変更していない場合は変更します。[node_db] type=NuDB path=/var/lib/rippled/db/nudb #online_delete=300000 #advisory_delete=0
全履歴が記録されるサーバでは、レジャーストアーにNuDBを使用します。これは、データベースがこれほど大きいと、RocksDBでは非常に大量のRAMが必要になるためです。詳細は、容量の計画をご覧ください。パフォーマンス関連の構成オプション
open_files
、filter_bits
、cache_mb
、file_size_mb
、およびfile_size_mult
は、RocksDBのみに適用されるオプションであるため、デフォルトの[node_db]
スタンザから削除できます。注意: RocksDBで履歴をすでにダウンロードしている場合は、NuDBへ切り替えるときに構成ファイルでデータベースのパスを変更するか、またはそのデータを削除する必要があります。
[node_db]
スタンザのpath
設定および[database_path]
(SQLiteデータベース)設定の両方を変更する必要があります。このようにしないと、サーバの起動が失敗する可能性があります。推奨インストールでは、デフォルトで
/etc/opt/ripple/rippled.cfg
という設定ファイルを使用します。その他の場所としては、$HOME/.config/ripple/rippled.cfg
($HOME
はrippled
を実行しているユーザのホームディレクトリです)、$HOME/.local/ripple/rippled.cfg
またはrippled
を起動した現在の作業ディレクトリがあります。サーバの構成ファイルで
[ledger_history]
スタンザをfull
に設定します。[ledger_history] full
全履歴が保管されている1台以上のサーバと明示的にピア接続するように、サーバの構成ファイルで
[ips_fixed]
スタンザを設定します。[ips_fixed] 169.55.164.20 50.22.123.215
サーバのダイレクトピアの1つが使用可能な履歴データを保持している場合に限り、サーバはピアツーピアネットワークから履歴データをダウンロードできます。全履歴をダウンロードする最も容易な方法は、すでに全履歴を保管しているサーバとピア接続することです。
ヒント: Rippleは、すべての履歴が記録されるサーバのプールを公開しています。これらのサーバのIPアドレスを取得するには、ドメイン
s2.ripple.com
を数回解決します。これらのサーバは公開サービスとして提供されているため、他のサーバとのピア接続での可用性は限られており、またこれらのサーバを悪用するとブロックされる可能性があることに注意してください。全履歴が記録されている別のサーバからのデータベースダンプがあり、このダンプをベースとして利用できる場合は、サーバの構成ファイルで
[import_db]
スタンザがインポート対象データを指し示すように設定します。(それ以外の場合はこのステップをスキップします。)[import_db] type=NuDB path=/tmp/full_history_dump/
以前に稼働していた
rippled
からの既存のデータベースファイルがサーバにある場合は、そのデータベースファイルを削除します。オンライン削除を無効にすると、サーバはオンライン削除が有効であった間にダウンロードしたデータをすべて無視するため、ディスク容量を空けることができます。次に例を示します。
rm -r /var/lib/rippled/db/*
警告: フォルダーを削除する前に、保持したいファイルがそのフォルダーに含まれていないことを確認してください。通常は安全に
rippled
サーバのデータベースファイルをすべて削除できますが、この操作は、設定されているデータベースフォルダーがrippled
のデータベース以外には使用されていない場合にのみ行ってください。rippled
サーバを起動し、インポート可能なデータベースダンプがある場合にはインポートします。[Import_db]
で構成されている読み取り対象データベースダンプがある場合は、--import
コマンドラインオプションを指定してサーバを明示的に起動します。$ /opt/ripple/bin/rippled --conf /etc/opt/ripple/rippled.cfg --import
大量のデータベースダンプのインポートには数分から数時間かかることがあります。インポート中はサーバは完全には起動せず、ネットワークと同期しません。インポートの状況を確認するには、サーバログをご覧ください。
データベースダンプをインポートしない場合は、サーバを通常の方法で起動します。
$ sudo systemctl start rippled
[import_db]
スタンザをサーバの構成ファイルに追加した場合は、インポートの完了後にそのスタンザを削除してください。このようにしないと、次回の再起動時にサーバが同じデータを再びインポートしようとします。
server_infoメソッドを使用して、サーバの利用可能な履歴を監視します。
complete_ledgers
フィールドに表示される利用可能なレジャーの範囲は、時間の経過とともに増加します。本番環境のXRP Ledgerの履歴で最も古い利用可能なレジャーバージョンは、レジャーインデックス32570です。レジャー履歴の最初の約2週間分は、当時のサーバのバグが原因で失われています。Test Netやその他のチェーンでは通常、履歴の最初のバージョンはレジャーインデックス1です。