အရင္
Solaris version ေတြၿဖစ္တဲ့ 8 တို ့ 9 တို ့မွာေတာ့ DiskSuite ကိုသီးသန္
့တင္ေပးရတယ္။ Solaris 10 မွာေတာ့က်ေနာ္ Entire Distribution ကို Install
လုပ္ထားတဲ့အတြက္ DiskSuite တင္စရာမလို ေတာ့ဘူး။ အခုဒီက်ဴတိုရီရယ္
ကိုလုပ္ဖို ့အတြက္ ခုနက Solaris 10 တင္ထားတဲ့ Virtual Machine ကို Shutdown
လုပ္ လိုက္ၿပီး HDD ေနာက္တလံုး ထပ္ထည့္လိုက္ပါမယ္။ HDD
ဆိုဒ္ခ်င္းေတာ့တူရမယ္။
မူလရိွေနတာက Disk 1 ေပါ့။ အခုထပ္ထည့္လိုက္တာက Disk 2 ပါ။ OS ေပၚမွာေတာ့ အခုလိုမ်ိဳး c0t0d0 နဲ ့ c0t1d0 ဆိုၿပီး ေပၚပါလိမ့္မယ္။
Disk 1 : c0t0d0
Disk 2 : c0t1d0
ေအာက္ကပံုေလးကို
ေသခ်ာၾကည့္လိုက္ရင္ Disk Mirroring ဘယ္လိုအလုပ္လုပ္တယ္ဆိုတဲ့ concept ကို
သေဘာေပါက္ပါလိမ့္မယ္။ Physical Disk က c0t0d0 နဲ ့ c0t1d0 ပါ။ Physical
Disk ေတြကို Logical Name ေတြ Assign လုပ္ၿပီး၊ Logical Disk
ေတြအခ်င္းခ်င္း ခ်ိတ္ဆက္ေပးလိုက္တဲ့သေဘာပါ။
Primary
Disk ရဲ ့Slice 0 ၿဖစ္တဲ့ c0t0d0s0 ကို d10 ဆိုၿပီး logical name တခု
assign လုပ္ပါတယ္။ Secondary Disk ရဲ ့Slice 0 ၿဖစ္တဲ့ c0t1d0s0 ကို d20
ဆိုၿပီး logical name တခု assign လုပ္ပါတယ္။
ၿပီးမွ d0 ဆိုတဲ့ logical drive ကို d10 နဲ ့d20 တို ့နဲ ့ ခ်ိတ္ဆက္ေပးပါတယ္။ ့့
OS ရဲ ့vfstab ထဲမွာ လက္ရိွ အသံုးၿပဳေနတဲ့ c0t0d0s0 အစား d0 ကို သံုးမယ္ဆိုၿပီး ေၿပာင္းေပးလိုက္ပါတယ္။
ပထမဆံုး
OS boot တက္လာၿပီဆိုရင္ devfsadm ဆိုတဲ့ command ကို ရိုက္ေပးလိုက္ပါ။ Device အသစ္ေတြကို Loading
လုပ္ေအာင္လို ့ပါ။ ၿပီးရင္ format ဆိုတဲ့ command ကိုသံုးၿပီး Secondary Disk ကို
Primary Disk နဲ ့တူေအာင္ Partition ေတြပိုင္းေပးပါမယ္။
# format
Searching for disks...done
AVAILABLE DISK SELECTIONS:
0. c0t0d0 <DEFAULT cyl 2607 alt 2 hd 255 sec 63>
/pci@0,0/pci8086,2829@d/disk@0,0
1. c0t1d0 <DEFAULT cyl 2608 alt 2 hd 255 sec 63>
/pci@0,0/pci8086,2829@d/disk@2,0
Specify disk (enter its number):
1 ကိုေရြးေပးလိုက္ပါ။
Specify disk (enter its number): 1
selecting c0t2d0
[disk formatted]
FORMAT MENU:
disk - select a disk
type - select (define) a disk type
partition - select (define) a partition table
current - describe the current disk
format - format and analyze the disk
fdisk - run the fdisk program
repair - repair a defective sector
label - write label to the disk
analyze - surface analysis
defect - defect list management
backup - search for backup labels
verify - read and display labels
save - save new disk/partition definitions
inquiry - show vendor, product and revision
volname - set 8-character volume name
!<cmd> - execute <cmd>, then return
quit
format>
fdisk လို ့ရိုက္ေပးလိုက္ပါ။
format> fdisk
No fdisk table exists. The default partition for the disk is:
a 100% "SOLARIS System" partition
Type "y" to accept the default partition, otherwise type "n" to edit the
partition table.
y
format>
partition လို ့ရိုက္ေပးပါ။
format> partition
PARTITION MENU:
0 - change `0' partition
1 - change `1' partition
2 - change `2' partition
3 - change `3' partition
4 - change `4' partition
5 - change `5' partition
6 - change `6' partition
7 - change `7' partition
select - select a predefined table
modify - modify a predefined partition table
name - name the current table
print - display the current table
label - write partition map and label to the disk
!<cmd> - execute <cmd>, then return
quit
partition>
ၿပီးရင္ Slice 0, 1,3 နဲ ့7 တို ့ကို Disk 1 မွာရိွတဲ့ အတိုင္း Partition ပိုင္းေပးပါ။ ဒီေနရာမွာသတိထားရမွာ ဆလင္ဒါ နံပါတ္ ကိုမွန္ေအာင္ ေပးဖို ့ပါ။ Slice တခုပိုင္းၿပီးတိုင္း ဆံုးတဲ့နံပါတ္ကို print ထုတ္ၿပီးၾကည့္လို ့ရပါတယ္။
partition> 0
Part Tag Flag Cylinders Size Blocks
0 unassigned wm 0 0 (0/0/0) 0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 1 ########NOTICE#########
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 7004mb
partition> 1
Part Tag Flag Cylinders Size Blocks
1 unassigned wm 0 0 (0/0/0) 0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 894 ##########NOTICE#######
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 2000mb
partition> 3
Part Tag Flag Cylinders Size Blocks
3 unassigned wm 0 0 (0/0/0) 0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 1149 ##########NOTICE#######
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 101mb
partition> 7
Part Tag Flag Cylinders Size Blocks
7 unassigned wm 0 0 (0/0/0) 0
Enter partition id tag[unassigned]:
Enter partition permission flags[wm]:
Enter new starting cyl[0]: 1162 ##########NOTICE#######
Enter partition size[0b, 0c, 0e, 0.00mb, 0.00gb]: 11334mb
partition>
ၿပီးရင္ print ထုတ္ၿပီးစစ္ၾကည့္ပါ။ အဆင္ေၿပၿပီဆိုရင္ label ဆိုၿပီး ရိုက္ေပးလိုက္ပါ။
partition> print
Current partition table (unnamed):
Total disk cylinders available: 2607 + 2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 1 - 893 6.84GB (893/0/0) 14346045
1 swap wu 894 - 1148 1.95GB (255/0/0) 4096575
2 backup wm 0 - 2606 19.97GB (2607/0/0) 41881455
3 unassigned wm 1149 - 1161 101.98MB (13/0/0) 208845
4 unassigned wm 0 0 (0/0/0) 0
5 unassigned wm 0 0 (0/0/0) 0
6 unassigned wm 0 0 (0/0/0) 0
7 unassigned wm 1162 - 2606 11.07GB (1445/0/0) 23213925
8 boot wu 0 - 0 7.84MB (1/0/0) 16065
9 unassigned wm 0 0 (0/0/0) 0
partition> label
Ready to label disk, continue? y
partition> quit
Slice 3 ေပၚမွာ State Database Replica ကို လုပ္ပါမယ္။ ေအာက္ပါ အတိုင္းလုပ္ပါ။
metadb
–a -c3 –f /dev/dsk/c0t0d0s3
metadb
–a -c3 –f /dev/dsk/c0t1d0s3
ၿပီးရင္ Primary Disk မွာရိွတဲ့ Slice ေတြအတြက္ Logical Disk ေတြကို လုပ္ပါမယ္။ ေအာက္ပါ အတိုင္းလုပ္ပါ။
metainit -f d10 1 1 c0t0d0s0
metainit -f d11 1 1 c0t0d0s1
metainit -f d13 1 1 c0t0d0s1
metainit -f d17 1 1 c0t0d0s7
ၿပီးရင္ Secondary Disk ကိုလည္း ေအာက္ပါ အတိုင္းလုပ္ေပးပါ။
metainit -f d20 1 1 c0t1d0s0
metainit -f d21 1 1 c0t1d0s1
metainit -f d23 1 1 c0t1d0s1
metainit -f d27 1 1 c0t1d0s7
Primary Disk ကို Mirror ခ်ိတ္ေပးပါမယ္။
metainit d0 -m d10
metainit d1 -m d11
metainit d3 -m d13
metainit d7 -m d17
Mirror ခ်ိတ္ၿပီးၿပီဆို ရင္ / partition အတြက္ metaroot command ကို run ေပးပါ။ ဒီ command run လိုက္မွ
/etc/system ေအာက္ကတခ်ိဳ ့parameters ေတြနဲ ့
/etc/vfstab ဖိုင္ထဲမွာ path ကိုခ်ိန္းပါမယ္။
ဒီ command မလုပ္ေပးရခင္ reboot လုပ္လိုက္မယ္ဆို OS က boot မတက္ေတာ့ပါဘူး။ အေရးၾကီးပါတယ္။
metaroot d0
ၿပီးရင္
/etc/vfstab ကို ေၿပာင္းေပးပါမယ္။ ေအာက္ပါနမူနာအတုိင္းေၿပာင္းေပးလိုက္ပါ။ မူလ
/dev/dsk/c#t#d#s# နဲ ့/dev/rdsk/c#t#d#s# ကေနၿပီး
/dev/md/dsk/d# နဲ ့ /dev/md/rdsk/d# ဆိုၿပီးေၿပာင္းေပးလိုက္တာပါ။
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd - /dev/fd fd - no -
/proc - /proc proc - no -
/dev/md/dsk/d1 - - swap - no -
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no -
/dev/md/dsk/d7 /dev/md/rdsk/d7 /opt ufs 2 yes -
/devices - /devices devfs - no -
sharefs - /etc/dfs/sharetab sharefs - no -
ctfs - /system/contract ctfs - no -
objfs - /system/object objfs - no -
swap - /tmp tmpfs - yes -
ၿပီးရင္ reboot လုပ္လိုက္ပါ။ ၿပန္တက္လာၿပီဆိုရင္ Secondary Disk နဲ ့Mirror ခ်ိတ္ေပးပါမယ္။
metattach d0 d20
metattach d1 d21
metattach d3 d23
metattach d7 d27
ခ်ိတ္ၿပီးသြားၿပီဆိုရင္ေတာ့သူ ့ဘာသာသူ Synchronize လုပ္ပါလိမ့္မယ္။ Monitor လုပ္ခ်င္ရင္ေတာ့
metastat ကိုသံုးၿပီးလုပ္လို ့ရပါတယ္။
Resyncing ဆိုၿပီးေတြ ့ရမွာပါ။
# metastat
d7: Mirror
Submirror 0: d17
State: Okay
Submirror 1: d27
State: Resyncing
Resync in progress: 9 % done
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 23213925 blocks (11 GB)
d17: Submirror of d7
State: Okay
Size: 23213925 blocks (11 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s7 0 No Okay Yes
d27: Submirror of d7
State: Resyncing
Size: 23213925 blocks (11 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t1d0s7 0 No Okay Yes
d3: Mirror
Submirror 0: d13
State: Okay
Submirror 1: d23
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 192780 blocks (94 MB)
d13: Submirror of d3
State: Okay
Size: 192780 blocks (94 MB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s3 16065 Yes Okay Yes
d23: Submirror of d3
State: Okay
Size: 192780 blocks (94 MB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t1d0s3 16065 Yes Okay Yes
d1: Mirror
Submirror 0: d11
State: Okay
Submirror 1: d21
State: Okay
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 4096575 blocks (2.0 GB)
d11: Submirror of d1
State: Okay
Size: 4096575 blocks (2.0 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s1 0 No Okay Yes
d21: Submirror of d1
State: Okay
Size: 4096575 blocks (2.0 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t1d0s1 0 No Okay Yes
d0: Mirror
Submirror 0: d10
State: Okay
Submirror 1: d20
State: Resyncing
Resync in progress: 7 % done
Pass: 1
Read option: roundrobin (default)
Write option: parallel (default)
Size: 14346045 blocks (6.8 GB)
d10: Submirror of d0
State: Okay
Size: 14346045 blocks (6.8 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t0d0s0 0 No Okay Yes
d20: Submirror of d0
State: Resyncing
Size: 14346045 blocks (6.8 GB)
Stripe 0:
Device Start Block Dbase State Reloc Hot Spare
c0t1d0s0 0 No Okay Yes
Device Relocation Information:
Device Reloc Device ID
c0t1d0 Yes id1,sd@SATA_____VBOX_HARDDISK____VBcb5e6d6b-901bd4d2
c0t0d0 Yes id1,sd@SATA_____VBOX_HARDDISK____VB983bc998-aa600d6b
#
Mirror ကို Boot တက္လို ့ရေအာင္ လုပ္ေပးပါမယ္။ ဒါ x86 အတြက္ပါ။ SPARC ေပၚမွာဆိုရင္ေတာ့ ဒီလိုမဟုတ္ပါဘူး။
# installgrub /boot/grub/stage1 /boot/grub/stage2 /dev/rdsk/c0t1d0s0
stage1 written to partition 0 sector 0 (abs 16065)
stage2 written to partition 0, 273 sectors starting at 50 (abs 16115)
HDD တလံုးထဲနဲ ့Boot လုပ္လို ့ရေအာင္ ဒီလိုင္းေလးကို /etc/system ဖိုင္ထဲမွာထည့္ထားပါမယ္။
set md:mirrored_root_flag=1
echo “set md:mirrored_root_flag=1” >> /etc/system
Disk Mirror လုပ္တာၿပီးပါၿပီ။ Configure လုပ္ခဲ့တာမွန္မမွန္ စစ္ခ်င္ရင္ Primary Disk ကို ၿဖဳတ္ၿပီး Secondary Disk နဲ ့boot တက္ၾကည့္ပါ။ Boot တက္လို ့ရတယ္ဆိုရင္ေတာ့အဆင္ေၿပပါၿပီ။