哪位大侠共享一下:UNIXWARE创建裸设备的具体步骤

发表于:2007-05-26来源:作者:点击数: 标签:
正研究这方面的东东,搜到一些很好的资料, MI AOMU2008的帖子很好,可是里面提到的“具体步骤见《附件4.4: unix ware裸设备的建立方法》文档” 不知有没有,哪位老大能指点迷津,感激不尽 saintdragon 回复于:2004-11-26 13:48:33 论坛上以前讲过,自己搜

正研究这方面的东东,搜到一些很好的资料,MIAOMU2008的帖子很好,可是里面提到的“具体步骤见《附件4.4:unixware裸设备的建立方法》文档”
不知有没有,哪位老大能指点迷津,感激不尽

 saintdragon 回复于:2004-11-26 13:48:33
论坛上以前讲过,自己搜一下
以下是简单步骤:
1.首先你的设备必须有空间
2.prtvtoc /home/vtoc /dev/rdsk/c0b0t0d0s0
3.vi /home/vtoc
添加新的分片(slice),设置文件系统为裸设备0x201
4.edvtoc /home/vtoc /dev/rdsk/c0b0t0d0s0

 CNL 回复于:2004-11-26 13:50:26
http://wdb1.sco.com/kb/showta?taid=105805&qid=8751625&sid=2137801054&pgnum=1
裸设备唯一与新加文件系统不同的地方是TAG为0x7
看不懂的地方再问。

 小嗖 回复于:2004-11-26 15:31:45
我做的,unixware+oracle+ha(rose)和unixware+sybase+ha 

数据库放在磁盘阵列上,diskadd 添加磁盘阵列作成文件系统,很简单实现双机热备。

切换的时候HA做操作

fsck -F vxfs -y $DISKDEV 
mount -F vxfs $DISKDEV $MOUNTPOINT

在下对裸设备的操作不熟,甚至还没用过prtvtoc edvtoc ,如果把磁盘阵列作成裸设备的话,,HA用上面的命令能不能MOUNT,所以这两天就搜集这方面的资料。
多谢指教

 Flyinginsky 回复于:2004-11-26 15:55:30


 CNL 回复于:2004-11-26 16:02:49
[quote:49844540ca]
如果把磁盘阵列作成裸设备的话,,HA用上面的命令能不能MOUNT,
[/quote:49844540ca]
你的要求不可能实现,所谓裸设备就是没有文件系统的物理存储块,
是需要操作者如数据库自行管理读写的设备,操作系统不识别的东西你怎么mount?!

 Flyinginsky 回复于:2004-11-26 16:06:58
cd /
prtvtoc -f  vtoc /dev/rdsk/c0b0t0d0s0
vi vtoc
在vtoc的后面增加要的裸设备 自己要设计好裸设备所在地址和大小
地址不能重叠slice不能相同
edvtoc -f vtoc /dev/rdsk/c0b0t0d0s0
shutdown -y -g -i6
在/dev/rdsk中就多了你要增加的裸设备
要使用刚建的裸设备要用mknod指定一个文件如:
mknod /data/touchfile b 7679 16
/data/touchfile 是你touch的一个文件 16是你的slice号

 小嗖 回复于:2004-11-27 12:03:05
如果要实现双机热备,把数据库建的裸设备上,有没有这方面的方案呢。

我觉的总有一种办法来解决这个问题。(恕本人问些无知的问题,这方面知道不多)

 day_dream 回复于:2004-11-28 10:02:11
[quote:84be301594="小嗖"]如果要实现双机热备,把数据库建的裸设备上,有没有这方面的方案呢。

我觉的总有一种办法来解决这个问题。(恕本人问些无知的问题,这方面知道不多)[/quote:84be301594]

兄弟,好像双极热备和裸设备没什么关系吧,顶多是切换脚本里的一点区别
数据库是否使用裸设备是因为性能的原因啊。

 shu_jiang 回复于:2004-11-28 20:56:14
3.使用vtoc命令划分slice 
3.1.命令模式 
VTOC的全称Volume Table of Contents,目录卷表,它管理着fdisk分区表和slice的分区表。 
prtvtoc命令是一个磁盘VTOC信息的显示工具,该命令的命令模式如下: 
prtvtoc –f filename /dev/rdsk/c0b0t1d0s0 (filename可以任意指定) 
edvtoc命令是硬盘VTOC信息的编辑工具,因为每个硬盘在UnixWare7操作系统中都是VTOC驱动程序通过VTOC表进行管理的,所以说edvtoc也是UnixWare7修改硬盘分区的工具该命令的命令模式如下: 
edvtoc –f filename /dev/rdsk/c0b0t1d0s0 (filename是指定的vtoc文件) 
利用diskadd或者disksetup命令添加一个2G大小的分片 
3.2.读取VTOC信息 
以root用户登录 
# prtvtoc –f vtoc.txt /dev/rdsk/c0b0t3d0s0 
# pg vtoc.txt 
--------------------------------------------------------------------- 
# SLICE TAG FLAGS START SIZE 
0 0x5 0x201 32 45998000 ――》代表整个逻辑盘 
1 0x4 0x201 2048 4280320 ――》代表第一个分片(裸设备) 
2 0x0 0x0 0 0 
3 0x0 0x0 0 0 
4 0x0 0x0 0 0 
5 0x0 0x0 0 0 
6 0x0 0x0 0 0 
7 0x1 0x201 32 34 ――》boot区 
8 0xd 0x201 66 1982 ――》Alternate sector/track 
9 0x0 0x0 0 0 
10 0x0 0x0 0 0 
11 0x0 0x0 0 0 
12 0x0 0x0 0 0 
13 0x0 0x0 0 0 
14 0x0 0x0 0 0 
15 0x0 0x0 0 0 
(EOF): 
-------------------------------------------------------------------------- 
注: 
SLICE:该字段表示分片号,其中分片号0(代表整个逻辑盘)、7、8是系统所有; 
TAG:该字段对于分片号0、7、8是系统自定的(0x5、0x1、0xd),不能改变,其它分片号在划分裸设备时对应该字段都是0x4; 
FLAGS:该字段中0x200表示文件系统,0x201表示裸设备; 
START:开始大小,其数值等于上一个分片的start+size,例如在vtoc文件中,我们可以看到其中slice8的start值(66)等于slice7的start+size值(32+34),其中slice1的start值(2048)等于slice8的start+size值(66+1982); 
SIZE:分片大小,单位512字节,其中slice0的size表示整个逻辑盘的大小45998000*0.5K=22.998G,而slice1的分片实际大小为4280320*0.5K=2.14G,因为sybase限制分片最大2G,所以我们可以修改vtoc文件使size大小为4000000*0.5K=2G 
3.3.编辑VTOC信息 
了解vtoc.txt文件中每个字段的意义,我们就可以利用vi工具编辑该文件,修改后的文件为: 
------------------------------------------------------------------ 
#SLICE TAG FLAGS START SIZE 
0 0x5 0x201 32 47101920 
1 0x4 0x201 2048 4000000 
2 0x4 0x201 4002048 4000000 
3 0x4 0x201 8002048 4000000 
4 0x4 0x201 12002048 4000000 
5 0x4 0x201 16002048 4000000 
6 0x4 0x201 20002048 4000000 
7 0x1 0x201 32 34 
8 0xd 0x201 66 1982 
9 0x4 0x201 24002048 4000000 
10 0x4 0x201 28002048 4000000 
11 0x4 0x201 32002048 4000000 
12 0x4 0x201 36002048 4000000 
13 0x4 0x201 40002048 4000000 
14 0x4 0x201 44002048 3000000 
------------------------------------------------------------------------------------ 
注: 
1. 编辑vtoc.txt有一个原则,最后一个slice的结束sector不能超出整个fdisk分区的范围,如果超出,将产生不可预料的严重错误,甚至有导致整个系统瘫痪的可能(如果整个硬盘作为裸设备则不会出现该问题)。 
2. 所有分片的的size之和不能超过该硬盘的大小,即所有slice(1-14)对应的size之和不能大于slice0对应的szie数值。 
3. 编辑vtoc.txt文件时,最后一行不能为空行。 

3.4.更新VTOC信息 
利用edvtoc命令更新硬盘的VTOC信息: 
# edvtoc –f vtoc.txt /dev/rdsk/c0b0t3d0s0 
你会看到 
--------------------------------------------------------------------------- 
UX:edvtoc: INFO: The following slices are the new disk configuration 
you have created. NO ERROR or VALIDITY checking has been done on it. 
slice 0: tag: DISK perms: VALID UNMOUNTABLE start: 32 length: 47101920 
slice 1: tag: USER perms: VALID UNMOUNTABLE start: 2048 length: 4000000 
slice 2: tag: USER perms: VALID UNMOUNTABLE start: 4002048 length: 4000000 
slice 3: tag: USER perms: VALID UNMOUNTABLE start: 8002048 length: 4000000 
slice 4: tag: USER perms: VALID UNMOUNTABLE start: 12002048 length: 4000000 
slice 5: tag: USER perms: VALID UNMOUNTABLE start: 16002048 length: 4000000 
slice 6: tag: USER perms: VALID UNMOUNTABLE start: 20002048 length: 4000000 
slice 7: tag: BOOT perms: VALID UNMOUNTABLE start: 32 length: 34 
slice 8: tag: ALT SEC/TRK perms: VALID UNMOUNTABLE start: 66 length: 1982 
slice 9: tag: USER perms: VALID UNMOUNTABLE start: 24002048 length: 4000000 
slice 10: tag: USER perms: VALID UNMOUNTABLE start: 28002048 length: 4000000 
slice 11: tag: USER perms: VALID UNMOUNTABLE start: 32002048 length: 4000000 
slice 12: tag: USER perms: VALID UNMOUNTABLE start: 36002048 length: 4000000 
slice 13: tag: USER perms: VALID UNMOUNTABLE start: 40002048 length: 4000000 
slice 14: tag: USER perms: VALID UNMOUNTABLE start: 44002048 length: 3000000 

Is this configuration the VTOC you want written to c0b0t3d0s0? 
(y/n) y 
----------------------------------------------------------------------------------------------- 
编译内核后重新启动机器 : 
# /etc/conf/bin/idbuild 
# shutdown –y –g0 –i6 
三.查看分片情况 
# cd dev/rdsk 
# lf c0b0t3d01s* 
如果看到的文件从cob0t3d0s0~c0b0t3d0se的话,表示分片成功。 
四.映射裸设备文件 
1.映射裸设备 
通过裸设备创建数据库设备(database device),则需首先将裸设备文件映射到指定的文件名上: 
# ln –s /dev/rdsk/c0b0t3d0s1 /home/sybae/devlink/dev25 
链接映射后,还需将/dev/rdsk/c0b0t3d0s1的文件属性进行修改: 
# chown sybase:sybase /dev/rdsk/c0b0t1d0s1 
# chmod 660 /dev/rdsk/c0b0t1d0s1 
这里我们为了方便可以先编写一个devcfg的shell脚本: 
#raw device config 20040618 
ln -s /dev/rdsk/c0b0t3d0s1 /home/sybase/devlink/dev25 
ln -s /dev/rdsk/c0b0t3d0s2 /home/sybase/devlink/dev26 
ln -s /dev/rdsk/c0b0t3d0s3 /home/sybase/devlink/dev27 
ln -s /dev/rdsk/c0b0t3d0s4 /home/sybase/devlink/dev28 
ln -s /dev/rdsk/c0b0t3d0s5 /home/sybase/devlink/dev29 
ln -s /dev/rdsk/c0b0t3d0s6 /home/sybase/devlink/dev30 
ln -s /dev/rdsk/c0b0t3d0s9 /home/sybase/devlink/dev31 
ln -s /dev/rdsk/c0b0t3d0sa /home/sybase/devlink/dev32 
ln -s /dev/rdsk/c0b0t3d0sb /home/sybase/devlink/dev33 
ln -s /dev/rdsk/c0b0t3d0sc /home/sybase/devlink/dev34 
ln -s /dev/rdsk/c0b0t3d0sd /home/sybase/devlink/dev35 
ln -s /dev/rdsk/c0b0t3d0se /home/sybase/devlink/dev36 
修改脚本属性为可执行: 
# chmod +x devcfg 
# devcfg 
2.修改裸设备属主及属性 
# chown sybase:sybase /dev/rdsk/c0b0t3* 
# chown sybase:sybase /dev/dsk/c0b0t3* 
# chown sybase:sybase /dev/async 
# chmod 660 /dev/dsk/c0b0t1d0s0 
# chmod 660 /dev/rdsk/c0b0t3d0s 
# chmod 660 /dev/dsk/c0b0t3d0s0 

到此,裸设备配置完成,之后在裸设备上划分建立数据库设备就可以了。 
注: 
服务器由于更改配置需要重启,重新rebuild后裸设备的映射关系以及属主、属性有可能会回复初始状态,这不是我们希望看到的。解决此问题的办法,就是将裸设备的映射关系以及改变属主、属性的操作统一写在一个可执行文件中(例如S99rawdevcfg),然后将此文件的属性用chmod 777 S99rawdevcfg改为可执行,再将此文件置放于系统自启动目录/etc/rc2.d下,则系统启动时自动执行此文件,以保证裸设备的正常运作。

原文转自:http://www.ltesting.net