Feature Request: The client should have a separate option for the storage location of the database data #10736

Open
fresheneesz opened this Issue Jul 3, 2017 · 5 comments

Comments

Projects
None yet
4 participants

After wondering why my bitcoin client was taking literally weeks to download the blockchain, I found out that it was going so ultra slow because I was storing the data directory on an external hard drive. After using a symlink to put the database data on my SSD and keep the blockchain stored on my external HD (via the symlink), my blockchain validation sped up by at least 6 fold. Details here: #10647 .

Anyways, because this can be so important for a non-frustrating experience for users who don't have enough SSD space, I'm requesting that bitcoin core store the database data on the same drive as the program executables, and give the user the option of only where to put the blockchain data (what is currently the blocks directory within the data directory). Alternatively, we could give the user separate options for where to store the blockchain and where to store everything else, with some info about why the storage location is important.

If I'd wanted to buy something with bitcoins in the last month, I simply wouldn't have been able to because my client was taking forfuckingever to sync up. Its really important to make these kinds of performance improvements idiot-proof so users with less technical savvy can use bitcoin core without rage quitting.

Contributor

corebob commented Jul 10, 2017

store the database data on the same drive as the program executables

This shouldn't be necessary. I have everything on a secondary drive and have no issues with speed.
It's probably the USB that causes the problem

Owner

sipa commented Jul 10, 2017

The client should store the database data on the same drive as the program

That's not generally possible. On UNIX systems, the filesystem with binaries may not be writable by the user.

I do however think it's useful to allow the chainstate to be stored in another directory from the blockchain. The former mostly needs high IOPS, the latter only needs serial read/writes.

fresheneesz changed the title from Feature Request: The client should store the database data on the same drive as the program to Feature Request: The client should have a separate option for the storage location of the database data Jul 10, 2017

fresheneesz commented Jul 10, 2017 edited

Alright, I changed the name of the request to be a separate option for storage location.

@corebob Sipa also mentioned that USB is probably the issue. Do you have any information you could point me to that substantiates this? I don't see any logical reason why USB would cause a bottleneck here nor does searching the googles turn up anything obvious.

Contributor

corebob commented Jul 11, 2017

@fresheneesz
Not at the moment, it was just an assumption I made based on your description.

jimhashhq commented Jul 24, 2017 edited

Hi, I just opened: pull request #10922 which adds a file-partition.md doc file which describes what I believe to be a simple interim solution to putting the large blockchain files on an external drive (like my inexpensive USB 3.0 in the example). Longer term, it might be easier if there was a configuration setting or flag for storing all of the leveldb stuff on an internal drive and/or the blockchain blocks folder on an external drive. As I mentioned in the pull request, this may not be the best way for these instructions to reach their intended audience so please feel free to redirect me. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment