A quick post explaining how you can move out /tmp directory from / to new mount point on the new disk
One of the headaches for sysadmin is getting a file system full. It can have many reasons from blaming application, and un-adequate capacity planning to an un-organized file system structure. We are going to look at the file system aspect of it.
Server with a single disk approach i.e. root disk is formatted as one partition and mounted as /
is common these days. But, there are servers on-prem that still follow the slicing of disks and mounting different root FS on their approach. So if your server is one of them and for some reason, your /tmp
directory is part of /
and not separate mount point then this article is for you.
In this article, we will walk you through step by step procedure to mount /tmp
on another disk as a separate mount point. We are going to separate out /tmp
directory from /
file system as /tmp
mount point. We are taking an example with LVM but the procedure remains the same if you want to mount /tmp
on another partition. Only replace LVM parts i.e. VG, and LV stuff with an equivalent partition creation procedure.
Make sure you have a valid backup of the server before proceeding.
How to move /tmp as new mount point with downtime
/tmp
is used by many processes on the server to open up temp files during execution. So this directory is always in use and rebooting in single-user mode to perform a such activity is the safest and clean way. You can check processes using /tmp
by lsof
command.
The complete procedure can be done in the below order –
- Prepare a new disk for /tmp
- Create LV on new disk (pvcreate, lvcreate)
- pvcreate /dev/sdb
- vgcreate vg_tmp /dev/sdb
- lvcreate -l 100%FREE -n lv_tmp vg_tmp
- Format LV with the filesystem of your choice
- mkfs.ext4 /dev/vg_tmp/lv_tmp
- Mount it on a temporary mount
- mount /dev/vg_tmp/lv_tmp /mnt
- Create LV on new disk (pvcreate, lvcreate)
- Copy data from /tmp directory to the new disk
- cp -pr /tmp/* /mnt
- ls -lrt /mnt
- ls -lrt /tmp
- Reboot server into single-user mode
- Prepare new /tmp mount point
- Delete/move existing /tmp directory depending on space availability in /
- rm -rf /tmp OR
- mv /tmp /tmp.orig
- Create new /tmp for the mount point
- mkdir /tmp
- Set permission and ownership
- chmod 1777 /tmp
- chown root:root /tmp
- Add entry in /etc/fstab
- echo “/dev/vg_tmp/lv_tmp /tmp defaults 1 2″>>/etc/fstab
- Delete/move existing /tmp directory depending on space availability in /
- Reboot the server normally.
- Log in and check /tmp is mounted as the separate mount point.
Setting up permission 1777
is an important step in this. Otherwise /tmp will not function as it is expected to.
Hamza says
Thank you for your help,I allow myself to add one more thing, you must specify the fielsystem type in 4th step, otherwise after, the reboot, the OS goes straight to emergency mode and event when you delete the line from /etc/fstab, and try to mount it by mount -a it will reply unkown filesystem (ebcause he is taking defaults as a FS type..)
I tried this on RHAT7.2 3.10.0-327.el7.x86_64
Hamza says
Thank you for your post, it was very helpful
I allow myself to add one more thing, you must specify the fielsystem type in 4th step, otherwise after, the reboot, the OS goes straight to emergency mode and event when you delete the line from /etc/fstab, and try to mount it by mount -a it will reply unkown filesystem (ebcause he is taking defaults as a FS type..)
I tried this on RHAT7.2 3.10.0-327.el7.x86_64
Ori says
There is a typo in 3.Set permission and ownership
chwon -> chown
Shrikant Lavhate says
Thank you, Ori. Typo is corrected now.