Actual moving of tablespaces in Postgres, not copy-delete I found that

ALTER DATABASE databasename SET TABLESPACE tablespacename


Copies the data and (I believe, couldnt check it) deletes the source after all is done. I need actual movement, because I have a large database that want to move to its own tablespace and doing this takes all the remaining storage.

Is any workaround for this?
No, there is no such way.

PostgreSQL does not know about the underlying storage, so it doesn't know when to perform a hard link instead.

Besides, it makes no sense to have two tablespaces on the same file system, and with different file systems movement means copy + unlink anyway.