一、 文件系统和裸设备
在Sybase中可以选择文件或裸设备作为数据库设备来使用。两者之间最大的区别在于如果采用文件作为数据库设备,在读写操作时,将可以使用操作系统提供的文件Cache,从而提高读写速度。但是,也正是由于这点,当服务器遭遇意外停电时,如果操作系统来不及将Cache中的数据回写到硬盘上,那么下次启动数据库时,可能会发生数据表损坏、索引损坏、严整的甚至无法启动Sybase。所以从安全角度而言,采用裸设备作为数据库设备将会更好一些。由于对裸设备而言,任何的读写操作将会在第一时间回写到硬盘上,因而不会受到断电的影响。同时,由于Sybase本身的transaction机制,保证了每一次操作的完整性(Sybase的transaction可以保证每一次数据库操作的完整性,但无法保证写到数据库设备上的数据被第一时间回写到硬盘),因此采用裸设备相对来说安全了许多。另外,由于裸设备无法使用操作系统的文件Cache,因此在读写性能方面将弱于数据库文件,但是可以通过在Sybase内建立Data Cache的方法来提高读写速度。Sybase的Data Cache和操作系统的文件读写Cache不是同一个概念,使用Data Cache将由Sybase自身来保证Cache中的数据和硬盘数据的同步,不会有丢失数据的问题(至少我没碰到过)。
二、 SCO Unixware对裸设备的限制
首先声明,以下的这些限制是根据我个人的经验总结的,不一定完全准确。
在Unixware里无论是采用文件还是裸设备作为数据库的设备,其大小都不能超过2G,因此使用裸设备时,每个分区的大小不能过大,超过2G部分将被浪费。
同时,Unixware对于一块硬盘只能建立15个分区,而其中有2个分区被系统占用,因此每块硬盘可以用于建立裸设备的分区最多只能有13个。由于目前硬盘的容量通常都很大,因此建议把其中的12个作为裸设备分区使用,而把最后一个作为文件系统,这样就不至于浪费硬盘空间了。
最要命的一件事,我一直无法成功地在Unixware的第一块硬盘上建立可以供Sybase使用的裸设备,我不清楚是操作系统的限制,还是其他什么原因。因此以下将介绍如果在第二块硬盘上建立裸设备。
三、 在Unixware的第二块硬盘上建立裸设备
1、 确保物理连接,必要的RAID等操作,确定操作系统已经正确识别第二块硬盘。可以到/dev/dsk目录下用 ls –l 命令检查是否存在c0b0t1d0s*文件,如果存在说明操作系统已经识别出了第二块硬盘
2、 使用diskadd命令添加第二块硬盘、并建立分区(以下粗体部分为用户输入)
# [b]diskadd 1[/b]
UX:diskadd: INFO: You have invoked the System V disk management (s5dm)
diskadd utility.
The purpose of this utility is to set up additional disk drives.
This utility can destroy the existing data on the disk. Do you wish
to continue? (Type y for yes or n for no followed by ENTER): [b]y[/b]
[i]说明:如果之前没有进行过fdisk操作,这里会提示是否把所有的硬盘空间建立成unixware分区,回答y即可。如果之前已经做过fdisk,那么这里就会直接进入fdisk菜单界面,直接退出就可以了(当然你也可以在这里改变系统分区)[/i]
The recommended default partitioning for your disk is:
a 100% "UNIX System" partition.
To select this, please type "y". To partition your disk
differently, type "n" and the "fdisk" program will let you
select other partitions. [b]y[/b]
[i]说明:一般情况下不需要进行硬盘表面扫描,回答n跳过扫描步骤[/i]
Surface analysis of your disk is recommended but not required.
Do you wish to skip surface analysis? (y/n) [b]n[/b]
You will now be queried on the setup of your disk. After you
have determined which slices will be created, you will be
queried to designate the sizes of the various slices.
[i]说明:输入希望建立的分区数,按照上面的分析,回答最大分区数13[/i]
How many slices/filesystems do you want created on the disk (1 - 13)? [b]13[/b]
[i]说明:对于前12个分区,输入目录(这里的目录没有实际意义,但是必须输入,只要保证不重复就可以了),选择操作系统(由于是裸设备,因此操作系统输入na),回答是否在启动时自动mount(裸设备不需要mount,回答no)[/i]
Please enter the absolute pathname (e.g., /home3) for
slice/filesystem 1 (1 - 32 chars)? [b]/h01[/b]
Enter the filesystem type for this slice (vxfs,ufs,s5,sfs), type 'na'
if no filesystem is needed, or press
; to use the default (vxfs): [b]na[/b]
Should /h01 be automatically mounted during a reboot?
Type "no" to override auto-mount or press ; to enable the option: [b]no[/b]
Please enter the absolute pathname (e.g., /home3) for
slice/filesystem 2 (1 - 32 chars)? [b]/h02[/b]
Enter the filesystem type for this slice (vxfs,ufs,s5,sfs), type 'na'
if no filesystem is needed, or press ; to use the default (vxfs): [b]na[/b]
Should /h02 be automatically mounted during a reboot?
Type "no" to override auto-mount or press ; to enable the option: [b]no[/b]
…………………………
[i]说明:对于最后一个分区,输入目录(这里的目录必须要输入的,也就是以后建立文件设备时都放在这个目录下),选择操作系统(直接回车选择vxfs),选择block size(直接回车),回答是否在启动时自动mount(直接回车回答y)[/i]
Please enter the absolute pathname (e.g., /home3) for
slice/filesystem 13 (1 - 32 chars)? [b]/newdata[/b]
Enter the filesystem type for this slice (vxfs,ufs,s5,sfs), type 'na'
if no filesystem is needed, or press ; to use the default (vxfs):
Specify the block size from the the following list
(1024, 2048, 4096, 8192), or press ; to use the first one:
Should /newdata be automatically mounted during a reboot?
Type "no" to override auto-mount or press ; to enable the option:
[i]说明:接下去回答每个分区的尺寸,在unixware里以硬盘柱面为单位,可以根据下面的提示自己计算,对于裸设备分区,大小最好超过2GB(别超太多,一点点就够了),因为操作系统和Sybase本身都需要用到一些空间的。最后一个分区把所有剩下的柱面都给它。[/i]
You will now specify the size in cylinders of each slice.
(8 megabyte of disk space is approximately 1 cylinders.)
There are now 3074 cylinders available on your disk.
The filesystem type you have chosen is limited to 1048576 cylinders.
How many cylinders would you like for /h01 (0 - 3074)?
Press ; for 0 cylinders: [b]257[/b]
There are now 2817 cylinders available on your disk.
The filesystem type you have chosen is limited to 1048576 cylinders.
How many cylinders would you like for /h02 (0 - 2817)?
Press ; for 0 cylinders: [b]257[/b]
………………
There are now 2800 cylinders available on your disk.
The filesystem type you have chosen is limited to 1048576 cylinders.
How many cylinders would you like for /newdata (0 - 2800)?
Press ; for 0 cylinders: [b]2800[/b]
[i]说明:这里将显示出设置的所有分区的内容,最后再检查一次,如果正确回答y继续,否则回答n返回后重头再来。[/i]
You have specified the following disk configuration:
A /h01 filesystem with 257 cylinders (2049.0 MB)
A /h02 filesystem with 257 cylinders (2049.0 MB)
………………
A /newdata filesystem with 2800 cylinders (22400.0 MB)
Is this allocation acceptable to you (y/n)? [b]y[/b]
[i]说明:最后对建立的文件系统回答inode数量,直接回车[/i]
Filesystems will now be created on the needed slices
Creating the /newdata filesystem on /dev/rdsk/c0b0t1d0sf
Allocated approximately 716768 inodes for this file system. Specify a
new value or press ; to use the default:
UX:diskadd: INFO: Diskadd for Disk Drive 2 DONE at Fri Sep 05 14:47:16 EDT 2004
说明:大功告成,可以用了
#
四、 在Sybase中使用裸设备
用上述方法建立完分区后,可以用prtvtoc /dev/rdsk/c0b0t1d0s0来检查第二块硬盘的分区情况。可以看到其中第7第8两个分区系统已经占用了,因此可以使用作为裸设备的分区只有以下的12个(最后一个分区是文件系统,不是裸设备)
/dev/rdsk/c0b0t1d0s1, /dev/rdsk/c0b0t1d0s2, /dev/rdsk/c0b0t1d0s3, /dev/rdsk/c0b0t1d0s4
/dev/rdsk/c0b0t1d0s5, /dev/rdsk/c0b0t1d0s6, /dev/rdsk/c0b0t1d0s9, /dev/rdsk/c0b0t1d0sa
/dev/rdsk/c0b0t1d0sb, /dev/rdsk/c0b0t1d0sc, /dev/rdsk/c0b0t1d0sd, /dev/rdsk/c0b0t1d0se
将以上文件的group和owner都改为sybase
cd /dev/rdsk
chgrp sybase c0b0t1d0s*
chown sybase c0b0t1d0s*
在sybase里添加数据库设备,物理名称就是上面12个中的一个
阅读(1531) | 评论(0) | 转发(0) |