Re: mirroring



thanks! i will try this.

Sir June






----- Original Message ----
From: Cesar Covarrubias <cesar@xxxxxxx>
To: cesar@xxxxxxx; General Red Hat Linux discussion list <redhat-list@xxxxxxxxxx>
Sent: Tue, October 20, 2009 3:31:24 PM
Subject: Re: mirroring

Ok, my notes are below. Please note that this is a scary scary scary procedure to run on a production system. I don't take responsibility for any data loss or downtime. This worked for me, but I would test the procedure 10 times over on a dev box before you do it on a production box. And of course, I think it is a good idea to hear comments from fellow admins on this list for their opinions on this documentation before you do anything.

Cesar

PROCEDURE:

*Migrating an Existing Linux to RAID1*

<!> *WARNING WARNING WARNING: this copies your data from the existing disk to the new disk then overwrites your existing disk*

<!> *BACKUP existing disk NOW!*

<!> *Must be done in SINGLE-USER MODE* -- Change inittab to have level 1 as the default

*

linux:~ # telinit 1

Beginning disk onfiguration:

* /dev/sda - Installed non-raid system disk
* /dev/sda1 - boot partition
* /dev/sda2 - swap partition
* /dev/sda3 - root partition
* /dev/sdb - Empty disk for first raid mirror
* /dev/md1 - boot mirrored partition
* /dev/md2 - swap mirrored partition
* /dev/md3 - root mirrored partition

Check current RAID configuration:

*

linux:~ # cat /proc/mdstat
Personalities :
unused devices: <none>

Confirm that both disks are the same size.

*

linux:~ # cat /proc/partitions
major minor #blocks name

8 0 2097152 sda
8 1 514048 sda1
8 2 1582402 sda2
8 16 2097152 sdb

Make sure that your devices do not have labels and that you are referencing the disks by device name.

*

linux:~ # cat /etc/fstab
/dev/sda3 ext3 defaults 1 1
/dev/sda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda2 swap swap defaults 0 0

Check current boot menu:

*

linux:~ # cat /etc/grub.conf
#...
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-67.0.4.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.4.ELsmp ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-67.0.4.ELsmp.img
...

Change the partition type on the existing non-raid disk to type 'fd'

*

[root@elcapitan ~]# fdisk /dev/sda
... Command (m for help): p

Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 514048+ 83 Linux
/dev/sda2 65 319 2048287+ 82 Linux swap
/dev/sda3 320 1958 13165267+ 83 Linux


Command (m for help): t
Partition number (1-4): 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): fd
Changed system type of partition 2 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): fd
Changed system type of partition 3 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/sda: 16.1 GB, 16106127360 bytes
255 heads, 63 sectors/track, 1958 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System
/dev/sda1 * 1 64 514048+ fd Linux raid autodetect
/dev/sda2 65 319 2048287+ fd Linux raid autodetect
/dev/sda3 320 1958 13165267+ fd Linux raid autodetect


Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.

Copy the non-raid disk's partition to the empty disk.

*

linux:~ # sfdisk -d /dev/sda | sfdisk /dev/sdb Checking that no-one is using this disk right now ...
OK

Disk /dev/sdb: 1958 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

Device Boot Start End #cyls #blocks Id System
/dev/sdb1 0 - 0 0 0 Empty
/dev/sdb2 0 - 0 0 0 Empty
/dev/sdb3 0 - 0 0 0 Empty
/dev/sdb4 0 - 0 0 0 Empty
New situation:
Units = sectors of 512 bytes, counting from 0

Device Boot Start End #sectors Id System
/dev/sdb1 * 63 1028159 1028097 fd Linux raid autodetect
/dev/sdb2 1028160 5124734 4096575 fd Linux raid autodetect
/dev/sdb3 5124735 31455269 26330535 fd Linux raid autodetect
/dev/sdb4 0 - 0 0 Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)


linux:~ # cat /proc/partitions
major minor #blocks name

8 0 2097152 sda
8 1 514048 sda1
8 2 1582402 sda2
8 16 2097152 sdb
8 17 514048 sdb1
8 18 1582402 sdb2

Reboot to single user to reload sda's modified partition table

Select the non-raid disk boot (Red Hat Enterprise Linux AS)

*Build the degraded RAID array*

Create the degraded RAID array on the empty disk, but leave out the existing system disk for now.

*

linux:~ # mdadm --create /dev/md1 --level=1 --raid-devices=2 /dev/sdb1 missing
mdadm: array /dev/md1 started.

linux:~ # mdadm --create /dev/md2 --level=1 --raid-devices=2 /dev/sdb2 missing
mdadm: array /dev/md2 started.

linux:~ # mdadm --create /dev/md3 --level=1 --raid-devices=2 /dev/sdb3 missing
mdadm: array /dev/md2 started.


linux:~ # cat /proc/mdstat
Personalities : [raid1]
md3 : active raid1 sdb3[0]
13165184 blocks [2/1] [U_]

md2 : active raid1 sdb2[0]
2048192 blocks [2/1] [U_]

md1 : active raid1 sdb1[0]
513984 blocks [2/1] [U_]

unused devices: <none>

Create the degraded RAID array configuration file.

*

linux:~ # cat << EOF > /etc/mdadm.conf
> DEVICE /dev/sdb1 /dev/sdb2 /dev/sdb3
> ARRAY /dev/md1 devices=/dev/sdb1,missing
> ARRAY /dev/md2 devices=/dev/sdb2,missing
> ARRAY /dev/md3 devices=/dev/sdb3,missing
> EOF

linux:~ # cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdb2 /dev/sdb3
ARRAY /dev/md1 devices=/dev/sdb1,missing
ARRAY /dev/md2 devices=/dev/sdb2,missing
ARRAY /dev/md3 devices=/dev/sdb3,missing

Create filesystems (and swap) on new partitions:

*

linux:~ # mkswap /dev/md2
Setting up swapspace version 1, size = 526315 kB

linux:~ # mkfs.ext3 /dev/md1

linux:~ # mkfs.ext3 /dev/md3

Confirm the degraded RAID array is functioning with only the previously empty disk.

*

linux:~ # mdadm --detail --scan
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=1e7c0428:b32909e8:252c5d95:77113b4a
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=79e38a93:dc308a0a:5f431903:58f1198c
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=2bcef1d5:2f24c0a2:f3a696a4:7212f482

linux:~ # mdadm --stop --scan

linux:~ # mdadm --detail --scan

<!> WARNING: Make sure you have created the /etc/mdadm.conf above, or mdadm --assemble --scan fails.

*

linux:~ # mdadm --assemble --scan
mdadm: /dev/md1 has been started with 1 drive (out of 2).
mdadm: /dev/md2 has been started with 1 drive (out of 2).
mdadm: /dev/md3 has been started with 1 drive (out of 2).

linux:~ # mdadm --detail --scan
ARRAY /dev/md3 level=raid1 num-devices=2 UUID=1e7c0428:b32909e8:252c5d95:77113b4a
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=79e38a93:dc308a0a:5f431903:58f1198c
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=2bcef1d5:2f24c0a2:f3a696a4:7212f482

Backup the original initrd.

*

linux:~ # cd /boot
linux:~ # mv initrd-`uname -r`.img initrd-`uname -r`.img.orig

Add raid1 to kernel modules to be loaded into the initrd. If INITRD_MODULES already exists in /etc/sysconfig/kernel, add raid1 to the space delimited list. Otherwise:

*

echo INITRD_MODULES='"raid1"' >> /etc/sysconfig/kernel

Build new initrd:

*

linux:/boot # head /etc/sysconfig/kernel | grep INITRD_MODULES
INITRD_MODULES="raid1"

linux:/boot # mkinitrd -v initrd-`uname -r`.img `uname -r`

<!> WARNING: If you attempt to boot the degraded RAID array, without referencing an initrd that contains the raid1 driver or raidautorun, then you will get a message that the /dev/md2 device is not found, and the server hangs.

Modify the grub.conf so you can boot from the non-RAID or the degraded RAID array, in case you make mistakes during the migration.

* RAID root will be (hd1,0)
* root=/dev/md3
* Change initrd for non-raid boot to be .orig
o

linux:/boot/grub # vi /etc/grub.conf

linux:/boot/grub # cat /etc/grub.conf
# ...
#boot=/dev/sda
default=1
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu
title Red Hat Enterprise Linux AS (2.6.9-67.0.4.EL)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.4.EL ro root=LABEL=/ rhgb quiet
initrd /initrd-2.6.9-67.0.4.EL.img
title Red Hat Enterprise Linux AS (2.6.9-67.0.4.ELsmp)
root (hd0,0)
kernel /vmlinuz-2.6.9-67.0.4.ELsmp ro root=/dev/sda3 rhgb quiet
initrd /initrd-2.6.9-67.0.4.ELsmp.img.orig
title RAID
root (hd1,0)
kernel /vmlinuz-2.6.9-67.0.4.ELsmp ro root=/dev/md3 rhgb quiet
initrd /initrd-2.6.9-67.0.4.ELsmp.img

Copy the entire system from the non-raid device to the degraded RAID array.

*

linux:/ # cd /mnt
linux:/mnt # mkdir newroot
linux:/mnt # mount /dev/md3 /mnt/newroot
linux:/mnt # cd /mnt/newroot

Create boot dir and mount md1 on it for when files are copied

*

linux:/mnt/newroot # mkdir boot
linux:/mnt/newroot # mount /dev/md1 /mnt/newroot/boot

Do not copy mnt or proc to the degraded RAID array, but create place holders for them.

*

linux:/mnt/newroot # mkdir mnt proc boot

<!> WARNING: The /mnt/newroot/proc directory is used for the proc filesystem mount point. If it's missing, you will get an error saying /proc is not mounted, and the system will hang at boot time.

*

linux:/mnt/newroot # for x in `ls / | egrep -v "(^mnt$|^proc$)"` ; do echo "Copy files: /$x -> /mnt/newroot/$x ..."; cp -a /$x /mnt/newroot; done
Copy files: /bin -> /mnt/newroot/bin ... done
Copy files: /boot -> /mnt/newroot/boot ... done
Copy files: /dev -> /mnt/newroot/dev ... done
Copy files: /etc -> /mnt/newroot/etc ... done
Copy files: /home -> /mnt/newroot/home ... done
Copy files: /lib -> /mnt/newroot/lib ... done
Copy files: /media -> /mnt/newroot/media ... done
Copy files: /opt -> /mnt/newroot/opt ... done
Copy files: /root -> /mnt/newroot/root ... done
Copy files: /sbin -> /mnt/newroot/sbin ... done
Copy files: /srv -> /mnt/newroot/srv ... done
Copy files: /sys -> /mnt/newroot/sys ... done
Copy files: /tmp -> /mnt/newroot/tmp ... done
Copy files: /var -> /mnt/newroot/var ... done
Copy files: /usr -> /mnt/newroot/usr ... done

<!> WARNING: If you attempt to copy files that have ACL's, you will get a warning that the original permissions cannot be restored. You will need to restore any ACL's manually. You may also get some permission denied errors on files in the sys directory. Check the files, but you shouldn't have to worry about the errors.

*

linux:/mnt/newroot # ls /
. .. bin boot dev etc home lib media mnt opt proc root sbin srv sys tmp usr var

linux:/mnt/newroot # ls /mnt/newroot
. .. bin boot dev etc home lib media mnt opt proc root sbin srv sys tmp usr var

Modify the fstab file on the degraded RAID array so that the system can boot it.

*

linux:~ # cat /mnt/newroot/etc/fstab
/dev/sda3 / ext3 defaults 1 1
/dev/sda1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/sda2 swap swap defaults 0 0

linux:/mnt/newroot # vi /mnt/newroot/etc/fstab

linux:~ # cat /mnt/newroot/etc/fstab
/dev/md3 / ext3 defaults 1 1
/dev/md1 /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /dev/shm tmpfs defaults 0 0
none /proc proc defaults 0 0
none /sys sysfs defaults 0 0
/dev/md2 swap swap defaults 0 0

Reboot to single user again, using the new RAID.

At this point you should be running your system from the degraded RAID array, and the non-raid disk is not even mounted.

*

linux:~ # mount
/dev/md3 on / type ext3 (rw)
...
/dev/md1 on /boot type ext3 (rw)
...

Update the raid configuration file to include both disks.

*

linux:~ # cat << EOF > /etc/mdadm.conf
> DEVICE /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sda1 /dev/sda2 /dev/sda3
> ARRAY /dev/md1 devices=/dev/sdb1,/dev/sda1
> ARRAY /dev/md2 devices=/dev/sdb2,/dev/sda2
> ARRAY /dev/md3 devices=/dev/sdb3,/dev/sda3
> EOF

linux:~ cat /etc/mdadm.conf
DEVICE /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sda1 /dev/sda2 /dev/sda3
ARRAY /dev/md1 devices=/dev/sdb1,/dev/sda1
ARRAY /dev/md2 devices=/dev/sdb2,/dev/sda2
ARRAY /dev/md3 devices=/dev/sdb3,/dev/sda3

Add the non-raid disk partitions into their respective raid array.

<!> ***WARNING*** <!>
*THIS IS THE POINT OF NO RETURN.*
<!> ***WARNING*** <!>

*

linux:~ # mdadm /dev/md1 -a /dev/sda1
mdadm: hot added /dev/sda1

linux:~ # mdadm /dev/md2 -a /dev/sda2
mdadm: hot added /dev/sda2

linux:~ # mdadm /dev/md3 -a /dev/sda3
mdadm: hot added /dev/sda3

linux:~ # cat /proc/mdstat
Personalities : [raid1]
md2 : active raid1 sda2[2] sdb2[0]
2048192 blocks [2/1] [U_]
resync=DELAYED
md3 : active raid1 sda3[2] sdb3[0]
13165184 blocks [2/1] [U_]
resync=DELAYED
md1 : active raid1 sda1[2] sdb1[0]
513984 blocks [2/1] [U_]
[=======>.............] recovery = 38.0% (195904/513984) finish=1.3min speed=4014K/sec
unused devices: <none>

*After* recovery done, install grub onto both disks so can boot from either in case of failure.

*

linux:~ # grub

GNU GRUB version 0.95 (640K lower / 3072K upper memory)

[ Minimal BASH-like line editing is supported. For the first word, TAB
lists possible command completions. Anywhere else TAB lists the possible
completions of a device/filename.]

grub> device (hd0) /dev/sda

grub> root (hd0,0)
Filesystem type is ext2fs, partition type 0xfd
grub> setup (hd0)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd0)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd0) (hd0)1+16 p (hd0,0)/grub/stage2 /grub/grub
.conf"... succeeded
Done.

grub> device (hd1) /dev/sdb

grub> root (hd1,0)
Filesystem type is ext2fs, partition type 0xfd

grub> setup (hd1)
Checking if "/boot/grub/stage1" exists... no
Checking if "/grub/stage1" exists... yes
Checking if "/grub/stage2" exists... yes
Checking if "/grub/e2fs_stage1_5" exists... yes
Running "embed /grub/e2fs_stage1_5 (hd1)"... 16 sectors are embedded.
succeeded
Running "install /grub/stage1 (hd1) (hd1)1+16 p (hd1,0)/grub/stage2 /grub/grub
.conf"... succeeded
Done.

grub> quit

<!> **WARNING**: If you do not reinstall grub, after rebooting you will get GRUB on screen all by itself. If that happens, boot from your install CD1. Select Installation, your language, and Boot installed system. Once the system is up, follow the steps above to install grub onto the drives.

Remove the original initrd, as it is useless at this point.

*

linux:/boot # ls -l /boot/initrd*
rw-r--r-- 1 root root 788775 Mar 7 11:09 /boot/initrd-2.6.9-67.0.4.EL.img
-rw-r--r-- 1 root root 783027 Mar 7 13:19 /boot/initrd-2.6.9-67.0.4.ELsmp.img
-rw-r--r-- 1 root root 788995 Mar 7 11:05 /boot/initrd-2.6.9-67.EL.img
-rw-r--r-- 1 root root 774575 Mar 7 11:05 /boot/initrd-2.6.9-67.ELsmp.img
-rw-r--r-- 1 root root 774575 Mar 7 11:05 /boot/initrd-2.6.9-67.ELsmp.img.orig

linux:/boot # rm /boot/initrd-*.orig

linux:/boot # cd grub


Remove the non-raid boot now useless option(s).
Change the boot disk to (hd0,0), the first disk.
{{{
linux:/boot/grub # cat /etc/grub.conf
# ...
title LinuxRaid
root (hd0,1)
kernel /vmlinuz-2.6.9-67.0.4.ELsmp ro root=/dev/md3 rhgb quiet
initrd /initrd-2.6.9-67.0.4.ELsmp.img

<!> Change inittab to have level 3 or 5 (whichever it was before) as the default

Reboot multi-user

linux:~ # mdadm --detail --scan
ARRAY /dev/md2 level=raid1 num-devices=2 UUID=66e0c793:ebb91af6:f1d5cde8:81f9b986
devices=/dev/sdb2,/dev/sda2
ARRAY /dev/md1 level=raid1 num-devices=2 UUID=0c70c3f5:28556506:9bd29f42:0486b2ea
devices=/dev/sdb1,/dev/sda1


cesar@xxxxxxx wrote:
I believe I have notes on how to do this at my office. As soon as I get there tomorrow I will check and send if I have them.

Cesar
------Original Message------
From: Geofrey Rainey
Sender: redhat-list-bounces@xxxxxxxxxx
To: General Red Hat Linux discussion list
ReplyTo: General Red Hat Linux discussion list
Subject: RE: mirroring
Sent: Oct 19, 2009 6:54 PM

It might be possible with software raid. I don't think it would be with
hardware raid because you'd have to delete partitions etc.

-----Original Message-----
From: redhat-list-bounces@xxxxxxxxxx
[mailto:redhat-list-bounces@xxxxxxxxxx] On Behalf Of Sir June
Sent: Tuesday, 20 October 2009 1:13 p.m.
To: General Red Hat Linux discussion list
Subject: mirroring

Hi,

I have 2 identical disks but I had installed RHEL 4 on first disk only,
i have /boot and / partitions only. Now, i want to have mirror (raid1)
with the 2nd disk. Can i do this without destroying data on the 1st
disk? Is there a good howto out there ?
Sir June





-- redhat-list mailing list
unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/redhat-list


__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com

--
redhat-list mailing list
unsubscribe mailto:redhat-list-request@xxxxxxxxxx?subject=unsubscribe
https://www.redhat.com/mailman/listinfo/redhat-list



Relevant Pages

  • Re: mirroring
    ... *Migrating an Existing Linux to RAID1* ... this copies your data from the existing disk to the new disk then overwrites your existing disk* ... Change the partition type on the existing non-raid disk to type 'fd' ... Create the degraded RAID array on the empty disk, but leave out the existing system disk for now. ...
    (RedHat)
  • slackware 9.1 software raid problem
    ... Setting up a RAID system with Slackware 8 is not extremely difficult once ... mirroring the root partition and booting from that mirror was not possible. ... Each disk is attached to a different IDE chain on the motherboard. ... The ability to boot from the Slackware 8 install CD. ...
    (alt.os.linux)
  • Re: Panasonic HD Recorders - What disk format?
    ... The earlier part of this is more about what may be Linux partitioning, ... might be possible to present the recorder with a larger disk already ... Most DOS/Windows utilities such as FDisk, Ghost, and Partition Magic Pro ... prompts to format it. ...
    (alt.os.linux)
  • Re: [SLE] Changing Installation Source brings to filesystem crash
    ... cleared them so my C: now have about 1Gb free space and my D: now have about ... That was the place where I inspired to learn Linux. ... Your recovery says your Linux partition is full. ... Do you have two hard disks or is D: ...
    (SuSE)
  • Re: Un-RAID on ICH8R?
    ... These are the supported migrations in Intel Matrix RAID. ... Would adding an extra disk and making it a recovery partition help? ...
    (alt.comp.hardware.pc-homebuilt)