Two or more drives are not supported in Umbrel?

My Umbrel is running in Ubuntu installed on SDD.
I would like to store blk*****.dat and rev*****.dat in another HDD, but index in SSD.

I tried symbolic link (soft link) as explained below, but it didn’t work.

debug said

bitcoind_1 | 2023-05-25T03:55:17Z Checking all blk files are present…
bitcoind_1 | 2023-05-25T03:55:17Z Unable to open file /data/.bitcoin/blocks/blk00000.dat
bitcoind_1 | 2023-05-25T03:55:17Z : Error loading block database.
bitcoind_1 | Please restart with -reindex or -reindex-chainstate to recover.

So I tried another method by editing ~/umbrel/app-data/bitcoin/data/bitcoin/bitcoin.conf to tweak blocksdir.

#Load additional configuration file, relative to the data directory.

but debug said

bitcoind_1 | Error: Specified blocks directory “mnt” does not exist.


bitcoind_1 | filesystem error: cannot create directories: Permission denied [/mnt/blocks]
bitcoind_1 | bitcoin in AppInit()
bitcoind_1 |
bitcoind_1 |
bitcoind_1 |
bitcoind_1 | ************************
bitcoind_1 | EXCEPTION: NSt10filesystem7__cxx1116filesystem_errorE
bitcoind_1 | filesystem error: cannot create directories: Permission denied [/mnt/blocks]
bitcoind_1 | bitcoin in AppInit()

I found out Umbrel on Rasberry only supports one drive, but Ubuntu version should support multiple drives, right? but I’m too dumb to find out how.

Is there anyone who succeeded in storing blk*****.dat and rev*****.dat in different drive?
Please help me out.

I mounted HDD to “blocks” folder but index folder is also trapped in HDD. I want to leave index folder in SSD for performance. If I make soft link for index, Umbrel debug said

bitcoind_1 | 2023-05-25T19:45:59Z filesystem error: status: Symbolic link loop [/data/.bitcoin/blocks/index]
bitcoind_1 | 2023-05-25T19:45:59Z : Error opening block database.

I want to hodl my bitcoins rather than selling it for another SSD.

I did chmod and chown too, but it didn’t pass permission test.

I think it’s an issue regarding docker, but I don’t know how to handle that. tried to mess with docker-compose.yml, but every attempt failed.

I found a workaround, that is to mount HDD to blocks folder and SSD to the index folder. (I found some people use a network folder for blocks folder but sometimes they failed cuz levelDB doesn’t go along with Samba.)

  1. Create additional partition on SSD
    I tried to decrease one of 3 original partitions on SSD to create additional partition, but it leaded to fatal error to filesystem. I didn’t know how to fix it so I reinstalled Ubuntu.
    During reinstall I made 4 partitions, but Ubuntu was not installed on SSD due to the Logical Volume Manager of former Ubuntu. I had to remove 3 original partitions, create 1 whole partition, format that partition, and then install new Ubuntu with 4 partitions. LVM forced me to use a whole disk so I gave up using them, and just installed Ubuntu without LVM.

/dev/sdc1 - BIOS boot
/dev/sdc2 - mounted at /
/dev/sdc3 - mounted at /boot
/dev/sdc4 - unmounted

  1. Install Umbrel and Bitcoin, then stop them
    curl -L | bash
    ~/umbrel/scripts/app install bitcoin

  2. Mount HDD to blocks folder
    mount /dev/sdb1 ~/umbrel/app-data/bitcoin/data/blocks

  3. Mount SSD to index folder
    mount /dev/sdc4 ~/umbrel/app-data/bitcoin/data/blocks/index

  4. Edit /etc/fstab
    echo “/dev/sdb1 ~/umbrel/app-data/bitcoin/data/bitcoin/blocks ext4 defaults 1 1” >> /etc/fstab
    echo “dev/sdc4 ~/umbrel/app-data/bitcoin/data/bitcoin/blocks/index ext4 defaults 1 1” >> /etc/fstab

  5. It was a long journey for noob who uses Linux for the first time but I learned a lot through it. One hard lesson is just use one 1TB or 2TB SSD. I wish Umbrel support separating blocks directory from data directory at application level as Bitcoin core program does.