Ich werde einen Bitcoin-Core auf einem Linux-Server (Ubuntu 20.04) ausführen. Ich habe nicht genug Speicherplatz, um Blockchain-Daten zu speichern. Daher möchte ich die Daten über einen NFS-Server (CentOS Release 6.10) speichern. Ich erhalte jedoch eine Fehlermeldung, wenn ich den -datadir
auf den freigegebenen Ordner einstelle.
Der Inhalt der Datei auf dem NFS-Server (ich habe die Konfiguration von hier/etc/exports
aus gesehen ):
/home/storage/ BITCOIN.CORE_IP(rw,sync,no_root_squash,no_subtree_check)
Ich habe das freigegebene Remote-Verzeichnis auf dem Ubuntu 20.04-Linux-Server mit dem folgenden Befehl gemountet:
mount NFS_SERVER_IP:/home/storage/ /root/blockchain/
Alles funktioniert einwandfrei, und der Bericht zur Speicherplatznutzung des Dateisystems lautet: ( df -h
)
Filesystem Size Used Avail Use% Mounted on
NFS_SERVER_IP:/home/storage/ 1.0T 682M 1.0T 1% /root/blockchain
Nachdem Sie den folgenden Befehl ausgeführt haben, um das Datenverzeichnis in das freigegebene Verzeichnis zu ändern:
./bitcoin-0.20.0/bin/bitcoind -datadir=/root/blockchain
Ich bekomme folgenden Fehler:
Error: Cannot obtain a lock on data directory /root/blockchain. Bitcoin Core is probably already running.
Ich sollte beachten, dass das gemeinsame Verzeichnis leer ist, bevor Bitcoin ausgeführt wird, und danach eine leere Datei mit dem Namen .lock
. Außerdem, wenn ich das -datadir
auf einen beliebigen lokalen Ordner setze, wird es keinen Fehler zurückgeben!
Danke.
Aus meiner Sicht können wir LevelDB-Indexdateien wie Chainstate usw. nicht auf einen externen langsamen Speicher verschieben.
Gemäß diesem Link sollten wir nur die Dateien blkxxxxx.dat
und revxxxxx.dat
auf einen externen Speicher verschieben. Diese Dateien sind ${datadir}/blocks/
standardmäßig enthalten. Da das index
Verzeichnis ( ${datadir}/blocks/index
) LevelDB-Indexdateien mit hoher E/A-Frequenz enthält, erhöht das Verschieben auf einen externen Speicher die anfängliche Blockchain-Synchronisierungszeit.
Gehen Sie also folgendermaßen vor (ich habe die Anweisungen des Links befolgt ):
Lassen Sie es einige Minuten lang laufen oder lange genug, bis es mit der Synchronisierung begonnen hat [ref]
Töten Sie dann die Bitcoin.
Verschieben Sie als Nächstes den Ordner „index“ eine Ebene nach oben (damit er auf dem lokalen Speicher verbleiben kann):
mv -f ~/.bitcoin/blocks/index ~/.bitcoin/
mv -f ~/.bitcoin/blocks ~/blockchain/
ln -s /root/.bitcoin/index /root/blockchain/blocks/index
ln -s /root/blockchain/blocks/ /root/.bitcoin/blocks
Raghav Sood
Taghi
Raghav Sood
.lock
Datei zu löschen (falls sie noch vorhanden ist) und sie dann erneut zu startenTaghi
Pieter Wuille