Bitcoin-Core

NFS 上的比特幣核心數據目錄

  • July 27, 2020

我將在 Linux 伺服器(Ubuntu 20.04)上執行比特幣核心。我沒有足夠的儲存空間來儲存區塊鏈數據。因此,我想通過 NFS 伺服器(CentOS 版本 6.10)保存數據。但是,當我將 設置-datadir為共享文件夾時出現錯誤。

NFS 伺服器中文件的內容/etc/exports(我從這裡看到了配置):

/home/storage/  BITCOIN.CORE_IP(rw,sync,no_root_squash,no_subtree_check)

我使用以下命令將遠端共享目錄安裝在 Ubuntu 20.04 Linux 伺服器中:

mount NFS_SERVER_IP:/home/storage/ /root/blockchain/

一切正常,文件系統磁碟空間使用報告為:(df -h

Filesystem                   Size  Used Avail Use% Mounted on
NFS_SERVER_IP:/home/storage/  1.0T  682M  1.0T   1% /root/blockchain

執行以下命令將數據目錄更改為共享目錄後:

./bitcoin-0.20.0/bin/bitcoind -datadir=/root/blockchain

我收到以下錯誤:

Error: Cannot obtain a lock on data directory /root/blockchain. Bitcoin Core is probably already running.

我應該注意,在執行 bitcoind 之前共享目錄是空的,然後,它包含一個空文件,名稱為.lock. 此外,如果我將 設置-datadir為任何本地文件夾,它不會返回任何錯誤!

謝謝。

在我看來,我們不能將鏈狀態等 LevelDB 索引文件移動到外部慢速儲存中。

根據此連結,我們應該只將blkxxxxx.datrevxxxxx.dat文件移動到外部儲存。這些文件${datadir}/blocks/預設在裡面。由於index目錄 ( ${datadir}/blocks/index) 包含高 i/o 頻率的 LevelDB 索引文件,將其移動到外部儲存將增加初始區塊鏈同步時間。

所以採取以下步驟(我按照連結的說明進行操作):

  1. 執行比特幣。

讓它執行幾分鐘,或者足夠長的時間讓它開始同步[ref]

  1. 然後殺死比特幣。
  2. 接下來,將“index”文件夾上移一級(以便它可以保留在本地儲存中):
mv -f ~/.bitcoin/blocks/index ~/.bitcoin/
  1. 將 blocks 文件夾移動到共享目錄:
mv -f ~/.bitcoin/blocks ~/blockchain/
  1. 在共享儲存中的 blocks 目錄中創建指向本地索引目錄的符號(軟)連結(使用絕對路徑):
ln -s /root/.bitcoin/index /root/blockchain/blocks/index
  1. 現在,創建一個符號(軟)連結到本地儲存中 .bitcoin 的塊目錄(再次使用絕對路徑)::
ln -s /root/blockchain/blocks/ /root/.bitcoin/blocks

引用自:https://bitcoin.stackexchange.com/questions/97211