环境:CPU:Intel core2 E6750,内存:2G
安装过程:
1.安装rhel5.1 x64版本,安装时选择所有开发相关内容;
2.升级内核到当时最新版本(从
www.kernel.org
下载2.6.25.7,目的是为了更好支持kvm),升级过程如下:
a.下载解压缩
b.# make mrproper
c.# make menuconfig(这个时候把虚拟化的内容去掉,内核内嵌的kvm版本比较旧)
d.#make
e.#make modules_install
f.#make install
g.修改/boot/grub/menu.lst,让系统默认从新内核启动
3.下载安装kvm,软件和文档地址
http://kvm.qumranet.com/kvmwiki
a.修改主机bios中,VT为ON,
b.安装kvm,也就是configure,make,make install三步曲,
c.加载kvm的两个模块,modprobe kvm,modprobe kvm-intel(amd相应使用kvm-adm)
4.使用kvm安装虚拟机
a.创建虚拟文件,qume-img create -f vmdk /test/host1.img 10G,qume-img create -f vmdg /test/data.img 10G,创建的镜像文件和vmware的虚拟盘一样,有数据时自动扩充.
b.设置kvm的网络:
①.主机上需要做一个桥接才能让虚拟机和主机ip连通,需要安装默认安装是没有的bridge-utils-1.1-2,
②.#/usr/sbin/brctl addbr br0
③.#brctl addif br0 eth0
④.增加文件/etc/sysconfig/network-scripts/ifcfg-br0来保证每次重启自动启动这个桥接:
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
OnBOOT=yes
⑤ .修改/etc/sysconfig/network-scripts/ifcfg-eth0添加BRIDGE来指定桥接在这个节点启动:
BRIDGE=br0
⑥.增加一个脚本再虚拟器启动时候通过这个虚拟网卡和主机及外网通信qemu-ifup,并添加可执行权限:
#!/bin/sh
set -x
switch=br0
if [ -n "$1" ];then
/usr/bin/sudo /usr/bin/tunctl -u `whoami` -t $1
/usr/bin/sudo /sbin/ip link set $1 up
sleep 0.5s
/usr/bin/sudo /usr/sbin/brctl addif $switch $1
exit 0
else
echo "Error: no interface specified"
exit 1
fi
⑦.开始安装虚拟机,qume-system-x86_64 -hda /test/hosting.img -hdb /test/data.img(系统识别到的hda和hdb) -m 800(所分配的内存) -net nic,model=rtl8139 -net tap,script=/qemu-ifup(网卡型号及使用虚拟网卡做桥接) -cdrom /test/rhel1.img(所使用的光盘镜像文件) -boot b(a,b,c对应软盘,光盘,硬盘)
4.netapp模拟器的安装
a.sh安装后run.sh运行,
b.配置initiator groups,注册rac各节点的initiator,
c.aggreate→volume→lun→lun map,
e.进行网络的配置,由于netapp的模拟器在使用br0时总认为这不是一个可识别的设备,因此我只能弄了个dummy设备来给他用,配置过程如下:
①.下载piobd并安装:http://www.dur.ac.uk/c.c.dean/piobd/
②.做dummy的配置:/etc/modprobe.conf里面添加如下行:
alias dummy0 dummy
options dummy numdummies=1
在/etc/sysconfig/network-sciptes里面添加文件ifcfg-dummy0:
# Dummy Network Device
DEVICE=dummy0
BOOTPROTO=none
OnBOOT=yes
IPV6INIT=no
TYPE=Ethernet
MACADDR=01:02:03:04:05:06
IPADDR=192.168.1.1
NETMASK=255.255.255.0
ARP=yes
③加载模块dummy,ifup dummy0 up,后将/sim/setup.sh里面的eth替换成dummy重新执行/sim/setup.sh;
④netapp模拟器自身网卡ip地址的配置,配置两个和dummy0相同网段的ip即可.
⑤网关及路由的配置---host1,我在/etc/rc5.d/里面添加文件S99brup,内容如下:
[root@host1 rc5.d]# more S99brup
echo "1">/proc/sys/net/ipv4/ip_forward -----------------启用ip转发让host2通过br0转发到dummy0
ifconfig br0:100 177.177.100.102 netmask 255.255.255.0 up------配置rac的private网卡
cd /sim
./bgrun.sh---------------------------后台启动netapp模拟器,如果不先进入路径将会找到不模拟器的一个库函数.此外要安装expert后才能再后台运行这个程序,rhel安装光盘里面就有这个包
/etc/init.d/piobd restart------------piobd重启
sleep 100---------------等待netapp模拟器完全启动
/etc/init.d/iscsi restart----重启iscsi来刷新模拟器提供的iscsi lun
chmod 777 /dev/sd*----每次iscsi重新识别设备后权限都是只有root可读,所以干脆改动一下.
host2上/etc/rc5.d/S10network脚本里添加如下内容:
ifconfig eth0:100 177.177.100.103 netmask 255.255.255.0 up
route add -net 177.177.177.0 netmask 255.255.255.0 gw 192.219.19.52 dev eth0-------------添加177.177.177.0网段到192.219.19.0网段的路由.
⑥host1和host2上进行启动顺序的配置,确保host1上iscsi在piobd和网络启动之后启动,这个可以修改/etc/rc5.d/Sxx中xx的大小来实现.
5.主机及虚拟机上iscsi initiator的安装和配置,
a.安装iscsi-initiator,查看iscsi-initiator name:/etc/iscsi/initiator-name
b.在netapp虚拟机上注册initiator-group,lun→iscsi enable
c.在linux主机上进行iscsi设备的配置:
①[root@host1 client]# more /etc/iscsi/initiatorname.iscsi
InitiatorName=iqn.1994-05.com.redhat:10e9c034314c
②# service iscsid start
Turning off network shutdown. Starting iSCSI daemon: [ OK ]
# chkconfig iscsid on
③# iscsiadm -m discovery -t sendtargets -p 177.177.177.200
177.177.177.200:3260,1000 iqn.1992-08.com.netapp:sn.99909261
177.177.177.201:3260,1001 iqn.1992-08.com.netapp:sn.99909261
[root@d2850l12 ~]# iscsiadm -m node -T iqn.1992-08.com.netapp:sn.99909261 -p 177.177.177.200 -l
[root@d2850l12 ~]# iscsiadm -m node -T iqn.1992-08.com.netapp:sn.99909261 -p 177.177.177.201 -l
7.crs的安装,选择使用oracle 11g,开始使用了oracle 10g,结果10g需用使用raw,每次做ocr的格式化时候都报错,后来干脆使用oracle 11g直接用块设备.
a.本来使用device mapper,但是开始我没有计划好把netapp的模拟器安装到了host2上,由于这个机器是虚拟机,结果在host2上到link的时候总是比较长时间这个机器没有响应,最后host1会认为iscsi1连接的设备无效,vote diska的失败导致这个节点panic.所以以后的安装是在host1上安装netapp的模拟器,同时有时候device mapper更新dm-xx时不是很及时,出现设备文件找不到的情况,后来ocr及asm都使用/dev/disk/by-id里面的设置,而且有个好处是及时有磁盘的添加删除这里面的名字都不会变动.
b.runInstaller,安装的开始阶段总报libxp.so.6找不到的错,费了很多功夫,后来发现是oui使用的java是32bit,当时还考虑过指定java_home之类的方式让oui使用64bit的java,但是我没有找到办法,最后发现办法很简单,安装个32bit的libxp就行了.
c.因为host1上使用br0,host2使用eth0来做public网卡,vip网卡我让它们使用br0和eth0的别名来实现,crs配置完成后发现两个上面都使用br0设备,但host2上根本就没有这个设备,这个可以使用srvctl来修改:srvctl modify nodeapps -n host2 -A ipaddress/netmask/eth0
d.因为启用了11g的Auto Memory Management(?),对我的/dev/shm总是有大小的要求,有几次instance起不来就因为这个东西太小,所有不得以的时候也得手动去修改其大小:mount tmpfs /dev/shm -t tmpfs -o size=1g