Bitcoin-Core
NFS 上的比特幣核心數據目錄
我將在 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.dat
和revxxxxx.dat
文件移動到外部儲存。這些文件${datadir}/blocks/
預設在裡面。由於index
目錄 (${datadir}/blocks/index
) 包含高 i/o 頻率的 LevelDB 索引文件,將其移動到外部儲存將增加初始區塊鏈同步時間。所以採取以下步驟(我按照連結的說明進行操作):
- 執行比特幣。
讓它執行幾分鐘,或者足夠長的時間讓它開始同步[ref]
- 然後殺死比特幣。
- 接下來,將“index”文件夾上移一級(以便它可以保留在本地儲存中):
mv -f ~/.bitcoin/blocks/index ~/.bitcoin/
- 將 blocks 文件夾移動到共享目錄:
mv -f ~/.bitcoin/blocks ~/blockchain/
- 在共享儲存中的 blocks 目錄中創建指向本地索引目錄的符號(軟)連結(使用絕對路徑):
ln -s /root/.bitcoin/index /root/blockchain/blocks/index
- 現在,創建一個符號(軟)連結到本地儲存中 .bitcoin 的塊目錄(再次使用絕對路徑)::
ln -s /root/blockchain/blocks/ /root/.bitcoin/blocks