无法在运行ubuntu的PI 4上将SSD用作geth的数据目录

问题描述

我正在尝试使用this tutorial在RaspBerry Pi 4上设置Medalla测试网络验证程序,区别在于我已经拉过ARM64 Ethereum package from here.

我正在运行Ubuntu v20.04(LTS)x64

今天早上我设法同步了testnet,但是只能使用/ var / library / goethereum --datadir。显然,鉴于为区块链的最终大小建议使用500GB的存储空间,这不会长期有效。

我在Pi的蓝色USB(即USB 3.0)中安装了Samsung T5 SSD。

当我尝试使用--datadir / mnt / t5 / goethereum /

写入ssd时

两种行为是不同的。日志报告:

8月16日13:37:21 ethnode-f4f1e111d geth [7435]:致命:错误启动 协议栈:监听Unix /mnt/t5/goethereum/geth.ipc:绑定: 输入/输出错误8月16日13:37:21 ethnode-f4f1e111d systemd 1: geth.service:主进程已退出代码退出,状态为1 / FAILURE 8月 16 13:37:21 ethnode-f4f1e111d systemd 1:geth.service:失败于 结果为“退出代码”。

当我尝试使用来附加geth时

geth attach ipc:/mnt/t5/goethereum/geth.ipc

我明白了

致命:无法连接到远程geth:拨打unix /mnt/t5/goethereum/geth.ipc:连接:连接被拒绝

我正在以用户身份运行geth,并以该用户拥有的身份安装了T5。

/etc/systemd/system/geth.service的内容

[Unit]
   Description=Ethereum go client
   After=network.target 
   Wants=network.target
[Service]
   User=goeth 
   Group=goeth
   Type=simple
   Restart=always
   RestartSec=5
   ExecStart=geth --goerli --http --datadir /mnt/t5/goethereum/
[Install]
   WantedBy=default.target

/ mnt / t5中的权限是:

drwxrwxrwx 1 goeth goeth 131072 Aug 16 13:48 geth
-rwxrwxrwx 1 goeth goeth      0 Aug 16 13:48 geth.ipc 
drwxrwxrwx 1 goeth goeth 131072 Aug 16 13:46 keystore

知道我在做什么错吗?

解决方法

As Karslabe mentioned in this comment,您不能将geth.ipc文件托管在非unix卷上。但是幸运的是,您可以为数据和geth.ipc文件指定不同的目录。

答案是这样编辑我的/etc/systemd/system/geth.service:

if self.shape == ShapeMethod.circle