ITPub博客

首页 > Linux操作系统 > Linux操作系统 > Solaris作Raid

Solaris作Raid

原创 Linux操作系统 作者:xin2v 时间:2009-03-19 14:21:14 0 删除 编辑

Raid采用solaris提供的DiskSuite软件,Solaris8需要自己安装,位置在V2的EA目录下。

Raid1:假设主盘为c0t0d0,镜像盘为c0t1d0,主盘分区如下:
s0:root分区,s1:swap分区,s3:/home分区,s4:/insfile分区,s7:metadb
下列代码可以直接拷贝过去,注意metaroot所指的分区,并有一次重新启动的动作。

prtvtoc /dev/rdsk/c0t0d0s2|fmthard -s - /dev/rdsk/c0t1d0s2
metadb -afc 
3 c0t0d0s7 c0t1d0s7
metainit -f d10 
1 1 c0t0d0s0
metainit -f d20 
1 1 c0t1d0s0
metainit d0 -m d10
metaroot d0
metainit -f d11 
1 1 c0t0d0s1
metainit -f d12 
1 1 c0t1d0s1
metainit d1 -m d11
metainit -f d31 
1 1 c0t0d0s3
metainit -f d32 
1 1 c0t1d0s3
metainit d3 -m d31
metainit -f d41 
1 1 c0t0d0s4
metainit -f d42 
1 1 c0t1d0s4
metainit d4 -m d41
lockfs -fa
reboot
metattach d0 d20
metattach d1 d12
metattach d3 d32
metattach d4 d42

对应的/etc/vfstab为下面所示,在使用之前请先newfs一下:

/dev/md/dsk/d1  -       -       swap    -       no      -
/dev/md/dsk/d0  /dev/md/rdsk/d0 /       ufs     1       no      -
swap    -       
/tmp    tmpfs   -       yes     -
/dev/md/dsk/d3  /dev/md/rdsk/d3 /home       ufs     1       no      -
/dev/md/dsk/d4  /dev/md/rdsk/d4 /insfile       ufs     1       no      -

作完Raid1,要两个硬盘都能启动,指令如下:

cd /usr/platform/`uname -i`/lib/fs/ufs
installboot 
./bootblk /dev/rdsk/c0t1d0s0
init 
0
ls -l 
/dev/dsk/c0t0d0s0 #记住这个东东的物理路径,ok下可以做参考
*********进入OK模式,分别给两个硬盘的root分区起个别名,再分别boot一下,如果成功启动,Raid1就算完了,相关指令:
devalias   
#察看启动设备
printenv 
boot-device #察看启动设备,名城就是nvalias起的。
nvalias 
<别名> <物理路径> #起别名,删除别名是nvunalias
setenv 
boot-device <a> <b> <c>  #尝试启动的优先级
show-disks分别和probe-scsi,probe-ide配合可以找到硬盘的物理路径如果你不知道物理路径到底在那。

Raid5:假设有四个盘c1t2d0,c1t3d0,c1t4d0,c1t5d0,其中c1t5d0作hotspare,代码如下:

metainit hsp001 c1t5d0s2 #c1t5d0s2做hot spare
metainit d5 -r c1t2d0s2 c1t3d0s2 c1t4d0s2 -h hsp001
#或单独metaparam -h hsp001 d5

对应的/etc/vfstab为下面所示,在使用之前请先newfs一下

/dev/md/dsk/d5 /dev/md/rdsk/d5 /data ufs 1 yes -

Raid0条带:假设有三个盘c0t1d0,c0t2d0,c0t3d0,条带代码如下,注意如果硬盘大小不一将以最小的为准:

metainit -f d0 1 3 c0t1d0s2 c0t2d0s2 c0t3d0s2

Raid0附加:假设有三个盘c0t1d0,c0t2d0,c0t3d0,附加代码如下

metainit -f d0 3 1 c0t1d0s0 1 c0t2d0s0 1 c0t3d0s0 

对应的/etc/vfstab如下:

/dev/md/dsk/d0 /dev/md/rdsk/d0 /data ufs 1 yes -

Raid0+1,Raid1+0就不用说了,看0先做还是1先做,先做得就在前面了。

Raid FAQ:
Q1:删除metadb
A:指令
metadb -d c0t0d0s7
metadb -fd c0t1d0s7
Q2:清除错误的命名:
A:metaclear -f d41
Q3:Raid进度:
A:metastat |grep %
Q4:镜像已经开始了,发现镜像盘上还有未备份的数据。
A:求助于神,上帝以及老天爷。这个错误我曾经范过一次,那时候拔电源也来不及了,可能sun的工程师有办法
Q5:系统重新安装了,原来的Raid盘还可以用吗
A:是的,但是要记住原来Raid的指令,特别是-i参数等,拿来执行一下即可,如果不行,用fsck -y一下,这有点冒险,可能丢失数据,建议还是备份一下硬盘上东东后再重装系统。
Q6:Raid日常检查
A:使用metastat察看,如果发现Error或者Needs maintenance字样都需要手工干预,如果是Raid0,那如果系统没挂,赶快把里面东东备份出来,如果挂了,请参看第Q4
Q7:Raid5盘坏了,该如何处理?
A:关机,换盘,然后到单用户模式下,执行下列指令metareplace -e d55 c1t2d0s2,然后用metastat察看进度和结果。
Q8:Raid1盘坏了,该怎么处理?
A:关机,换盘,到OK下,从好的盘启动到单用户下,删除坏盘上的metadb,重新prt...后,把metadb再弄一次到新盘上。然后用metareplace  -e 来替换,如:
metareplace -e d1 c0t0d0s1等等。这个是比较彻底的,如果机器还没挂,盘还没换,也许在线执行一下metareplace  -e就可以了,相当于重新同步一下。还有个指令就是metadetach,可以用另外一个分区来把这个坏分区给换掉。
Q9:如果硬盘作了Raid不够了,还想扩展。
A:我试验过的是原先Raid0也是附加方式,可以继续以附加方式向上扩。做之前需要先umount,在growfs执行之前mount。指令如下:
metattach d0 c0t0d0s0
growfs -M /data /dev/md/rdsk/d0
Raid1分别给2个硬盘的分区作metattach,比如metattach <分镜像> cXtYdZsA,然后再growfs -M即可。
未作Raid的分区想扩展,也有办法。
Q10:Raid1中每一個子Raid是正常的,但是在總的Raid裡面狀態都是Needs maintenance
A:需要手工作metasync,後面帶-r參數就是所有的都sync一次.原因是如果在sync過程中啟動到單用戶下,sync會中斷.當然有些機器使用久了也會出現這種問題.
Q11:机器没有用镜像盘,但是以前的镜像信息还在,想直接删除镜像信息,居然删除不掉,原因是因为它的两个子镜像都有错误信息,用metadetach d2 d12指令,报的错是:"d2: attempt an operation on a submirror that has erred components",如果直接metaclear就会报"d12: metadevice in use"。
A:顺序是,用 -f参数将第二个盘的分区metadetach掉,然后metaclear d2,然后metaclear 第一个盘即可,这个顺序不能删除状态为镜像盘信息为"Last Erred"的那些盘,执行metaclear的时候会报"d2: attempted to clear mirror with submirror(s) in invalid st"这个错误,这时候千万不要用metareplace等这些指令,因为你没有用到镜像的盘,用这个指令会覆盖你现在使用的盘的信息,最后我发现metaclear也可以用 -f参数,用了-f参数即可把它去掉。
Q12:其他问题

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10325341/viewspace-573086/,如需转载,请注明出处,否则将追究法律责任。

上一篇: ORA-03113
请登录后发表评论 登录
全部评论

注册时间:2009-03-19

  • 博文量
    45
  • 访问量
    64437