RAID全程指导.docx
《RAID全程指导.docx》由会员分享,可在线阅读,更多相关《RAID全程指导.docx(21页珍藏版)》请在冰豆网上搜索。
RAID全程指导
Solaris软RAID指导
内容简介
1、简单的镜像实例
2、简单的metadevice概念
3、concatenation、stripe,RAID1,raid10,raind01...
4、补充说明和常见问题
5、相关命令详细解说
看贴学习要回贴哦~做人要厚道呀~
第一章请用1小时跟着作试验,后面的内容就好理解,本人作完各种RAID试验用了一周
第一章:
原系统单硬盘新增一块硬盘后,把根文件系统和SWAP分区作镜像
一、假设目前的情况,如果不符合,请先搭建环境:
1-有2个disks-c0t0d0(disk0)andc0t1d0(disk1).disk1为新增磁盘
2–原系统安装在disk0,disk1未使用.
3-disk0磁盘都有以下的分片(slices),最好disk1手工创建和disk0一样的分片:
0-/
1-swap
2-whole-disk
3-unassigned64-MB----未使用的空间
4-unassigned64-MB----未使用的空间
Slice3和4是用来存放meta-database日志,磁盘必须有至少128M的空余日志空间,每片64M
如果disk0上没有空余没用的slice也没关系,添加另外一个硬盘随便分区,只要有空余的分区用来存放metadb就行(没有说一定要分区3和4哦),假设这里我们用来存放metadb数据库的分区是c0t2d0s3,c0t2d0s4下面我们开始制作根系统的镜像实例
(1cylinder=16track=1008block=1008sector,1track=63block,1block=512byte)
重要提示:
动手前,请先备份系统
二、动手
1.复制disk0的分片信息到disk1:
prtvtoc/dev/rdsk/c0t0d0s2|fmthard-s-/dev/rdsk/c0t1d0s2
因为metadevices是工作在块级别的,所以两个磁盘必须所有物理信息一致(几何匹配)
2.建立meta-databases
metadb-af-c2/dev/dsk/c0t2d0s3/dev/dsk/c0t2d0s4
在每个分片上建立2个meta-database,-a添加,-c2数量为2个,-f是第一次建metadb必须的参数,如果有多个disks,可以把数据库分布在多个磁盘上以获得更好的性能和故障冗余
3.建立镜像设备(raid-device)
在一个2-disk的系统里,我们要做的就是把disk0和disk1结合在一起。
建立以下的镜像设备和成员(d0表示slice0的raid-device,d10表示d0的成员1):
d0-/mirror
d10-/dev/dsk/c0t0d0s0
d20-/dev/dsk/c0t1d0s0
d1-swap
d11-/dev/dsk/c0t0d0s1
d21-/dev/dsk/c0t1d0s1
metainit-fd1011/dev/dsk/c0t0d0s0
metainit-fd2011/dev/dsk/c0t1d0s0
metainit-fd0-md10
metainit-fd1111/dev/dsk/c0t0d0s1
metainit-fd2111/dev/dsk/c0t1d0s1
metainit-fd1-md11
4.metainit初始化了设备,metastat已经可以查看,不过还不能使用(因为mirror-halves还没attached)(有时系统已经自动attach了d10和d11)
metattach d0d10
metattach d1d11
现在我们已经把镜像的一半(firsthalf,即正在运行的磁盘,disk0)attached上来了.
在后面的步骤中,我们会把另外一半attach上来,一旦attach磁盘会立刻疯狂同步!
5.指定系统使用metadevices,指定根文件系统:
metarootd0
修改/etc/vfstab
让swap使用metadevices的d1(/dev/md/dsk/d1)
根文件系统(d0)的mountoption下标记写为“logging”
如果镜像的所有子镜像(请注意是所有子镜像)都没创建文件系统,在mounted之前必须:
newfs/dev/md/dsk/d1
6.最后重新启动系统
lockfs–fa 锁定文件系统,这个没什么好商量的,为了防止出现文件不同步之类的情况
init6
7.启动后会有类似以下的一些错误信息,不用管它,因为我们还没完成raid-devices的操作:
forceloadofmisc/md_transfailed
forceloadofmisc/md_raidfailed
forceloadofmisc/md_hotsparesfailed
现在把镜像的另外一半attach上来:
metattach d0d20
metattach d1d21
这时候,磁盘开始疯狂转动,进行同步(yourdisksaresyncing)
8.把启动扇区的信息复制到disk1,以便disk1也可以启动:
installboot/usr/platform/`uname-i`/lib/fs/ufs/bootblk /dev/rdsk/c0t1d0s0
`uname-i`指的是用uname–i看到的平台名字
s10中已经用installgrub命令代替insallboot,命令如下
installgrub/boot/grub/stage1/boot/grub/stage2/dev/rdsk/c0t1d0s0
9.如果disk0无法启动的时候,我们可以设置OPB,让系统从disk1启动,进入ok模式:
setenvboot-devicediskdisk1
nvstore
bootdisk1
X86的也可以直接编辑/boot/solaris/bootenv.rc文件,或者用
#eepromboot-devicediskdisk1?
也可从BIOS设置disk1启动,可看到disk1的硬盘先闪
Thiswillsetupafailoverboottodisk1.Theverylastcommandtherewillalsobootfromdisk1,provingtoyouthatthisworks.Dobesuretosubstitutethecorrectdiskfor"disk1".
强烈推荐去看SUN的在线文档,There'salotmorethatyoucandowithitthat'snotcoveredhere.Oh,andyou'llprobablywanttoreaduponhowtoactuallyreplaceafaileddisk.
三、换盘/替换坏盘:
1、关机、替换硬盘、format-->fdisk-->复制另一盘的分区信息
2、然后
#metastat|more看哪些盘提示需要metareplace,然后按照提示输入类似如下:
#metareplace-ed1c1d1s1
3、或者重新创建metadevice和attach....
具体例子:
RAID5坏掉一个盘的恢复方法:
例阵列d55中一个组件c1t4d0s2盘坏掉,更换坏硬盘后作如下工作:
okboot-r(X86#touch/reconfigure;sync;init6或者重启后#devfsadm)
注意,只有加入"-r"选项时,系统在起动时才给所识别了的设备(包括SCSI设备)生成相应的设备文件。
#metareplace–ed55c1t4d0s2如果新硬盘插的地方和旧硬盘不一样,比如是c1t5d0s2,那么用以下命令
#metareplace–ed55c1t4d0s2c1t5d0s2
#metastatd55
#metastat-i看进度
#metastat-id0
d0:
Mirror
Submirror0:
d10
State:
Okay
Submirror1:
d20
State:
Resyncing
Resyncinprogress:
19%done
Pass:
1
Readoption:
roundrobin(default)
Writeoption:
parallel(default)
Size:
1434384blocks
详见本人网站:
[本帖最后由yuhuohu于2006-11-1717:
26编辑]
yuhuohu(盘丝大仙)
天使
斑竹申请中
2楼发表于2006-9-2709:
01
metadb命令:
建立meta-database
-a建立一个新的meta-database的副本(replica)
-f建立一个初始化meta-database
-af只有刚开始的时候使用-af,因为此时没有meta-database
-c指定放在每个设备上的副本的数量,默认为1
-d删除指定设备上的副本,删除所有的副本将导致现有的metadevices无法使用
metadb-ac0t0d0s2c0t1d0s2将在2个磁盘上建立2个副本(一磁盘一个副本)
/etc/lvm/mddb.conf:
metadevice的状态数据库的每个拷贝的存放位置
/etc/lvm/md.tab:
存放metadevice的数据库的工作文件(workspacefile),比如内容如下:
d718c2t1d16s2c3t0d17s2c2t1d14s2c3t0d15s2c2t1d12s2c3t0d13s2c2t1d11s2c3t0d9s2-i32k
/kernel/drv/md.conf:
本系统所有metadevice的数据库的副本信息,通常也包括SVM的配置信息
yuhuohu(盘丝大仙)
天使
斑竹申请中
3楼发表于2006-9-2709:
02
metainit创建metadevice(动态设备)
-f强行执行metainit命令,即使某一分片(slice)中含有已经mounted的文件系统,或者该分片正在作为swap使用,通常在配置根(/),swap,/usr时使用
concat/stripe指定metadevice的名字,建立metadevice的时候,先指定名字,然后指定该设备由几条组成,每条有几片组成。
根据不同的条片组合情况,可以分为以下几种:
concatenation(串,即可能单条单片、多条单片),
stripe(条:
多片)
concatenationofstripe(条串:
多条多片)
numstripes指定在metadevice中独立的stripe的数量,对于一个简单的stripe来说通常为1,对于一个concatenation来说,numstripes等于slices的数量,对于concatenationofstripes来说,numbtripes随着stripes的数量而变化
width组成一个stripe的slice的数量componet一个磁盘中对应每一个分片(分区)的逻辑名字,比如/dev/dsk/c0t0d0s2,对于RAID5的metadevice来说,至少需要3个slice分片来分布奇偶信息
-i交替写的数据大小,告诉SVM,在每个metadevice(stripe或者RAID5)的分片上写多少k/m/b后转到另一个分片去写
例子:
metainitd0
根据/etc/lvm/md.conf中关于d0的配置信息去配置d0这个metadevice
metainit-a
激活/etc/lvm/md.conf中定义的所有metadevices
1.one-on-one的concatenation(即单stripe单slice)
#metainit-fd111c0t0d0s0 使d1成为一个使用rootslice的one-on-oneconcatenation.
#metainitd0-md1 使镜像设备d0成为one-waymirror(单向镜像)
2.Concatenation(多条单片),以下每分片大小可以不一样,可用空间是各分片的和:
#metainitd741c0t1d0s01c0t2d0s01c0t3d0s01/dev/dsk/c0t4d0s0
d7=该metadevice名字
4=由4个stripe组成
1c*t*d*s*=每个stripe由1个slice组成,c*t*d*s*为slice的逻辑名字
3。
stripe(单条多片)
#metainitd1512c0t1d0s2c0t2d0s2-i32k
d15这个metadevice包含1个stripe,每个stripe由2个slice组成,交替写数据的大小为32k,默认16k.每片大小必须一样,不然浪费空间,因为条带区的大小算法根据最小的分片来计算。
4.ConcatentationofStripes(多条多片)
#metainitd7523c0t1d0s2c0t2d0s2\
c0t3d0s2-i16k\
3c1t1d0s2c1t2d0s2c1t3d0s2-i32k
5.mirroring,下面是个two-waymirror的例子
#metainitd5111c0t1d0s2
#metainitd5211c0t2d0s2
#metainitd50-md51 -m说明是d51作为mirrord50的submirror
#metattachd50d52
d51,d52这2个submirror(子镜像)由metainit创建,c0t2d0s2可以比c0t1d0s2大
然后通过init-md51,创建了一个one-waymirror(单向镜像):
d50
最后通过metattachd50d52把第2个submirrord52attach上来,完成two-waymirror的建立。
在建立mirror的时候,可以使用任意条和串的组合(Whencreating a
mirror,anycombinationofstripesandconcatenationscanbe
used.)
6.Logging(trans)
#metainitd1111c0t1d0s2
#metainitd1211c0t2d0s2
#metainitd2111c1t1d0s3
#metainitd2211c1t2d0s3
#metainitd10-md11
#metattachd10d12
#metainitd20-md21
#metattachd20d22
#metainitd1-td10d20
最后一个命令:
建立了一个d1(transmetadevice,因为使用了-t),使用d10作为主设备(masterdevice),d20用来loggingdevice.
8.RAIDLevel5
#metainitd80-rc1t0d0s2c1t1d0s2c1t3d0s2-i20k -r说明是RAID5,-i是交替写的大小
9.softpartition软分区
#metainitd1-pd100100M
#metainitd2-pd100100M
....
#metainitd99-pd100100M
在建立好的逻辑设备(动态设备d100上)上继续划分分区,每个100M,一共99个分区。
10.softpartitiononfulldisk
#metainitd1-p-ec3t4d09Gb
Thefollowingexampleshowsa soft partition device, d1,builtondiskc3t4d0,Inthisexample,thediskisrepartitionedandasoftparti-tionisdefinedtooccupyall9Gbytesofdiskc3t4d0s0.
11.hotsparepool热备盘池
#metainithsp001c2t2d0s2c3t2d0s2c1t2d0s2
#metainitd4111c1t0d0s2-hhsp001
#metainitd4211c3t0d0s2-hhsp001
#metainitd40-md41
#metattachd40d42
建立了一个hot-spare-poolhsp001,d41和d42都使用hsp001,然后d41和d42组成d40.
12.RAID0+1
#metainit-fd1012c0d0s2c0d1s2
#metainit-fd2012c1d0s2c1d1s2
#metainit-fd0-md10
#metattachd0d20
12.RAID1+0
#metainit-fd1021c0d0s21c0d1s2
#metainit-fd2021c1d0s21c1d1s2
#metainit-fd0-md10
#metattachd0d20
写数据的时候,同时写c0d0s2和c1d0s2,写满后接着同时写c0d1s2和c1d1s2
备注:
当mirroringdata的时候,可能由于内容数据变化导致写入镜像盘中的数据不同而产生数据不同步,可以在/etc/system中加入以下行:
setmd_mirror:
md_mirror_wow_flg=0x20
设置这个flag将导致性能下降。
.
可用空间上的区别
分片情况如下:
c0d1s0c1d0s0c1d1s0 1434384blocks
c0d1s1c1d0s1c1d1s1 392112blocks
1stripe2slice按照条带卷的计算方法得出可用空间,由小的分片决定可用空间
1434384+392112=783216blocks
392112+392112 =783216blocks
2strips1slice2个条带组合:
可用空间为条带卷的空间和
1434384+392112=1826496blocks
392112+392112 =784224blocks
RAID5:
c0d1s1c1d0s1c1d1s1
size:
783216blocks
RAID5:
c0d1s0c0d1s1c1d0s1c1d1s1
size:
1175328blocks可用空间约等于最小的分片*(N-1)/N
yuhuohu(盘丝大仙)
天使
斑竹申请中
4楼发表于2006-9-2709:
03
相关补充知识:
删除所有的metadevice
metaclear-a
对于已经mounted的metadevice,要先umount文件系统,再删除
删除metadeviced0
metacleard0
换盘,替换坏盘
metareplace
从mirror(d0)中分离submirror(d10,d20)
metadetachd0d20
只显示分区(分片信息)
prtvtoc-h/dev/rdsk/c0d0s2
mount_option如何指定:
具体见manmount_ufsormanmount_nfs
logging|nologging
Ifloggingisspecified, then logging is
enabled for the duration ofthemounted
filesystem. Logging is the process of
storing transactions(changesthatmakeup
acompleteUFSoperation)ina log before
the transactions are appliedtothefile
system.Onceatransactionis stored, the
transactioncanbeappliedtothefilesys-
temlater.Thispreventsfilesystems from
becoming inconsistent,thereforeeliminat-
ingtheneedto run fsck. And, because
fsck can bebypassed,loggingreducesthe
timerequiredto reboot a system if it
crashes, or after an unclean halt.The
defaultbehaviorisnologging.
Thelogisallocatedfrom free blocks on
thefilesystem,andissized