首页 > 数据库 > DB2 > 正文

DB2 环境部署-在DB2 UDB V8.1中使用裸(raw)设备

2024-09-06 23:58:04
字体:
来源:转载
供稿:网友

版权声明: 本文可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息。
原文出处: http://www.aiview.com/notes/db2_using_raw.htm
作者: 张洋 alex_doesathotmail.com
最后更新: 2004-7-14
 目录 一般信息 规划磁盘分区 创建raw设备 创建数据库 规划日志以及备份文件存储 额外信息 参考资源 一般信息
本文中的命令和代码在以下环境编译执行通过:

ibm xseriers 345(inter 32位)
redhat enterprise linux 3.0
db2 v8.1 for linux
主机连接一个ibm emp300 磁盘柜,用于数据库数据存储。磁盘柜共有6块磁盘,单块146gb,其中5块做成raid5,剩余一块做备用盘。

raid5中,校验信息不单独占用一个磁盘,而是根据算法平均分布在各个磁盘上,这样避免了读写校验信息产生的瓶颈。
假设在主机上已经安装好了一个db2服务,创建了一个实例,名为db2,还未建立数据库,并且磁盘柜已经在系统下安装好驱动程序,我们获得的设备名为sdb,还未进行分区。

下面分步介绍在磁盘阵列上建立raw设备并进行数据规划和数据放置的操作步骤:
规划磁盘分区
以root登录,对磁盘阵列进行分区,在root提示符下键入:

#fdisk /dev/sdb

新增3个主分区sdb1,sdb2,sdb3,每个分区20gb,分别划分给系统目录表空间、默认的系统临时表空间和新增的32kb的临时表空间,
剩下空间约527gb全部划分给第4个扩展分区sdb4,在扩展分区中增加5个逻辑分区sdb5,sdb6,sdb7,sdb8,sdb9,前两个逻辑分区各160gb,用作表存储的用户表空间,第三个逻辑分区为20gb,用作专门放置索引的用户表空间,余下的2个逻辑分区分别为80gb、93gb,这两个逻辑分区使用ext3进行格式化,用于存放日志和数据库备份。
注意:sdb1-sdb7均未进行格式化操作,准备用作raw设备,由db2自行管理。

以下是分好区的磁盘状态:

disk /dev/sdb: 587.2 gb, 587257085952 bytes
254 heads, 63 sectors/track, 71677 cylinders
units = cylinders of 16002 * 512 = 8193024 bytes

device boot start end blocks id system
/dev/sdb1 1 2501 20010469+ 83 linux
/dev/sdb2 2502 5002 20010501 83 linux
/dev/sdb3 5003 7503 20010501 83 linux
/dev/sdb4 7504 71677 513456174 5 extended
/dev/sdb5 7504 27502 160011967+ 83 linux
/dev/sdb6 27503 47501 160011967+ 83 linux
/dev/sdb7 47502 50002 20010469+ 83 linux
/dev/sdb8 50003 60002 80009968+ 83 linux
/dev/sdb9 60003 71677 93411643+ 83 linux
创建raw设备
打算用作raw设备的各个逻辑分区db2不能够直接使用,需要使用raw命令创建raw设备名:
在root提示符下键入:

# raw -a

查询当前已经建立的raw设备名,目前为空,我们可以从第一个设备名用起,

在root提示符下键入:

# raw /dev/raw/raw1 /dev/sdb1 # 用于system catalog tablespace (4k)
# raw /dev/raw/raw2 /dev/sdb2 # 用于system temp tablespace (4k)
# raw /dev/raw/raw3 /dev/sdb3 # 用于system temp tablespace (32k)
# raw /dev/raw/raw5 /dev/sdb5 # 用于user tablespace1 (32k),存储表
# raw /dev/raw/raw6 /dev/sdb6 # 用于user tablespace1 (32k),存储表
# raw /dev/raw/raw7 /dev/sdb7 # 用于user tablespace2 (32k),存储索引

至此,我们创建了6个raw设备名,用于交给db2直接管理,查看一下已经创建的raw设备名的情况:

# raw -a

/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
/dev/raw/raw3: bound to major 8, minor 19
/dev/raw/raw5: bound to major 8, minor 21
/dev/raw/raw6: bound to major 8, minor 22
/dev/raw/raw7: bound to major 8, minor 23

如果想删除一个raw设备名(例如/dev/raw/raw1),在root提示符下键入:

# raw /dev/raw/raw1 0 0

接着修改系统的初始化文件,添加如下行到 /etc/rc.d/sysinit 文件:

raw /dev/raw/raw1 /dev/sdb1
raw /dev/raw/raw2 /dev/sdb2
raw /dev/raw/raw3 /dev/sdb3
raw /dev/raw/raw5 /dev/sdb5
raw /dev/raw/raw6 /dev/sdb6
raw /dev/raw/raw7 /dev/sdb7

这样系统在下次启动时,会重新建立需要的raw设备名。

默认建立的raw设备拥有者是disk,必须让数据库实例的拥有者具有此设备的存取权限,在root提示符下键入:

# chown db2:disk /dev/raw/raw[1,2,3,4,5,6,7]

将db2用户更改为7个裸设备的拥有者,至此,这些裸设备已经可以为db2所引用。
创建数据库
下面准备使用以上raw设备创建一个名为newdb的数据库,包含页size为4kb系统目录表空间、系统临时表空间以及用户表空间各一个;
然后新建页size为8kb、16kb、32kb的缓冲池各一个;
删除4kb的用户表空间,新建2个32kb页size的用户表空间,用于用户表的存储;
新建一个32kb页size的用户表空间,用于存储索引;
新建一个32kb页size的系统临时表空间;

我们将完成以上功能的脚本保存为newdb.sql,并通过如下方式执行此脚本:

在root提示符下键入如下命令,转到db2用户下:

# su - db2

执行上面的脚本:

$ db2 -td";" -f newdb.sql

至此数据库创建完成。下载脚本代码
规划日志以及备份文件存储
接下来,还需要规划日志和数据库备份的存储,首先将用于日志和数据库备份的分区进行格式化(此过程花费时间较长):
在root提示符下键入:

# mkfs.ext3 /dev/sdb8
# mkfs.ext3 /dev/sdb9

创建db2数据库的目录:

# mkdir /db2
# chown db2:db2 /db2
# su - db2

$ mkdir /db2/db2log
$ mkdir /db2/db2backup
$ exit

mount逻辑分区到目录:

# mount /dev/sdb8 /db2/db2log
# mount /dev/sdb9 /db2/db2backup

更新数据库的log文件路径:

# su - db2
$ db2 connect to newdb
$ db2 update db cfg using newlogpath '/db2/db2log'

停顿数据库使修改生效,使用defer参数继续执行已有的事务,拒绝新的连接,停顿成功后发布激活数据库的命令:

$ db2 quiesce db defer
$ db2 unquiesce db
$ exit

至此我们完成了利用raw设备进行数据规划和数据放置的任务。
额外信息
当已经在raw设备上创建容器之后,若没有通过正常的步骤删除表空间所在数据库,也没有直接删除容器或者容器所在表空间,则再次利用这些raw设备时,db2会报错:
the container is already in use

此时应使用db2untag命令释放container标志,而采用重新对磁盘进行分区或者格式化的操作是无济于事的。

释放已经在raw设备raw1上建立的container标志:

# su - db2
$ db2untag /dev/raw/raw1

 

参考资源
下载用于创建数据库的脚本
ibm db2 开发者园地
http://www-900.ibm.com/developerworks/cn/dmdd/certify/index.shtml

ibm db2 信息中心
http://publib.boulder.ibm.com/infocenter/db2help/index.jsp

dbforums 论坛
http://dbforums.com/

《db2 udb v8.1 for linux, unix, windows 数据库管理》george baklarz, bill wong 合著,机械工业出版社出版

《db2数据库管理与应用教程》庄济诚 著,清华大学出版社出版


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表