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

----- Original Message ----- From: "Jerry McAllister" <[email protected]>
To: "Grant Peel" <[email protected]>
Cc: "FreeBSD Questions List" <[email protected]>
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    [email protected]


-Grant.

P.S. I AM reading all the manuals and handbooks, I just can't afford to mess this up :-)

_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[email protected]"





_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[email protected]"

Reply via email to