SUMMARY: Can I break a mirror without getting cut?

From: Darryl Milczarek <darryl.milczarek_at_emsusa.com>
Date: Sat, 02 Dec 2000 18:47:25 -0700

Again, thanks to Walter North and Howard Arnold for helping me understand
that this really can be done.

In essence, all it takes is preparation, a good backup, and courage.

The following is a DETAILED explanation of the steps taken. It was prepared
as a log of what I did to be used at the time I must once again 'undo' all
this and return back to the safety of the RAID 0+1 configuration. Most
likely, it is too detailed, but I share it in the hope that someone else may
find it of value, should they be faced with similar needs.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

How to break the mirror and not get cut.

Premise: Need to break the mirror from a 6 disk raid 0+1 set because
each disk group was configured to only use half of the available space.
Also needed to recover three of the disks for other uses.
Finally, I needed to NOT loose the data on the fileset!

Step 1, as always, was to back up the fileset to tape. Then I did the
following subsequent steps:

Un-mount the fileset:
umount /u03

Stop the volume:
volume -g oracledg stop oracle

Dis-associate the plex from the volume:
volplex -g oracledg dis oracle-01

Dis-associate the sub-disks from the plex:
volsd -g oracledg dis oracled03-01
volsd -g oracledg dis oracled02-01
volsd -g oracledg dis oracled01-01

Now I was ready to break the mirror.

I ran volplex with the '-o rm' option to dissociate and remove the plex
(and its associated subdisks) in the same operation. This made the space
used by those subdisks usable for new allocations.

volplex -g oracledg -o rm dis oracle-02

And I had to remove the disks from the oracledg disk group:
voldg -g oracledg rmdisk oracled04
voldg -g oracledg rmdisk oracled05
voldg -g oracledg rmdisk oracled06

Create a new disk group named testdg and add the newly released
disks to a new disk group, testdg,

voldg -g test addisk testdg01=rz27

Then create subdisks using the entire available space on each disk:

volmake -g testdg sd test01-sd testdg01,0,35564032
volmake -g testdg sd test02-sd testdg02,0,35564032
volmake -g testdg sd test03-sd testdg03,0,35564032


Then I created a new volume 'test' to contain the
new 'test-01' plex with three subdisks as members.

Next I used dxlsm to create a volume, then highlighted the three subdisks
and created a plex, using volume 'test'.

volmake -p -g testdg -o plex test-01 sd=testdg01,testdg02,testdg03
volmake vol test usetype=fsgen plex=test-01
volume start test

Finally, create the file domain and fileset and mount them to a new mount
point.

# mkfdmn /dev/vol/u06test
# mkfset u06test u06
# mount -t advfs u06test#u06 /u06

Now I checked my work:

# volprint -g testdg
TYPE NAME ASSOC KSTATE LENGTH COMMENT
dg testdg testdg - -
dm testdg01 rz27 - 35564040
dm testdg02 rz28 - 35564040
dm testdg03 rz29 - 35564040
sd test01-sd test-01 - 35564032
sd test02-sd test-01 - 35564032
sd test03-sd test-01 - 35564032
plex test-01 test ENABLED 106692096
vol test fsgen ENABLED 106692096

****

Note: I used dxlsm to ease the creation of volume, plex and subdisk, but it
could be done by hand thus:

volmake -U fsgen -g oracledg vol region writeback=on read_pol=SELECT
user=root group=system mode=0600 log_type=BLKNO len=53128704
volmake -g oracledg plex region-01 layout=STRIPE st_width=128
sd=oracled03-02,oracled02-02,oracled01-02
volsd -g oracledg assoc oracle-01 oracled01-01
volsd -g oracledg assoc oracle-01 oracled02-01
olsd -g oracledg assoc oracle-01 oracled03-01
volplex -g oracledg att oracle oracle-01
volplex -g oracledg att region region-01
volume -g oracledg start region

****

With the new fileset online, I copied the data from /u03 to /u06 using the
-pR option to preserve attributes
and copy all directory trees:
cp -pR /u03/* /u06/copy_of_u03

With the data safely copied, I was ready to re-size the sub-disks:

I used dxlsm, rt-click on a subdisk, copy the size from a subdisk in testdg,
as they are at maximum size.

Associate the subdisks to the plex:
volsd -g oracledg assoc oracle-01 oracled01-01
volsd -g oracledg assoc oracle-01 oracled02-01
volsd -g oracledg assoc oracle-01 oracled03-01

Attach the plex to the volume:
volplex -g oracledg att oracle oracle-01

Start the volume:
volume -g oracledg start oracle

Now the fileset needs to be rebuilt and mounted:

Remove the old fileset:
rmfset u03_oracle u03

Remove the old domain:
rmfdmn u03_oracle

Make the domain again:
mkfdmn /dev/vol/oracledg/oracle u03_oracle

Make the new fileset:
mkfset u03_oracle u03

Mount the fileset
mount -t advfs u03_oracle#u03 /u03

Check your work:

# df -k
Filesystem 1024-blocks Used Available Capacity Mounted on
root_domain#root 1993584 127787 1858368 7% /
/proc 0 0 0 100% /proc
usr_domain#usr 8032560 7727175 277656 97% /usr
u03_domain#u03 1761056 16 1756592 1% /u03/oradata
u01_domain#u01 1033168 16 1028792 1% /u01/oradata
u02_apps#u02 1047720 16 1043336 1%
/u02/apps/logs
usr_var#usr_var 2048936 99 2042184 1%
/usr/var/spool
u05_domain#u05 4091896 3101911 981424 76% /u05
u04_domain#u04 9560800 3839514 5684560 41% /u04
u02_domain#u02 2022688 16 2018192 1% /u02/oradata
temp#temp 2066344 168487 1891424 9% /temp
u01root#u01root 4074488 1697725 2362984 42% /u01
u02root#u02root 6563136 3492493 3051688 54% /u02
u06test#u06 53346048 23383867 29863688 44% /u06
u03_oracle#u03 53346048 16 53335280 1% /u03

Restore data to /u03 which was backed up to /u06

cp -pR /u06/copy_of_u03/* /u03

Check your work once again, and you are done.

Darryl Milczarek
EMS 602 258-8545
darryl.milczarek_at_emsusa.com
Received on Sun Dec 03 2000 - 01:46:47 NZDT

This archive was generated by hypermail 2.4.0 : Wed Nov 08 2023 - 11:53:41 NZDT