brianfit
brianfit

Reputation: 1919

Can't use SSD as datadir for geth on a PI 4 running ubuntu

I'm trying to set up a Medalla test net validator on a Raspberry Pi 4 using this tutorial, with the difference that I've pulled the ARM64 Ethereum package from here.

I'm running Ubuntu v20.04 (LTS) x64

I managed to sync the testnet this morning, but only by using /var/library/goethereum as my --datadir. Obviously, that's not going to work long term given the recommended 500GB storage for the eventual size of the blockchain.

I have a Samsung T5 SSD mounted into a blue USB (i.e. USB 3.0) of the Pi.

When I try writing to my ssd using --datadir /mnt/t5/goethereum/

Two behaviours are different. The log reports:

Aug 16 13:37:21 ethnode-f4f1e111d geth[7435]: Fatal: Error starting protocol stack: listen unix /mnt/t5/goethereum/geth.ipc: bind: input/output error Aug 16 13:37:21 ethnode-f4f1e111d systemd1: geth.service: Main process exited, code=exited, status=1/FAILURE Aug 16 13:37:21 ethnode-f4f1e111d systemd1: geth.service: Failed with result 'exit-code'.

And when I attempt to attach geth using

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

I get

Fatal: Unable to attach to remote geth: dial unix /mnt/t5/goethereum/geth.ipc: connect: connection refused

I'm running geth as user goeth, and mounted the T5 as owned by that user.

Contents of /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

Permissions in /mnt/t5 are:

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

Any idea what I'm doing wrong?

Upvotes: 0

Views: 740

Answers (1)

brianfit
brianfit

Reputation: 1919

As Karslabe mentioned in this comment, you can't host your geth.ipc file on a non-unix volume. But fortunately you can specify different directories for your data and your geth.ipc file.

The answer was to edit my /etc/systemd/system/geth.service thus:

[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 **--ipcpath  /var/lib/goethereum/geth.ipc**   --datadir /mnt/t5/goethereum/
[Install]
   WantedBy=default.target

Upvotes: 0

Related Questions