FreeBSD Move /usr or /var File System To Another Hard Disk

Posted on in Categories , , , last updated November 7, 2009

My current /usr file system was full, so I ended up adding a new disk to my FreeBSD server. I’ve created a new partition at /dev/ad6s1 (size is 250G). How do I move my /usr file system over to my huge new disk at /dev/ad6s1?

First, you need to partition and label the new disk with either sysinstall, or fdisk and disklabel. The procedure to add a new hard disk under FreeBSD is discussed here.

Once new disk added, create a temporary mount point to mount your /dev/ad6s1, enter:
# mkdir /newuser
Reboot and drop system to a signal user mode to migrate to a new disk:
# reboot
At boot prompt type:
# boot -s
Mount all file systems:
# mount -a -t ufs
Mount new /newuser file system:
# mount /dev/ad6s1 /newuser
Copy old /usr to /newuser:
# cd /newuser
# dump 0af - /usr | restore rf -

Sample outputs:

Fig.01: FreeBSD Copy /usr To New Disk Using dump Command
Fig.01: FreeBSD Copy /usr To New Disk Using dump Command

Open /etc/fstab, enter:
# vi /etc/fstab
Modify /usr entry to point to a new location:

/dev/ad6s1   		/usr  		ufs 	rw 		2 	2

Save and close the file. Reboot the server:
# reboot
Make sure everything is working fine after reboot:
# df -H
# tail -f /var/log/messages

Recommend readings:

  • man pages dump, fstab, mount, restore

Posted by: Vivek Gite

The author is the creator of nixCraft and a seasoned sysadmin and a trainer for the Linux operating system/Unix shell scripting. He has worked with global clients and in various industries, including IT, education, defense and space research, and the nonprofit sector. Follow him on Twitter, Facebook, Google+.

4 comment

  1. Awww.. /usr has nothing to do with “user”.. It’s “Unix System Ressources”.

  2. when i type # mount /dev/ad1s1 /new
    it returns a ‘mount: /dev/ad1s1 invalid argument’ error.

  3. you can use fdisk, bsdlabel & newfs without sysinstall
    # fdisk -BIq /dev/ad1
    # bsdlabel -w -B /dev/ad1s1 auto
    # newfs /dev/ad1s1a
    # mount /dev/ad1s1a /mnt

Comments are closed.