Replace SCSI Drive

Grant Peel gpeel at thenetnow.com
Wed Jan 7 13:18:55 PST 2009


Jerry, Thanks a Tera for the concise reply. Please see the answers below.

----- Original Message ----- 
From: "Jerry McAllister" <jerrymc at msu.edu>
To: "Grant Peel" <gpeel at thenetnow.com>
Cc: "FreeBSD Questions List" <freebsd-questions at freebsd.org>
Sent: Wednesday, January 07, 2009 3:58 PM
Subject: Re: Replace SCSI Drive


> On Wed, Jan 07, 2009 at 01:31:25PM -0500, Grant Peel wrote:
>
>> Hi all,
>>
>> I currently have a SCSI drive that *may* be going bad on one of my 
>> production servers. I have lots of backups :-)
>>
>> Scenario:
>>
>> The drive that is showing the occasion error, is a 76 GB Seagate SCSI 10K 
>> spin drive. It is at the network center about 120 miles away. This drive 
>> is not using anywhere near 76 GB, and the server will never need 76 GB. I 
>> estimate its using about 20 GB now.
>>
>> I am at home, and have a barely used 36 GB Seagate 10K SCSI drive here, 
>> currently hooked up to my home (Windows XP BOX) via an Initio SCSI 
>> adaptor.
>>
>> What I would like to do is:
>>
>> Using my windows box, FDISK and set up the disk slices at home, using 
>> some kind of FreeBSD boot disk. I will of course, make sure there is 
>> enough room on each file system to accomodate the data from the other 
>> (going bad) disk.
>>
>> Take the pristine disk to the Network Center,
>>
>> Shut down all software on the machine that has the bad disk, and make 
>> full dumps of all filesystems on that machine (/, /var, /home, /usr) and 
>> move the over to the new formatted drive.
>>
>> Since I have never done this before, I have some questions:
>>
>> !. Can I use a FreeBSD bootable installation disk (6.4) made from an ISO 
>> image, to boot my PC and make the filesystems on the 36GB drive, without 
>> actually installing FreeBSD? (Please feel free to tell me exactly how 
>> :-)).
>>
>> 2. Once I get that drive to the network center, and restore the dumps to 
>> it, how do I ensure the drive is bootable? (I assume I actually do that 
>> in the previous step).
>>
>> 3. Is it possible to skip step one altogether and use the instructions in 
>> the  man pages regarding "Restoring a filesystem" and makeing the 
>> 'Pristine' filesystem? If so, again, how do I ensure the disk is 
>> bootable?
>>
>> Thanks a billion in advance,
>
>
>
> I have a few questions.
>
> First, it sounds like this is the boot disk and is the only disk on
> the machine.   Is this true?   If it is not the boot disk, then it
> is very easy.  If it is the boot disk, then it is still easy, but
> just a little more work.

This is the only drive on the machine, and it is (obviously) the boot disk.

>
> Second, since you have to take the replacement disk to the Network Center
> and do the dumps and restores there anyway, why bother doing the fdisk,
> bsdlabel and newfs remotely?

I can do either (do it at home, or at the network center). I should mention 
now, the servers are Dell servers and have a DRAC card, so I can access 
remotely.

> That is the easy and quickest part anyway.
> So, just do it there.   Oh, can you get a console on the machine? I 
> presume
> so if you were going to do the dump/restore there.

Yes as mentioned, I have a DRAC card for remote access, and I have SSH 
(Putty) access as root. Also, I should mention I have an NFS mount to keep 
the dumps on (on another machine).

>
> So, presuming some things:
> 1.  It is the only disk and is the boot disk. FreeBSD is the only thing 
> you want on the disk no > dual boot.

Correct,

> 3.  You can get a console on the machine at the Network Center.

Correct,

> 4.  You can successfully burn and test a boot CD with the fixit image.
>     It used to be that the fixit was included on disc 1, but in case it
>     has moved, check out its location.  Might still be there.  Just find
>     a spare machine -  even one running MS and boot the CD and select
>     the fixit image.   If it comes up, then just pull it and reboot.  You
>     don't have to bring it all the way up just to test if it is there.

Although I have heard of the Fixit console, I have never used it. I have 
several CDs I have burned using the distribution ISO image, Including the 
version I am running on the hurting machine. Can you elaborate further on 
how to bring up the Fixit console with the CD?

>
>     Make sure the fixit comes from the same version as the one you are
>     restoring to the system or you could have a problem, though probably
>     not if they are all 6.x or 7.x.
>
>     Some of them talk about a holographic image.   I never understood
>     what that was supposed to mean.   I sort of expected to see a full
>     3D image of BSDie to materialize in my office and, possibly in
>     Kirk McKusick's voice, tell me how to do whatever it is.  But, that's
>     never happened.    Not enough drugs, I suppose.
>
> Anyway, take your CD with fixit and the one you can run sysinstall from, 
> just
> in case and trundle on over to where that machine resides.
>
> Shut down the machine.
>
> Pull out the old disk and slide it in to the #2 SCSI slot (or leave it out
> until the dump/restore phase if you get nervous).
> Put the replacement disk in to the #1 (boot) SCSI slot.
>
> Plug in the monitor and keyboard.
>
> Pop in the CD with the fixit and boot up.
>
> Fixit runs from an image in memory, not from a hard disk, but, unless
> you look at devices, it looks like it is running just like you are
> used to.   Maybe that's what they mean by holographic???  The important
> thing about this is that the devices are different and any file you
> create in the mounted root will disappear when you reboot.   You may
> need to think out just where you are doing something.
>
> If it is a SCSI disk, the replacement disk should not be /dev/da0
> If you do a df(1) you should see the memory device for /
>
> Do the following:    (You may need to stick in a dd before the fdisk and
>                      bsdlabel if it already has an incompatible label on
>                      the disk or maybe none at all, but probably not)
>
> #  (dd if=/dev/zero of=/dev/da0 bs=512 count=4096)   only if needed
> #  fdisk -BI da0
> #  (dd if=/dev/zero of=/dev/da0s1 bs=512 count=4096) only if needed
> #  bsdlabel -w -B da0s1
> #  bsdlabel -e da0s1

You may have lost me here. I have used dd to clone disks before, but only 
identical size disks. Are you suggesting I dd and 73 GB disk to a 36 GB 
disk? Will that work?

>
> The fdisk makes it an all FreeBSD bootable single slice with default MBR.
> The first bsdlabel writes an initial label in that slice and puts
> in the boot block.
> The second bsdlabel brings up an edit session with the information for
> partitioning that single FreeBSD slice.   It will show one c partition
> which identifies the whole size of the slice.    Leave that c partition
> alone.   But, you can copy it to make the others and just muck with
> the numbers onb them.  Looks like you want partitions for / /var /home 
> /usr.
> You should also make one for swap and /tmp.  So, a=/, b=swap, d=/tmp,
> e=/usr, f=/var and g=/home.  Actually, make the letter names for the
> partitions match what you have now.
>
> You will first see something that looks something like:
> (The exact number will reflect the actual disk slice size)
> Remember, it is stated in 512 byte blocks (or sectors, same thing)
>
>
> 8 partitions:
> #        size   offset    fstype   [fsize bsize bps/cpg]
>  c: 75497472        0    unused        0     0         # "raw" part, don't 
> edit
>
>
> To make the disk partitions be:
> (I am just guessing on sizes     /=256MB,
> based on a machine I have       swap=1024MB,
> with a similar sized disk,      /tmp=512MB,
> but if they are like this,      /usr=4096MB (eg 4 GB),
> then                            /var=4096MB (eg 4 GB)  and
>                                 /home gets all the rest
>
> You might want to become root and then run:     bsdlabel -e da0
> before shutting the machine down just to see what is there, though
> the numbers will be different since you are putting in a different
> sized disk.   Make sure you  q!  to get out of the bsdlabel and do
> not do a write or you could cause yourself some nasty trouble - though
> it shouldn't let you actually do the write, I wouldn't want to
> test it out accidently.
>
> You want to edit it to make it look something like:
>
> 8 partitions:
> #        size   offset   fstype  [fsize bsize bps/cpg]
>  a:   524288        0   4.2BSD    2048 16384 32776
>  b:  2097152        *     swap
>  c: 75497472        0   unused       0     0        # "raw" part, don't 
> edit
>  d:  1048576        *   4.2BSD    2048 16384     8
>  e:  8388608        *   4.2BSD    2048 16384 28552
>  f:  8388608        *   4.2BSD    2048 16384 28552
>  g:        *        *   4.2BSD    2048 16384 28552
>
> By using the '*' for offset, bsdlabel will calculate it correctly.
> By using '*' for size on the last partition (g in this case), bsdlabel
> will put all the rest of the usable space in that partition.   But, the
> first offset needs to be specified as '0' and c must be left alone.
>
> When you write and exit the edit session, bsdlabel will write the
> partition table to the slice and it is now completely labeled.
>
> Finally you want to newfs each partition.   Taking the defaults
> should be just fine, but remember, you have to use the full device
> name on the newfs command, not shortened as in fdisk and bsdlabel.
> (Note, do not newfs the swap partition or the 'c' partition)
>
>  newfs /dev/da0s1a
>  newfs /dev/da0s1d
>  newfs /dev/da0s1e
>  newfs /dev/da0s1f
>  newfs /dev/da0s1g
>
> Now the disk is ready to write.   You must make mount points and mount
> the partitions.
>
>  mkdir /oldroot
>  mkdir /newroot
>  mkdir /oldusr
>  mkdir /newusr
>  mkdir /oldvar
>  mkdir /newvar
>  mkdir /oldhome
>  mkdir /newhome
>
> (unless you have been doint something foolish, you don't have to
> dump/restore anything from /tmp)
>
> Presuming you put that old disk in the second SCSI slot, which
> would make it /dev/da1 (and presuming my speculative partition
> assignments are what you used - use what you really have)
>
>  mount /dev/da0s1a /newroot
>  mount /dev/da1s1a /oldroot
>  mount /dev/da0s1e /newusr
>  mount /dev/da1s1e /oldusr
>  mount /dev/da0s1f /newvar
>  mount /dev/da1s1f /oldvar
>  mount /dev/da0s1g /newhome
>  mount /dev/da1s1g /oldhome
>
> Then do the dump/restores from the old disk to the new.
>
>  cd /newroot
>  dump 0af - /oldroot | restore -rf -
>  cd /newusr
>  dump 0af - /oldusr | restore -rf -
>  cd /newvar
>  dump 0af - /oldvar | restore -rf -
>  cd /newhome
>  dump 0af - /oldhome | restore -rf -
>
> At this point, remove the CD and reboot and it should work just fine.
> Your old disk will still be there if you want to look at it for anything,
> but everything should be on the new one.  Note:  remember those mount
> points you created for the dumps will be gone after the reboot, because
> they are created in that memory file system of the fixit.  So, if you
> want to mount something from the old disk, you will need to make the
> mount points again.
>
> It looks like a lot of stuff, but it actually goes pretty quickly
> until you get to the dump/restores.   The big ones can take a while.
>
> Have fun,
>
> ////jerry    Jerry McAllister    jerrymc at msu.edu
>
>
>> -Grant.
>>
>> P.S. I AM reading all the manuals and handbooks, I just can't afford to 
>> mess this up :-)
>>
>> _______________________________________________
>> 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"
>>
>
> 




More information about the freebsd-questions mailing list