Please reboot the server to confirm that the fstab is mounting correctly on reboot before getting rid of the uploads-old.
When you've confirmed that you're running on the new BS mount (upload a new file and see where it's placed), you can safely remove the uploads-old folder:

@joostvanhoutte Just remember to remove any define('..... you've made, since this setup will make it so WordPress doesn't know it's a different mount - and you want to keep everything besides uploads on the local SSD storage.

If I have multiple websites in a droplet and i wish to migrate the upload folders to block storage, I have to create a new volume for each website? Is it possible to use one volume for all of my websites hosted in a droplet?

If you need further help, it might be easier to create a new question thread and just link to this thread - as this thread is already kinda long and a little specific for the one-location block storage.

DigitalOcean Block Storage volumes provide an easy method of adjusting the storage space available to a Droplet. After creating and attaching a volume to a Droplet using the DigitalOcean control panel or API, the raw storage space must be partitioned, formatted, and mounted before it can be used. This guide will cover how to complete these steps when working with volumes.

Hey, hansen. You are my new Batman! :D
I have been banging my head for weeks but finally you rescued me. I'm running wp using serverpilot. I followed your tutorials, everything working as i expected.
Just one more thing, I've got a new lost+found directory with permission of rwx-----. My question is what is it? Is it normal? & more importantly is it safe to remove?

You need to provide a relative path that works its way back to /mnt, otherwise the directory you define using UPLOADS will be automatically created in the home directory.

For example, using:

define( 'UPLOADS', '/mnt/folder/uploads');

If you're home directory (where index.php) is:

/home/myuser/public

Using that define construct will result in mnt being created at:

/home/myuser/public/mnt

So you'd only be moving the uploads to the home directory.

You'd need to use something such as:

define('UPLOADS', '../../../../mnt/path/to/uploads');

Yes, it's weird. I don't know why WordPress requires such path definitions, but it does and it's really annoying :-).

That said, the above will cause issues too as it will change the URL's for your uploads to look like:

http://mydomain.com/../../../../mnt/path/to/uploads/myfile.png

Which won't work and looks awful.

Using the WP_CONTENT_* and WP_PLUGIN_* constants is what you need to use, though they too cause issues. While files are uploaded and directories are created, it's as if WordPress just won't read the files, even when proper permissions are set.

I actually have a droplet deployed right now and am testing both -- neither seem to work as they should. But the issue isn't block storage, it's in how WordPress handles these types of things.

I can create a standard PHP script to test the same kind of pull from block storage and it works just fine, and as expected. WordPress, despite having these options, seems to handle things much differently.

@jtittle Interesting, I didn't know WP was so bad at handling scattered system.
I have only a single server with massive storage, where I've setup the mount to the exact WP uploads folder - that way WP don't need to think about special rights, linking or anything else.

@hansen@jtittle Thanks for the input guys! I guess my only option right is to just increase the size of the storage on my droplet then? Do you think it would be possible to contact DO and ask them to just upgrade the storage size? I'm currently paying $40/month and I have about 1GB of space left, but the other specs are already needlessly overpowered. If I were to upgrade I'd effectively be paying double for an extra 20GB of storage.

I was wondering if anyone encountered issues restoring a backup using UpdraftPlus when Block Storage is used to substitute /wp-content/uploads?

For some reason I am getting this error:

Warning: copy(): The first argument to copy() function cannot be a directory in /home/describee/publichtml/wp-admin/includes/class-wp-filesystem-direct.php on line 243
Error message: Could not move the files into place. Check your file permissions.
Error data: /home/describee/publichtml/wp-content/upgrade/02f63344/uploads/cache -> /home/describee/public_html/wp-content/uploads/cache

I have already chown'ed the drive to my username, and ensured permissions are set to 775 or 777 (either doesn't seem to work). In addition, I have also mounted the drive as my user instead of root. Anyone knows why it is still asking me to check my file permissions? Thanks!