From owner-freebsd-questions@FreeBSD.ORG Sun Jan 14 00:56:23 2007 Return-Path: X-Original-To: questions@freebsd.org Delivered-To: freebsd-questions@FreeBSD.ORG Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id ECE7D16A407 for ; Sun, 14 Jan 2007 00:56:23 +0000 (UTC) (envelope-from jerrymc@gizmo.acns.msu.edu) Received: from gizmo.acns.msu.edu (gizmo.acns.msu.edu [35.8.1.43]) by mx1.freebsd.org (Postfix) with ESMTP id B100413C457 for ; Sun, 14 Jan 2007 00:56:23 +0000 (UTC) (envelope-from jerrymc@gizmo.acns.msu.edu) Received: from gizmo.acns.msu.edu (localhost [127.0.0.1]) by gizmo.acns.msu.edu (8.13.6/8.13.6) with ESMTP id l0E0pZM0015524; Sat, 13 Jan 2007 19:51:35 -0500 (EST) (envelope-from jerrymc@gizmo.acns.msu.edu) Received: (from jerrymc@localhost) by gizmo.acns.msu.edu (8.13.6/8.13.6/Submit) id l0E0pZrQ015523; Sat, 13 Jan 2007 19:51:35 -0500 (EST) (envelope-from jerrymc) Date: Sat, 13 Jan 2007 19:51:35 -0500 From: Jerry McAllister To: "Daniel A." Message-ID: <20070114005135.GA15485@gizmo.acns.msu.edu> References: <5ceb5d550701131508t2922edccw5c4ff5c769012aa7@mail.gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <5ceb5d550701131508t2922edccw5c4ff5c769012aa7@mail.gmail.com> User-Agent: Mutt/1.4.2.2i Cc: FreeBSD Questions Subject: Re: Put /usr on a different drive X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 14 Jan 2007 00:56:24 -0000 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. ////jerry > > > Sincerely, > Daniel A. > _______________________________________________ > freebsd-questions@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-questions > To unsubscribe, send any mail to "freebsd-questions-unsubscribe@freebsd.org"