我目前正在使用SSD在Linux上运行geth mist,并希望将一些(或全部)链数据移动到外部驱动器以节省空间。
我知道有一个命令行选项来移动数据目录:
geth --datadir <path to data directory>
我的担忧是
目前,我在比特币块目录上运行以下脚本,它通过在SSD上保留高吞吐量数据并将大量但不常访问的数据移动到外部驱动器来避免这两个问题。
#!/bin/bash
set -e
BLK_TARGET=/mnt/ssd/core/blocks #Replace with your destination, no trailing slash
find . -name '*.dat' -type f -printf '%f\n' > tomove
while read line; do
echo $line
mv "$line" "$BLK_TARGET/$line"
ln -s "$BLK_TARGET/$line" "$line"
done <tomove
rm tomove
echo Done
当我在以太坊网络上尝试类似的时候,它触发了整个链的重新同步。
任何人都可以为以太坊的geth客户推荐类似的流程,或者安抚我的两个问题吗?
我的SSD上的当前目录大小为:
:~$ du -sh .ethereum/*
37G .ethereum/geth
0 .ethereum/geth.ipc
12K .ethereum/history
28K .ethereum/keystore
答案 0 :(得分:0)
我列出了以下三个链接,我将其用作处理此问题时的参考。在我回答之后,我会建议你阅读它们。
这取决于。只要Mist可以访问该目录,你应该没事;但是,如果Mist未正确设置外部驱动器,则必须重新同步整个链条并且需要更长时间。此外,如果您删除链数据并使用快速标记启动雾,这应该加快速度。我已经包含了一个设置外部硬盘驱动器的链接,这是最后一个链接
https://www.reddit.com/r/ethereum/comments/68emnn/does_ethereum_wallet_have_pruning_availability/
https://www.reddit.com/r/ethereum/comments/7hzb78/is_there_a_way_to_prune_my_chaindata_folder_on/
答案 1 :(得分:0)
外部SSD往往比内部SSD慢得多。 (内部固态硬盘分为两个主要类别,SATA和NVMe,虽然NVMe显着快于SATA,但SATA仍然显着快于外部SSD。)截至2019年中,我一直无法将链与可管理150个外部驱动器的外部硬盘同步MB读/写,尽管外部驱动器要快得多。
(如果您想要快速检查外部驱动器的指南,this文章将在第7节(“磁盘性能检查点”)中介绍操作方法。)
假设您仍然希望设置Geth来写入外部驱动器,如果运行geth --datadir /path/to/external/drive
,并且新位置的chaindata
文件夹为空,则Geth将开始从同步链的开始。不过,有一种避免该问题的简单方法:您可以将chaindata
从内部驱动器复制到外部驱动器。 (这将花费一些时间,但是远少于同步链。)我建议您复制并仅在看到Geth与新位置合作后才删除旧的chaindata
;您不希望在没有备份的情况下发现新的chaindata
有问题。