Put /usr on a different drive
ldrada at gmail.com
Sun Jan 14 09:46:50 UTC 2007
On 1/14/07, Jerry McAllister <jerrymc at msu.edu> wrote:
> On Sun, Jan 14, 2007 at 12:08:13AM +0100, Daniel A. wrote:
> > Hi,
> > I'm wondering if someone could point me in the right direction of
> > moving the entire /usr partition to a second hard disk, given that I
> > am on an existing (newly installed) install of FreeBSD.
> > Also, is it possible to specify something like this during the
> > installation itself?
> It is quite possible, but not quite as convenient as it could be if
> you are not familiar with the installer.
> > Any possible google queries, links, articles, et cetera are warmly
> > welcomed. I've tried throwing a few keywords at google, but it all
> > returns off topic pages.
> In the last six months I have posted fairly complete ways of
> doing this several times on this list. It is easy. I suggest
> you look throught the FreeBSD questions archives. Most of my posts
> assume things are being moved to an existing file system, but
> the process is the same.
> First, you should look at what is using up space in your /usr filesystem.
> It may be that something is growing in a way you do no want.
> For that, use the 'du' command something like:
> cd /usr
> du -sk *
> Cd in to any directory that seems unreasonable and repeat the du to
> narrow things down.
> One thing that is often done, but I don't recommend is putting
> user accounts and other things that can grow unexpectedly in to /usr.
> I make a separate file system for user accounts, generally using
> the /home mount point. I also put /usr/ports in a different file system.
> If you finally decide that you do need to add a disk - a very real
> possibility - then choose a good quality drive of the same general
> type your already have - SCSI, IDE/SATA, SAS - aind physicaly install it.
> Boot the machine and look for in dmesg.
> It will either show up as dann or adnn where nn is a device number.
> It will be da for SCSI or ad for IDE family. The first drive will be 0
> the second will be 1, etc. Probably your boot drive is 0 and the
> one you add will be 1. If they are IDE then ad0 and ad1.
> Next, take a look at the drive with fdisk. Presuming it is ad1, do:
> fdisk ad1
> It should find the disk and think everything is in slice 1 unless the
> disk was formerly used in a different system, in which case it should
> see the disk, but stuff may be spread ofer up to 4 slices (occasionally
> miscalled partitions).
> My examples the new drive is IDE family and is the second disk.
> You can make sure everything that might be left on it is effectively
> wiped out by doing:
> dd if=/dev/zero of=/dev/ad1 bs=512 count=65
> Then, to make the disk usable you need to do an fdisk, bsdlabel and newfs.
> Presuming you will use the whole disk for /usr (maybe you will really
> want to use it in a more complex way, but the process is essentially
> the same) and presuming you don't want to make the drive bootable - and
> install an OS on it in a separate root, then
> The fdisk creates the slice table and writes sector 0.
> fdisk -I ad1
> writes one single slice containing all the usable space on the drive.
> NOTE, although drives are numbered 0-nn, slices are numbered 1-4.
> Then you need to create a label in slice 1
> bsdlabel -w ad1s1
> creates the initial label - note the additional 's1' to specify the slice.
> Now, divide up the slice in to partitions.
> In this I am presuming you want a single large partition.
> Use the bsdlabel in edit mode.
> bsdlabel -e ad1s1
> You will be put in a vi edit session unless you have a different
> default editor specified in an environment variable.
> That will bring up a screen with the slice label as it currently is.
> Ignore all the stuff specifying drive specs.
> For one partition, change only one field.
> There should be a line starting with 'a:'
> Change it so it looks like:
> a: * 0 4.2BSD 2048 16384 32776
> Leave the line that starts 'c:' as is.
> But, if it doesn't give you an 'a:' line, copy the 'c:' line
> and use it and just replace the size field with the '*'
> You don't really need to change the fsize, bsize and bps fields, but
> suggest you make them as I have them above.
> Then you have to create a file system on that partition.
> Do that with newfs.
> newfs /dev/ad1s1a
> Newfs needs the full device spec as above.
> now you can mount and write to the filesystem.
> I'd suggest you do this next stuff in single user mode, but
> it isn't absolutely essential.
> Make a temporary mount point and mount it.
> mkdir /newusr
> mount /dev/ad1s1a /newusr
> Copy the existing /usr to the new space, probably using tar
> I use an interim file, but you can use pipes.
> If your current /usr is really a whole partition in and of itself,
> then I would use dump/restore instead of tar for this
> cd /usr
> tar cvpf /newusr/usr.tar *
> cd /newusr
> tar xvpf usr.tar
> The 'v' flag is not essential, but gives you the confidence
> something is happening.
> Using dump/restore instead of tar, do:
> cd /newusr
> dump 0af - | restore -rf -
> Now, get rid of the old /usr and make it use the new one.
> cd /
> mv usr oldusr
> umount /newusr
> mount /dev/ad1s1a /usr
> Check everything out and then delete obsolete stuff
> cd /
> rm -rm oldusr
> cd /usr
> rm usr.tar (of course, if you don't usr tar, there will be no tar file)
> Modify /etc/fstab so it will mount things correctly on bootup.
> Put a line there like:
> /dev/ad1s1a /usr ufs rw 2 2
> Then reboot and things should be just hunkie-dori.
> Next time, do a little archive searching, too.
> Plus, all of everything I wrote here other than a few extra comments
> is directly out of the man pages for fdisk, bsdlabel and newfs.
> So, read through them carefully.
> > Sincerely,
> > Daniel A.
> > _______________________________________________
> > freebsd-questions at freebsd.org mailing list
> > http://lists.freebsd.org/mailman/listinfo/freebsd-questions
> > To unsubscribe, send any mail to "freebsd-questions-unsubscribe at freebsd.org"
That sounds absolutely fantastic!
I did think over just copying the contents and then mounting the drive
as /usr, but I was unsure if doing it so simple would break something.
Apparently it wont, if I just do it in single-user mode?
Anyway, now that I've got that settled, would anyone recommend me what
to do with the now empty space in ad0?
My current layout is like this:
ad0 - 60GB
ad1 - 120GB
(Currently only one partition, occupying full drive)
Once I move my /usr to ad1, I'll have 55 gigabytes of space available
on ad0, and nowhere to put it. I've thought of assigning that space to
/var, but 55G would be overkill for a little home server like mine,
don't you think?
Maybe I should just assign ad1 to /home, which is basically the one
place where I use most disk space?
Oh snap, never mind answering this email. I think that is exactly what I'll do!
And thanks for the replies, Jerry and Andrew.
Daniel A. A.
More information about the freebsd-questions