/home /opt /tmp /usr /var on a single partition of another hard drive Debian 8
What you're looking for is bind mounts. See http://man7.org/linux/man-pages/man8/mount.8.html for details.
Here is a step by step guide to moving /home, /opt, /tmp, /usr, and /var to a single separate partition.
Disclaimer
I am not responsible for any damage or loss of data caused by following this guide. As always, ensure all important data is backed up before proceeding.
Step 1
Boot from your favourite live CD. Example: https://www.debian.org/CD/live/
Switch to root shell. This can often be done with sudo su -
Step 2
Mount your primary and secondary partitions. We'll assume that they are /dev/sda1
and /dev/sdb1
for the purpose of this guide.
mkdir /mnt/sd{a,b}1
mount /dev/sda1 /mnt/sda1
mount /dev/sdb1 /mnt/sdb1
Step 3
Move existing folders/data from primary to secondary partition. This may take a few minutes depending on the size of the folders and speed of your drives.
mv /mnt/sda1/{home,opt,tmp,usr,var} /mnt/sdb1/
Step 4
Create empty folders on the primary partition to give us mount points.
mkdir /mnt/sda1/{home,opt,tmp,usr,var} /mnt/sda1/mnt/sdb1
Step 6
Edit your fstab to automatically mount the secondary partition and bind mount the appropriate folders. This step is largely subjective to your current configuration and may not work as a direct copy/paste.
Edit /mnt/sda1/etc/fstab
with your favourite editor.
You can find detailed information on the fstab at http://man7.org/linux/man-pages/man5/fstab.5.html
First we need to mount the secondary partition before we can bind mount to it. This partition may already be in your fstab. If so, edit/remove the configuration accordingly. Here, we'll assume it's an ext4 partition with default options.
/dev/sdb1 /mnt/sdb1 ext4 defaults 0 2
Next, configure the bind mounts.
/mnt/sdb1/home /home none defaults,bind 0 0
/mnt/sdb1/opt /opt none defaults,bind 0 0
/mnt/sdb1/tmp /tmp none defaults,bind 0 0
/mnt/sdb1/usr /usr none defaults,bind 0 0
/mnt/sdb1/var /var none defaults,bind 0 0
Save your changes to the fstab.
Step 7
Reboot
Related videos on Youtube
XMight
Currently Java Engineer, past .NET, C# and Microsoft Certified Professional since July 2014. Love R&D! Nothing impossible... just think!
Updated on September 18, 2022Comments
-
XMight almost 2 years
I have a production server for which I would like to move the /home, /opt, /tmp, /user, /var to the ~300GB partition specially created for this purpose.
No straightforward explanation found on how to do this, except that I can put every folder specified above on a separate partition, but I don't want to do that. Reasons:
- I don't know how much space these folders might use in the end, so one drive with all of it will do nicely.
- I see it much simpler for me. I don't want to have tons of partitions on the same drive.
- I will install a server app, that will do much I/O and a MySQL server, and I don't want it to slow down the system hard drive or interfere with it.
- Intelligent partitioning
Is there any way to achieve what I want, so all would work as if the folders are on the same hard drive?
P.S. These are the most rellevant links I've found so far:
Link3_LinuxNewbieAdministrator
Thank you!
UPDATE:
All mounted!
UUID=rootUUID / ext4 errors=remount-ro 0 1
UUID=swapUUID none swap sw 0 0
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0
UUID=otherDriveUUID /mnt/sdb2 ext4 defaults 0 1
/mnt/sdb2/tmp /tmp none defaults,bind 0 2
/mnt/sdb2/local /usr/local none defaults,bind 0 2
/mnt/sdb2/home /home none defaults,bind 0 2
/mnt/sdb2/opt /opt none defaults,bind 0 2
/mnt/sdb2/var /var none defaults,bind 0 2 -
XMight over 8 yearsThank you very much for the reply. I will try all steps, and if these will work, I will accept the answer. Also, very nice done and pretty explicit!
-
XMight over 8 yearsWhat I get is: mounting /mnt/sdb2/usr on /root/usr failed: No such file or directory, though I created the empty folder under root, and the other one contains all the data I moved. Also, fstab contains: /dev/sdb2 /mnt/sdb2 ext4 defaults 0 2 and /mnt/sdb2/usr /usr none defaults,bind 0 0 (Also with all other folders). What could be the problem?
-
Jonathan Rouleau over 8 yearsAs you are mounting in
/root
, I assume you are sand boxing the mounts first. Have you runmount -a
(mounts all entries in/etc/fstab
) or rebooted after updating your fstab? -
XMight over 8 yearsI modified everything using debian live CD as you suggested. Rebooted. The message appears just after reboot, with some failed messages after it. Did not run any mount -a
-
Jonathan Rouleau over 8 yearsAre you intentionally trying to mount in
/root
? Does/root
exist anywhere in your fstab? -
XMight over 8 yearsI did not understand the question. My fstab looks like this: UUID=rootuuid / ext4 errors=remount-ro 0 1 uuid=swapuuid none swap sw 0 0 /dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0 /dev/sdb2 /mnt/sdb2 ext4 defaults 0 2 /mnt/sdb2/usr /usr none defaults,bind 0 0 and all other folder mountings