Splitting the data directory

提供: tezos-wiki
2018年4月13日 (金) 12:46時点におけるAkita (トーク | 投稿記録)による版
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

Bitcoin Coreは通常、すべてのデータを1つの[data directory]に格納しますが、これらのファイルの一部が他の場所に移動するように調整することは便利なことがよくあります。

あなたのデータディレクトリが磁気ディスク上にある場合:速度向上のためにチェインステートを動かす[編集]

Bitcoin Coreの全体的な速度は、chainstateディレクトリの内容のランダムアクセス速度に大きく影響されます。データディレクトリが磁気ディスク上にある場合は、チェーン状態のアクセス速度がパフォーマンスの最大のボトルネックになります。したがって、チェーンステートディレクトリ(わずか数GB)だけをSSDドライブに移動することで、パフォーマンスを大幅に向上させることができます。チェーンステートディレクトリをUSBフラッシュドライブに移動しても、特にUSBフラッシュドライブが特に高速であると宣伝されている場合は、パフォーマンスが大幅に向上します。

移動するには:

#Bitcoin Coreをシャットダウンする #data directoryから、チェインステートディレクトリ(内容だけでなくディレクトリ自体)を切り取り、ターゲットドライブのどこかに貼り付けます。 Linuxでは、Bitcoin Coreがディレクトリとそのファイルを新しい場所で読み書きするための許可が許可されていることを確認してください。 #データディレクトリの端末を開きます。 Linuxでは、 ln -s / absolute / path / to / chainstate </ tt>を実行します(Windowsの場合はShiftキーを押しながらdata directoryをクリックし、 "ここでコマンドウィンドウを開く"を選択します)。たとえば、新しい場所が/ mnt / ssd / core / chainstateになるようにチェーンステートを移動した場合(つまり、そのディレクトリ内にldbファイルがたくさんある場合)、<tt> ln -s / mnt / ssd / core / chainstate </ tt>をデータディレクトリ内からすぐに取得します。 Windowsでは、<tt> mklink / D chainstate?:\ path \から\ chainstate </ tt>を実行します。たとえば、新しい場所がF:\ core \ chainstateになるようにチェーンステートを移動した場合(つまり、そのディレクトリ内に複数のldbファイルがある場合)、<tt> mklink / D chainstate F:\ core \ chainstate </ tt>をデータディレクトリ内からすぐに取得します。

リムーバブルドライブを使用している場合は、実際のチェーンステータスへのパスが変更されていないことを確認してください。

あなたのデータディレクトリがSSD上にある場合:ブロックデータベースを移動してスペースを節約する[編集]

前のセクションで述べたchainstateディレクトリとは異なり、dataディレクトリのblocksディレクトリにあるblk *とrev *ファイルはほとんどアクセスされず、アクセスされると非常にシーケンシャルなアクセスパターンでアクセスされるため、パフォーマンスに大きな影響を与えて磁気ディスクに移動させ、SSD上に100GB以上の空き容量を確保します。

Bitcoin Coreをプルーニングを有効にして実行する(つまり、<tt> prune = 550 </ tt>をbitcoin.confに追加する)ことによってブロックデータベースを保存する必要がなくなりますが、いくつかの機能を失います。ネットワークにはあまり役立ちません。セキュリティはこれによって影響を受けず、あなたは完全なノードのままです。

chainstateの場合とは異なり、ブロックディレクトリ全体を移動する必要はありません。これは、パフォーマンス関連の<tt>ブロック/インデックス</ tt>ディレクトリも移動するためです。代わりに、blocksディレクトリに次のスクリプトを置いて定期的に 'Bitcoin Coreをシャットダウンして' blk *とrev *ファイルを個別に移動することができます。 Bitcoin Coreが動作している間にスクリプトを実行しないでください。そうしないと、0から同期する必要があります。BLK_TARGET = ...をスクリプト内で変更して、目的の場所を指定します。

Linux:

#!/ bin / bash
セット-e
BLK_TARGET = / mnt / ssd / core / blocks#先にスラッシュを入れずに置き換えます

見つける。 -name '* .dat' -type f -printf '%f \ n'>無効にする
一方、読取りライン。行う
        エコー$行
        mv "$ line" "$ BLK_TARGET / $ line"
        ln -s "$ BLK_TARGET / $ line" "$ line"
完了<戻る
rm tomove
エコー完了</ pre>

Windows(<tt> move.bat </ tt>などで保存):
<pre> @echo off
REM次の行を目的地に変更します。末尾にスラッシュはありません
SET BLK_TARGET = F:\ core \ blocks
( 'dir / A-L / b * .dat')の/ f %% fに対してdo(
移動%% f%BLK_TARGET%\ %% f
存在するなら%% f(
エコー何かが間違っていた
一時停止する
出口
)
mklink %% f%BLK_TARGET%\ %% f
)
エコー完了
一時停止</ pre>

これらのスクリプトは、blkファイルとrevファイルの隣にあるdata directoryの<tt> blocks </ tt>ディレクトリの内側にあると想定しています。彼らは最小限のエラー処理しか行いません - 注意して使用してください。

スクリプトを元に戻すには、すべてのファイルを元の場所に戻して、シンボリックリンクを上書きします。

カテゴリ:ガイド