Wie kann die anfängliche Blockchain-Synchronisierung mit SSD beschleunigt werden, ohne Speicherplatz zu verschwenden?

Ich habe eine 60-GB-SSD als Windows-Systemlaufwerk, was nicht ausreicht, um die gesamte Blockchain zu speichern. Ich habe BitCoin Core (bitcoin-qt) installiert und das Datenverzeichnis so eingestellt, dass es sich auf meiner 2-TB-Festplatte befindet. Allerdings läuft die initiale Blockchain-Synchronisation bereits seit 2 Tagen, aktuell mit '40 Wochen Verspätung'. Die HDD zeigt im Taskmanager von Windows 100% Auslastung an. Die CPU ist zu <50 % ausgelastet, die Netzwerkauslastung beträgt <1 MB/s während der Synchronisierung.

Kann ich die anfängliche Synchronisierung beschleunigen, indem ich die SSD als DB-Speicher verwende, während binäre Blockchain-Daten auf einer herkömmlichen Festplatte gespeichert werden?

Beschleunigt das wirklich die Synchronisierung?

Antworten (1)

Ja, es ist möglich, die Blockchain-Binärdaten auf einen Massenspeicher (HDD) zu laden, während die Index-DB auf einem performanten Speicher (SSD) bleibt. Die Bitcoin-Blöcke werden im blocksUnterverzeichnis Ihrer datadir. Der Speicherort Ihres Datenverzeichnisses ist entweder %AppData%\BitCoin, oder wird von Ihnen während der Installation manuell festgelegtbitcoin-qt .

Ich gehe davon aus, dass Sie BitCoin Core (alias bitcoin-qt) unter Windows 7 oder höher verwenden, wobei C:\ Ihre SSD ist, F:\ Ihre Festplatte ist und der Bot als NTFS formatiert ist. Der Standort datadirist %AppData%\BitCoin\.

  1. Verschieben Sie %AppData%\BitCoin\blocksauf die Festplatte, zB aufF:\BTC\blocks

  2. OPTIONALF:\BTC\blocks\index Zurück zur SSD verschieben :%AppData%\BitCoin\index

HINWEIS: Der Blöcke-Ordner darf jetzt nicht in %AppData%\BitCoin existieren !

  1. Öffnen Sie ein cmd-Fenster, indem Sie WIN+R drücken , dann cmd eingeben und auf ok klicken

  2. Tippen/Einfügen mklink /J %AppData%\BitCoin\blocks F:\BTC\blocksund ENTER drücken . (Dadurch wird eine NTFS-Junction erstellt , die einen Link in %AppData%\Bitcoin namens blocks erstellt , der auf den vorhandenen Ordner F:\BTC\blocks auf der Festplatte verweist.)

  3. OPTIONAL Typ/Einfügen mklink /J F:\BTC\blocks\index %AppData%\BitCoin\indexund ENTER drücken (Neuen Link bei F:\BTC\blocks\index erstellen , der auf vorhandenes %AppData%\BitCoin\index zeigt )

Jetzt befindet sich das Blockverzeichnis auf der Festplatte für billigen Massenspeicher, während sich das Index-Unterverzeichnis und das übergeordnete Datadir auf der schnellen SSD befinden. Auf der Festplatte werden nur binäre Blockchain-Daten gespeichert.

Über das indexVerzeichnis ( Schritte 2, 4 ): Wie Pieter Wuille unten kommentiert, müssen Sie das indexVerzeichnis nicht wirklich blockszurück auf die SSD verschieben. Aber da es eine der Datenbanken enthält, dachte ich, dass es die Leistung beim Starten von bitcoin-qt verbessern könnte. [Zitat erforderlich]

In meinem Fall zeigt dieser Windows-Task-Manager zehnmal höhere Lese-/Schreibgeschwindigkeiten als zuvor (20-30 MB/s). Die Download-Geschwindigkeit stieg auf 2-4 MB/s (50 MBit Internet), die CPU-Auslastung liegt bei 85 %.

Ich habe die Verbesserung von Blöcken/Sekunde nicht überwacht, aber die Taskmanager-Werte zeigen einen besseren Datendurchsatz, was direkt mit mehr Blöcken pro Sekunde zusammenhängen sollte. Ich habe 15 Wochen Blockchain synchronisiert, während ich dies schrieb (30 Minuten), im Vergleich zu nur 1 Woche vor der Änderung!

Das Datadir ohne binäre Blockchain-Daten ist etwas mehr als 2 GB groß, wobei noch 25 Wochen Blockchain fehlen. Ich würde für die aktuell 80GB große Blockchain mindestens 5GB freien Speicherplatz auf der SSD empfehlen.

Ziemlich genau, aber die Leistung der blocks\indexDatenbank ist eigentlich irrelevant; wir schreiben immer nur ein paar Daten hinein. Es gibt jedoch eine andere Datenbank, chainstateVerzeichnis, deren Leistung absolut kritisch ist. Ich würde vorschlagen, letzteres stattdessen auf SSD zu verschieben.
Danke für den Tipp. Ich bin neu bei Bitcoin, also wusste ich nicht, was jede Datei wirklich tut. Ich werde am Ende meiner Antwort einen Hinweis hinzufügen indexund die relevanten Schritte als optional markieren.
Oracle-Datenbanken? Wir verwenden BDB für die Brieftasche. Blöcke/Index und Chainstate sind LevelDB.
Guter Punkt, ich weiß nicht, wo ich gelesen habe, dass dies eine Oracle-DB ist ... Ich habe die Antwort in ein Community-Wiki umgewandelt, wie gesagt, ich weiß nicht allzu viel über Bitcoin selbst, also wenn jemand mehr Dinge findet falsch, bitte bearbeiten Sie, wie Sie möchten.