一.概述
由于不断的学习,我发现了一种新的方式来实现Oracle RAC共享存储,写这篇文章的目的在于简化使用Vmware构建Oracle RAC的存储环境,分享于广大的采用虚拟机玩Oracle RAC的朋友。以下的两种方式共享存储方式几乎全部是虚拟机玩Oracle RAC的朋友采用的:1.使用Vmware server添加多块磁盘。2.使用openfiler。第1种方式配置vmware参数,还是有很多朋友无法实现共享存储。第2种采用openfiler方式,需要额外多开一个虚拟系统来提供存储,本来两个节点的RAC需求的内存就比较大,再开一个虚拟系统,估计大家都吃不消了。
我介绍一种新的方式来实现Oracle RAC的共享存储,就是采用StarWind产品。它是基于Windows平台的,在磁盘上可以划分一块物理磁盘,或者划分一块磁盘内的区域来提供共享存储。StarWind可以到官方网站下载免费的基本版本和官方提供的license来搭建我们的学习环境。高级版本是收费的,免费版本就够用了官方也提供license(一定要下载),我已在自己的测试环境通过。
本文从这款软件的安装、配置共享存储,到Oracle RAC节点的挂载、裸设备的绑定,演示了整个RAC共享存储的配置。
二.配置存储
1.先安装Microsoft iSCSI Software,这是StarWind要求的,可以到http://www.microsoft.com/download/en/details.aspx?DisplayLang=en&id=18986下载。
2.安装StarWind,安装过程不列,跟平常软件没什么区别。
3.打开StarWind management console,如图:
4.右键点击StartWind Servers,选择add host,如图:
5.弹出的对话框如下:
这里无需修改,点ok即可,3261是管理端口。
6.在创建完成后,右键单击servername,选择connect,如图:
7.输入root用户名,密码为starwind,默认的密码,连接成功后,来到管理这台server的页面,会提示输入license,安装事先下载好的license文件,即可。我本机已安装过,不再演示。如图:
8.右键单击Targets,选择add target,并弹出对话框,输入target名字,如图:
9.单击Next,选择第一项Hard Disk,点击Next
10. 选择第二项Basic Vritual,单击Next
11.选择第一项Image File device,单击Next
12.选择第二项Create new virtual disk,单击Next
13.填写image file文件路径和大小,下面是支持的压缩、加密等功能,这里不选。单击Next
14.这里是磁盘属性的配置,一定要选上第二项,允许cluster使用,也就是多路径访问,然后Next
15.选上第二个write-through ching,单击Next
16.展示创建target信息单和target名字,连续单击Next完成创建。
17.创建完成后,存储服务已经在运行,监听本机所有网卡ip的3260端口,如图:
到此共享存储的基本环境已经完成,需要在Oracle RAC的节点通过iscsi方式,进行挂载共享存储,前提虚拟机内的节点必须保证和主机互相通信。
三.挂载存储
OS:rhel5
1.安装iscsi的rpm包,可以在rhel5的镜像内找到。<每个节点>
[root@racdb1 Server]# rpm -vih iscsi-initiator-utils-6.2.0.742-0.5.el5.i386.rpm warning: iscsi-initiator-utils-6.2.0.742-0.5.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing… ########################################### [100%] 1:iscsi-initiator-utils ########################################### [100%] [root@racdb1 Server]# cat /etc/iscsi/initiatorname.iscsi InitiatorName=iqn.2005-03.com.redhat:01.1e715d33ce10 |
2.探测主机server运行的共享存储标识target。<每个节点执行一次>
[root@racdb1 /]# iscsiadm -m discovery -t sendtargets -p 10.10.10.1:3260 10.10.10.1:3260,-1 iqn.2008-08.com.starwindsoftware:127.0.0.1-qidu |
这里发现了我们事先创建好的存储,下面我们使用iscsi挂载磁盘。
3.通过iscsi挂载磁盘。<每个节点执行一次>
[root@racdb1 /]# iscsiadm -m node -T iqn.2008-08.com.starwindsoftware:127.0.0.1-qidu -p 10.10.10.1:3260 –l <节点1> [root@racdb1 /]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 * 1 1020 8193118+ 83 Linux /dev/sda2 1021 1275 2048287+ 82 Linux swap / Solaris /dev/sda3 1276 3916 21213832+ 83 Linux
Disk /dev/sdb: 42.9 GB, 42949672960 bytes 64 heads, 32 sectors/track, 40960 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table
<节点2> [root@racdb2 /]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 * 1 1020 8193118+ 83 Linux /dev/sda2 1021 1275 2048287+ 82 Linux swap / Solaris /dev/sda3 1276 3916 21213832+ 83 Linux
Disk /dev/sdb: 42.9 GB, 42949672960 bytes 64 heads, 32 sectors/track, 40960 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes
Disk /dev/sdb doesn't contain a valid partition table |
每个节点上面的/dev/sdb就是刚才通过iscsi挂载的磁盘。
4.在StarWind控制台,可以看到有两个客户端已经连接到此存储,如图:
5.在节点1,对/dev/sdb磁盘进行分区,过程不演示,分区后如图:
<节点1> [root@racdb1 /]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 * 1 1020 8193118+ 83 Linux /dev/sda2 1021 1275 2048287+ 82 Linux swap / Solaris /dev/sda3 1276 3916 21213832+ 83 Linux
Disk /dev/sdb: 42.9 GB, 42949672960 bytes 64 heads, 32 sectors/track, 40960 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 9538 9766896 83 Linux /dev/sdb2 9539 23844 14649344 83 Linux /dev/sdb3 23845 40960 17526784 83 Linux
<节点2> [root@racdb2 /]# fdisk -l Disk /dev/sda: 32.2 GB, 32212254720 bytes 255 heads, 63 sectors/track, 3916 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System /dev/sda1 * 1 1020 8193118+ 83 Linux /dev/sda2 1021 1275 2048287+ 82 Linux swap / Solaris /dev/sda3 1276 3916 21213832+ 83 Linux
Disk /dev/sdb: 42.9 GB, 42949672960 bytes 64 heads, 32 sectors/track, 40960 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes
Device Boot Start End Blocks Id System /dev/sdb1 1 9538 9766896 83 Linux /dev/sdb2 9539 23844 14649344 83 Linux /dev/sdb3 23845 40960 17526784 83 Linux |
6.使用udev进行裸设备的绑定,不采用ASMlib。<每个节点执行一次>
编辑/etc/udev/rules.d/60-raw.rules文件,添加以下内容:
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N" ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N" ACTION=="add", KERNEL=="sdb3", RUN+="/bin/raw /dev/raw/raw3 %N" KERNEL=="raw[1-3]", OWNER="grid", GROUP="asmadmin", MODE="660" <节点1> [root@racdb1 /]# start_udev Starting udev: [ OK ] 查看裸设备信息: [root@racdb1 /]# ls -l /dev/raw* crw——- 1 root root 162, 0 Dec 16 04:06 /dev/rawctl /dev/raw: total 0 crw-rw—- 1 grid asmadmin 162, 1 Dec 16 05:49 raw1 crw-rw—- 1 grid asmadmin 162, 2 Dec 16 05:49 raw2 crw-rw—- 1 grid asmadmin 162, 3 Dec 16 05:49 raw3 [root@racdb1 /]# raw -qa /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
<节点2> [root@racdb2 /]# start_udev Starting udev: [ OK ] [root@racdb2 /]# ls -l /dev/raw* crw——- 1 root root 162, 0 Dec 16 04:07 /dev/rawctl /dev/raw: total 0 crw-rw—- 1 grid asmadmin 162, 1 Dec 16 04:08 raw1 crw-rw—- 1 grid asmadmin 162, 2 Dec 16 04:08 raw2 crw-rw—- 1 grid asmadmin 162, 3 Dec 16 04:08 raw3 [root@racdb2 /]# raw -qa /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 |
这里是我的Oracle RAC测试的两个节点,基本环节节已经配置好了(系统参数修改、rpm包、用户信息)。
到此Oracle RAC基本的共享存储环节已经配置完成,具体的安装过程就补演示了,这样的文章在互联网网上太多太多了。