17

I have an Amazon EC2 instance which has given me a tiny '/' partition and a large '/mnt' partition. As such, I have moved my mysql data-dir over to the /mnt partition. However I am now having issues with the /tmp folder running out of space on my massive join queries and am trying to also move /tmp to /mnt/tmp. I tried to do this with a symlink but that results in the mysql service being unable to start.

Please advise on how to move the storage of /tmp over to /mnt (/dev/xvdb)

Braiam
  • 69,112
Programster
  • 6,039

2 Answers2

16

You can bind the /tmp mount point to /mnt/tmp:

sudo mount -B /tmp /mnt/tmp
Braiam
  • 69,112
3

Moving a "/tmp" partition requires some extra not suggested in this wrong answer https://askubuntu.com/a/371628/298086.

Moving data implies erase data from original partition once cloned to destination one, what is absolutelly not performed by a bind mount.

RECOMENDATION: Read this brilliant post if you wanna understand what a bind mount is https://unix.stackexchange.com/a/198591

If you give a try to the right mount option ("MOVE", not bind):

mount -M /tmp /mnt/tmp

I'm convinced it will fail reporting that "tmp is a shared mountpoint" (what indeed means "I cannot move a mountpoint if still being any process using it")

The "answer" you are looking for, may require stopping and restarting services using/accessing /tmp, before moving content.

You can list those services/processes by running:

lsof +D /tmp/

So once you listed what is actually accessing/using /tmp, is when you can reallly decide "how to act".

In my opinion most safe way passes-by

  1. Stopping all services accessing /tmp (if you can do that)
  2. Copying entirely /tmp contents to a new place
  3. Editing /etc/fstab and changing /tmp mount point physical location (no matter if is a bind or device mount)
  4. Restarting the system to perform the remount

But there is another way what does not require system restart, but is not safer as previous one. It is described here and consists in umounting /tmp in a lazy way, what should allow you to execute mount -M

This two links will be helpful for your demand:

xsubira
  • 31