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下,则系统启动时自动执行此文件,以保证裸设备的正常运作。 |