Bitcoin-Core

從頭開始同步核心客戶端非常困難

  • November 27, 2018

最近我開始在外部硬碟上執行帶有區塊鏈的 Core 15.1 節點,發現很難完全同步區塊鏈。我一直遇到的問題是(在我大約 90% 的嘗試中)同步沒有完成。數據庫損壞發生在某個時間點(通常在遊戲的後期,可能是 36 小時後)。

我在論壇中進行了一些探勘,發現我不是第一個注意到這個問題的使用者。Peter Wuille提到他每週都會進行一次完全同步,並且始終有效,因此他懷疑這些類型的問題是由於硬體不理想造成的。

起初這似乎很合理,因為我最初的嘗試是使用一個相當舊的 400gig 袖珍硬碟完成的。所以我換了硬碟。到現在為止,大約 2 個月後,我嘗試從頭開始同步區塊鏈大約 20 或 30 次,但只有兩次成功完成該過程。我在 4 種不同類型的硬碟驅動器上做到了這一點,包括全新的 1T 西部數據。

有人可能會說我使用的所有 4 個硬碟都是“次優的”,但我會反對,因為

  • 同步完成後,節點執行正常。
  • 我認為能夠在帶有袖珍硬碟的樹莓派上執行完整節點是可取的(請注意,我在樹莓派上執行節點,但使用我的 linux桌面進行初始同步)

現在我在這裡遇到的問題與其說是同步期間的崩潰,不如說是當我在崩潰後重新啟動客戶端時,唯一的選擇是基本上從頭開始(如果我理解正確,客戶端不一定從從頭開始,但這不是我的意思)並從 Genesis 再次同步。 理想情況下,我希望客戶端從它成功到達的位置保持同步,而不是在出現此類錯誤時從頭開始重新同步

我想知道是否有必要從頭開始重新同步錯誤。我假設損壞發生在塊或鏈狀態目錄中的一個(或多個)文件中。如果是這樣,那麼為什麼要從 Genesis 同步?比如說,刪除損壞文件後的所有文件並從那裡同步是不可能的嗎?

如果這種行為沒有根本原因,我也會感謝指向客戶端中相關程式碼的指針。

謝謝!!

數據庫損壞意味著您的節點狀態已損壞,而不僅僅是它下載的數據。在國家腐敗後恢復就像在腦葉切除後恢復你的生活一樣。

在同步期間,您的節點以正常負載的數百倍執行:考慮一下,比特幣已經存在了 3000 多天,但同步將在一天內完成。這往往會暴露邊緣硬體。“次優”不是描述它的非常準確的方式,“完全損壞”會更好。

USB 驅動器通常因導致損壞而臭名昭著。不僅驅動器本身通常不可靠,而且許多人經常遭受 USB 控制器甚至電纜的問題。

以更多千兆字節的空間使用為代價,比特幣節點可以定期備份它們的狀態,以便它們可以更優雅地從損壞中恢復……但是這樣做的成本足夠高,以至於收益並不完全清楚。特別是因為搞砸的硬體也可能會破壞備份。

根據類似的經驗,我有兩條半的評論:RasPi 是一個不錯的硬體,但可能不是完整節點的最佳設備。除了這裡的論壇和 bitcointalk.org 中的許多連結,我認為歸結為以下兩個問題:

將區塊鏈載入到您的電腦中的過程對磁碟來說是繁重的 I/O。由於 RasPi 只有一個 USB 埠連接到磁碟,它比連接磁碟驅動器的標準介面慢 10 倍。雖然我的標準 IDE 介面以每秒 20 兆字節的速度執行,但我很難通過 USB 設備達到每秒 2 兆字節以上的速度。當然,SSD 執行得更快……

但這只是將數據寫入磁碟的一部分。然後你還必須從磁碟中讀取以前的扇區,其中包含幾個區塊鏈數據和以前的交易數據。這裡的數據量不太相關,但磁碟 I/O 週期進入了遊戲。這就像在磁碟驅動器中隨機搜尋一樣,也可能會減慢該過程。測量 CPU 負載顯示 +4.x,因此請求執行 I/O 的程序比系統可以處理的多。我也玩過記憶體參數,但無濟於事。I/O 是限制因素。

然後是 RasPi CPU 的容量。我了解到,我的 RasPi 相當好地載入了區塊鏈,並且在 2017 年 7 月/8 月之前一直在穩定的過程中,然後開始時不時地窒息。這正是區塊越來越滿的時候。而且我理解,載入一個完整的塊意味著要驗證很多很多數據,從而增加了 RasPi 的負載。對於作業系統,我在使用 Linux 載入區塊鏈方面取得了更大的成功。Windows 根本不夠可靠。但是我仍然花了 3 多周的時間在 RasPi2 上傳入區塊鏈。

然後我做了什麼:我有三個不同的 Macintosh,兩個配備 SSD 和 Intel Core Duo 以及 4 Gig RAM(相當老,比如 +6 年)。這些 SSD 系統下載區塊鏈沒有任何問題,仍然需要 2 到 3 天。

順便說一句:我觀察到乙太坊和 RasPi 完全相同的問題。所以對我來說,RasPi 在高負載方面似乎有其局限性。我沒有調試任何東西,但看起來 RasPi 在高負載時會失去一些中斷,這會導致將數據寫入磁碟時出錯。另外我沒有使用冷卻裝置,所以在計算所有 sha256、base58 和 sig 時,CPU 肯定達到了最高溫度。

為了避免這種情況,我將下載的區塊鏈從帶有 SSD 的 Mac 複製到 RasPi,然後他會再次像魅力一樣工作。提示:我在 2017 年 11 月之前使用 RasPi2 進行了這些測試,type3 模型應該稍微快一些,但不是數量級。

因此,當您說,您從 PC 載入初始區塊鏈時,HDD 是否仍連接到 USB 驅動器?您是否嘗試過我的本地磁碟,然後同步到 RasPi?也許值得檢查。我發現,當你下載區塊鏈時,網際網路連結的頻寬不是限制問題……

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