Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1172120
  • 博文数量: 245
  • 博客积分: 10185
  • 博客等级: 上将
  • 技术积分: 2744
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-30 17:07
文章分类

全部博文(245)

文章存档

2015年(1)

2014年(1)

2013年(1)

2012年(1)

2011年(37)

2010年(20)

2009年(14)

2008年(38)

2007年(88)

2006年(44)

分类:

2007-06-03 22:32:04

说起配置SDS,那还是我06年的计划,结果因为没有sun的测试机等很多因素,被拖到4月,终于抽到空也在一堆废机器里找到一台SUN420R,找相关的文档完成了SDS的安装及换盘测试。
   本来是准备重新安装(的确是在新装系统上配SDS是比较明智的选择,在分区时就新建2个各50M的分区),但我在安装新系统遇到问题,安装solaris8时老是快配完的时候电脑就不动了,不知道是光盘的问题还是机器的问题,只得在一台以前已装过的机器上来配SDS。

第一个硬盘df –k看到的内容

Filesystem            kbytes    used   avail capacity  Mounted on

/dev/dsk/c0t0d0s0    6519333   51635 6402505     1%    /

/dev/dsk/c0t0d0s6    8065025  437109 7547266     6%    /usr

/proc                      0       0       0     0%    /proc

fd                         0       0       0     0%    /dev/fd

mnttab                     0       0       0     0%    /etc/mnttab

/dev/dsk/c0t0d0s3    5040814    5013 4985393     1%    /var

swap                 2930336       0 2930336     0%    /var/run

/dev/dsk/c0t0d0s5    1984564      15 1925013     1%    /opt

/dev/dsk/c0t0d0s7     962573      26  904793     1%    /tmp

/dev/dsk/c0t0d0s1    10293275    8339 10182004     1%    /export/home

 由于看到s5s7基本没数据,准备将s5s7用做metadb.

第一步、安装Disksuite 4.2.1
1
、插入Solaris 8 Software CD 2 of 2并改变到下列目录:
2
cd /cdrom/sol_8_401_sparc_2/Solaris_8/EA/products/DiskSuite_4.2.1/sparc/Packages
3
、使用pkgadd 命令安装Solstice Disksuite:

# pkgadd –d  .

选择全部安装package,装完后重起。
提示:系统必须为solaris 8,该packagessolaris7上不可用。

第二步:把引导磁盘的分区表复制到镜像磁盘

把第二个磁盘放进去。
#prtvtoc /dev/rdsk/c0t0d0s2 | fmthard -s - /dev/rdsk/c0t1d0s2
出现“fmthard: New volume table of contents now in place”表明这一步完成。
提示:我在做这一步时遇到问题,cu上发文才马上明白自己犯了个大错误,/dev/rdsk/c0t1d0s2的大小必须比c0t0d0s2大或相同,否则必然报错(原因很简单,你不可能将20G的分区表复制到10G的磁盘上去)。
创建这个数据库复本时出错。
# metadb -a -f -c2 /dev/dsk/c0t0d0s5 /dev/dsk/c0t1d0s5
metadb: test001: c0t0d0s5: is mounted on /metadb
这个报错信息是什么意思呢?原来是做metadb所在分区还在mount状态呢,那就umount吧,
#unmount /dev/dsk/c0t0d0s5
可在#unmount /dev/dsk/c0t0d0s5时老报 /opt is busy,不能umount,使用fuser命令来查找是什么进程(如果是linux的话.使用的是lsof | grep filename就可以找到对应的process),再杀掉。发现是记载当前用户登陆信息的一个文件放在c0t0d0s5里,还没法杀掉相应进程。因为杀掉的话自身的登陆也就logoff了。搞了半天也没找到办法,一怒之下,只得直接修改/etc/vfstab文件,将c0t0d0s5,c0t0d0s7注掉
#device             device             mount    FS    fsck  mount   mount
#to mount            to fsck           point   type   pass  at boot options
#/dev/dsk/c1d0s2    /dev/rdsk/c1d0s2   /usr     ufs     1    yes     -
fd                  -            /dev/fd   fd     -    no      -
/proc               -            /proc   proc     -    no      -
/dev/dsk/c0t0d0s4         -            -       swap     -    no      -
/dev/dsk/c0t0d0s6  /dev/rdsk/c0t0d0s6   /usr    ufs     1    no      -
/dev/dsk/c0t0d0s3  /dev/rdsk/c0t0d0s3   /var    ufs     1    no      -
/dev/dsk/c0t0d0s1 /dev/rdsk/c0t0d0s1 /export/home ufs   2    yes     -
#/dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5    /opt    ufs     2   yes     -
#/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7    /meta   ufs     2   yes     -从
重起系统后,#unmount /dev/dsk/c0t0d0s5就没问题了。
重要提示:作为metadb的分区不能处于mount状态,即df –k不能看见该分区,看过的文档里均没有提到这一点。

继续创建这个数据库复本
# metadb -a -f -c2 /dev/dsk/c0t0d0s5 /dev/dsk/c0t1d0s5
# metadb -a -f -c2 /dev/dsk/c0t0d0s7 /dev/dsk/c0t1d0s7
创建一个文件系统的镜像
说明一下:从前面的df –k的输出和/etc/vfstab能看出,第一块磁盘分了7个区,分别是c0t0d0s0(对应/),s1(对应/export/home),s3((对应/var),s4(对应swap),s6(对应/usr),s5(/opt)和s7(tmp)作为metadb区,所以不需要做镜像,s2代表整个磁盘就更不要做镜像了,下面我们对这需要做镜像的5个分区分别作镜像。

这一点我看到的文档里都没有说明,我刚开始看文档也没看明白,做实验的时候才明白这一点。

需要做镜像的分区有c0t0d0s0(对应/),s1(对应/export/home),s3((对应/var),s4(对应swap),s6(对应/usr).
逐个做镜像, 对一个磁盘做一个单向的镜像,稍候我们追加第二个磁盘去镜像。设备编号(d##) 是任意的。现在我们先做个约定:
d10 – 1st表示第一块磁盘的镜像设备
d20 – 2nd表示第二块磁盘的镜像设备
d30 – 镜像中所包含的镜像设备。

1) s0 ( /分区 )
# metainit -f d10 1 1 c0t0d0s0
d10: Concat/Stripe is setup
# metainit -f d20 1 1 c0t1d0s0
d20: Concat/Stripe is setup
# metainit d30 -m d10
d30: Mirror is setup
在上列命令中的“-f”参数表示强迫metainit 命令继续,即使是这些分区之一包含了一个被挂载的文件系 统或正在被使用的交换分区。
 命令“# metainit -f d10 1 1 c0t0d0s0”表示为root分区创建一个一对一的级联。
最后一条命令表示创建metadevice 镜像并且把镜像设备d10 附加到d30。
下一步是要更新/etc/vfstab 文件和/etc/system file.不能手工的编辑 /etc/vfstab或/etc/system文件。可以使用metaroot 命令:
# metaroot d30

 1) s0 ( /分区 )
# metainit -f d10 1 1 c0t0d0s0
d10: Concat/Stripe is setup
# metainit -f d20 1 1 c0t1d0s0
d20: Concat/Stripe is setup
# metainit d30 -m d10
d30: Mirror is setup
在上列命令中的“-f”参数表示强迫metainit 命令继续,即使是这些分区之一包含了一个被挂载的文件系 统或正在被使用的交换分区。
 命令“# metainit -f d10 1 1 c0t0d0s0”表示为root分区创建一个一对一的级联。
最后一条命令表示创建metadevice 镜像并且把镜像设备d10 附加到d30。
下一步是要更新/etc/vfstab 文件和/etc/system file.不能手工的编辑 /etc/vfstab或/etc/system文件。可以使用metaroot 命令:
# metaroot d30

2) S1 (/export/home 分区)
# metainit -f d11 1 1 c0t0d0s1
d11: Concat/Stripe is setup
# metainit -f d21 1 1 c0t1d0s1
d21: Concat/Stripe is setup
# metainit d31 -m d11
d31: Mirror is setup
3) S3 (/var分区)
# metainit -f d13 1 1 c0t0d0s3
d13: Concat/Stripe is setup
# metainit -f d23 1 1 c0t1d0s3
d23: Concat/Stripe is setup
# metainit d33 -m d13
d33: Mirror is setup
4) S4 (swap分区)
# metainit -f d14 1 1 c0t0d0s4
d14: Concat/Stripe is setup
#  metainit -f d24 1 1 c0t1d0s4
d24: Concat/Stripe is setup
# metainit d34 -m d14
d34: Mirror is setup
5) S6 (/usr分区)   
/dev/dsk/c0t0d0s6    8065025  437109 7547266     6%    /usr
# metainit -f d16 1 1 c0t0d0s6
d16: Concat/Stripe is setup
# metainit -f d26 1 1 c0t1d0s6
d26: Concat/Stripe is setup
# metainit d36 -m d16
d36: Mirror is setup
6)编辑/etc/vfstab文件,
原文件
#device             device             mount    FS    fsck  mount   mount
#to mount            to fsck           point   type   pass  at boot options
#/dev/dsk/c1d0s2    /dev/rdsk/c1d0s2   /usr     ufs     1    yes     -
fd                  -            /dev/fd   fd     -    no      -
/proc               -            /proc   proc     -    no      -
/dev/dsk/c0t0d0s4         -            -       swap     -    no      -
/dev/dsk/c0t0d0s6  /dev/rdsk/c0t0d0s6   /usr    ufs     1    no      -
/dev/dsk/c0t0d0s3  /dev/rdsk/c0t0d0s3   /var    ufs     1    no      -
/dev/dsk/c0t0d0s1 /dev/rdsk/c0t0d0s1 /export/home ufs   2    yes     -
#/dev/dsk/c0t0d0s5 /dev/rdsk/c0t0d0s5    /opt    ufs     2   yes     -
#/dev/dsk/c0t0d0s7 /dev/rdsk/c0t0d0s7    /meta   ufs     2   yes     -
修改为:
#device           device          mount          FS      fsck    mount   mount
#to mount         to fsck         point          type    pass   at boot options
#
#/dev/dsk/c1d0s2 /dev/rdsk/c1d0s2 /usr           ufs     1        yes     -
fd                  -             /dev/fd        fd      -        no      -
/proc               -             /proc         proc     -        no      -
/dev/md/dsk/d34     -              -            swap     -        no      -
/dev/md/dsk/d30   /dev/md/rdsk/d30 /            ufs      1        no      -
/dev/md/dsk/d36   /dev/md/rdsk/d36 /usr         ufs      1        no      -
/dev/md/dsk/d33   /dev/md/rdsk/d33 /var         ufs      1        no      -
/dev/md/dsk/d31   /dev/md/rdsk/d31 /export/home ufs      2        yes     -
7)  建立hot-spare: 
# metainit hsp001 
hsp001: Hotspare pool is setup
 
8)修改/etc/system以去掉无害的警告,将下列

WARNING: forceload of misc/md_trans failed
WARNING: forceload of misc/md_raid failed
WARNING: forceload of misc/md_hotspares failed

 注释掉。

# vi /etc/system
*ident  "@(#)system     1.18    97/06/27 SMI" /* SVR4 1.5 */
*
* SYSTEM SPECIFICATION FILE
………………………………………………………………………………………………………………….
* Begin MDD root info (do not edit)
#forceload: misc/md_trans
#forceload: misc/md_raid
#forceload: misc/md_hotspares
forceload: misc/md_stripe
forceload: misc/md_mirror
forceload: drv/pcipsy
................................... 
 9)重新引导允许系统去重新挂载镜像 
# lockfs -fa
# init 6

10)追加第二个镜像设备到镜像。这样磁盘上的数据就会从引导磁盘上与已经镜像的磁盘同步。

# metattach d30 d20
运行metastat检查这个同步的进程  
# metastat d30  
 metastat d30
d30: Mirror
    Submirror 0: d10
      State: Okay        
    Submirror 1: d20
      State: Resyncing   
    Resync in progress: 0 % done
    Pass: 1
    Read option: roundrobin (default)
    Write option: parallel (default)
    Size: 13246065 blocks
d10: Submirror of d30
    State: Okay        
    Size: 13246065 blocks
    Stripe 0:
        Device              Start Block  Dbase State     Hot Spare
        c0t0d0s0                   0     No    Okay       
d20: Submirror of d30
    State: Resyncing   
    Size: 13246065 blocks
    Stripe 0:
        Device              Start Block  Dbase State        Hot Spare
        c0t1d0s0                   0     No    Okay        
过一会再执行
# metastat d30
d30: Mirror
    Submirror 0: d10
      State: Okay        
    Submirror 1: d20
      State: Resyncing   
    Resync in progress: 1 % done
..............................................    
可以看见同步明显处于进行中。
 继续追加其它的镜像设备。
# metattach d31 d21
d31: submirror d21 is attached
# metattach d33 d23
d33: submirror d23 is attached
# metattach d34 d24
d34: submirror d24 is attached
# metattach d36 d26
d36: submirror d26 is attached
生成引导块
# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0
在OK状态下键入(高手filtercai 说这样比较野蛮,还是重起时进OK修改比较好)
OK  devaliase
查看这2个物理磁盘设备名(很长很难记的)” 0 “dad” (disk))及对应的aliase名(即我们很好记的,如disk,disk1)
前面 就是物理设备名,disk就是别名。
查看启动设备
OK printenv boot_device
在ok提示符下修改启动值,把被镜像磁盘列入备用启动中:
ok setenv boot-device disk disk1
ok reset-all
DiskSuite 从版本4.2.1开始支持50%的state database replicas的启动,也就是说我们上面所说的当一个盘损坏时的手工干预的过程可以避免。
这个新的SDS的功能需要在文件/etc/system中加入一个参数:
 echo "set md:mirrored_root_flag=1" >;>; /etc/system
至此,Sun Disksuite基本已配置完毕。 其实我写的和网上的基本没什么区别,就是多了几个注意的地方而已。更多的可参见我的blog转载的Sun Disksuite文章。
Sun的官方网站里如何在swap分区里挖出一部分来做metadb.大家可以看看。
我简要说一下步骤:
# halt进入单用户
OK boot –s
查看swap分区情况
#swap –l
swapfile           dev  swaplo blocks   free
/dev/dsk/c0t2d0s1 32,17      8  205624  192704
删除swap分区
#swap –d /dev/dsk/c0t2d0s1
再次查看swap分区是否已删除。
使用format命令对c0t2d0s1重新分区,分一个小一点的swap,多分出2个Replicas。
以后我们单位基本都转向linux平台,我也要与时俱进^-^,以后学习的重点要转向linux,shell和storage了!
阅读(1358) | 评论(0) | 转发(0) |
0

上一篇:solaris学习总结

下一篇:SDS 恢 复 篇

给主人留下些什么吧!~~