Chinaunix首页 | 论坛 | 博客
  • 博客访问: 581972
  • 博文数量: 248
  • 博客积分: 52
  • 博客等级: 民兵
  • 技术积分: 1028
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-23 12:05
文章分类

全部博文(248)

文章存档

2016年(7)

2013年(241)

分类: LINUX

2013-04-09 04:44:04

    今天用了将近一天的时间,做好了asianux2.0SP2基本系统的openvz模板。模板在asianux2.0Sp2最小安装基础上,添加了gcc、http、proftp、bind、mysql、php、prel、heartbear、ipvs,并测试在安装RedFlag HA Cluster 5.0 SE版本没有问题(模板内不包含HA)。
    直接贴出我的笔记:
    openvz的模板制作我以前在asianux2.0sp1最小安装版基础上,添加了gcc、http、ftp、named,今天开始做asianux2.0sp2加gcc、http、ftp、named,并且添加heartbeat和ipvs和RedFlag HA。
    做模板还是根据关于slackware的制作方法。首先是安装一个asianux2.0sp2。本来我想的是定制安装,后来发现有很多东西我不知道到底是否需要,比如server组,定制的时候,里面默认选择了一些服务,有些我知道是需要的,但是有些我真不知道干什么的(这里又暴露了我一个弱点:做linux这么久了,定制安装时候,一些软件包我竟然不知道做什么用的。),既然是做模板,那就应该尽量精简,可以满足基本使用就行,其他的可以再装上去。而且我看openvz默认给的一个虚拟系统大小是1G,不知道是否可以扩大?我选择最小安装,然后需要什么补充什么。
    安装完asianux2.0sp2最小安装之后,开始添加gcc、http、proftp、bind、mysql、php、perl、heartbeat、ipvs,安装HA没有问题,又卸了,把heartbeat服务、kudzu服务、transparent_proxy服务开机不启动(我当时没有设置kudzu开机不启动,结果最后用此模板做的系统不启动IP地址,后来ps-ef发现一直在kudzu呢,后面的服务都没有起来)。以后需要什么再装吧。把整个系统打包,这就是模板的原版,在此基础上修改。因为修改的内容包括一些系统文件,比如/etc/fstab等,所以必须先弄到别的地方解开,然后修改。我准备拷贝到191环境里面,解压到/vz/private/111目录,这个111目录名是随便起的,现在只是一个中间阶段,因为在此基础上修改之后,还需要打包,那才是真正的模板。
    也可以通过scp直接拷贝过去是一样的,注意scp拷贝的时候,遇到软连接会拷贝真实文件过去,无形中增加了模板大小,所以scp拷之前可以单独打包。考虑到做模板时,有很多目录都要清空,比如/boot、/proc、/tmp等等,所以我选择先将有用的目录打包bin、etc、lib、root、usr、var、sbin,然后scp到191机器上,其他的目录因为都是空的,所以直接建立就行,启动/tmp需要有t权限,/dev的处理我也是采用打包,但是某些软链接连接到/proc下面的,一律都删除了。


tar cvfz dev.tgz --exclude dev/core --exclude dev/fd --exclude dev/stderr --exclude dev/stdin --exclude dev/stdout dev/


    对/dev的处理,我以为这样就可以了,结果基于这个dev是打包过来的模板建立的系统,启动正常,但是进入(vzctl enter veid)的时候提示cannot open pty。反正肯定是dev出了问题,但是怎么处理我不知道。我采用了最笨的方法,将一个基于asianux2.0sp1最小安装的模板(openvz网站 有下)里面的dev下所有内容拷到我做的asianux2.0sp2模板里面,这才算可以进入。
    接下来创建boot、home、initrd、media、misc、opt、proc、selinux、srv、sys、tmp,并且创建mnt软连接,给tmp加t权限。
    然后做如下一系列操作


rm -rf /vz/private/111/var/mail/*
rm -rf /vz/private/111/lib/modules
rm -rf /vz/private/111/etc/ssh/*key*
rm -rf /vz/private/111/etc/mtab
ln -s /proc/mounts /vz/private/111/etc/mtab
echo -n > /vz/private/111/etc/fstab
rm -rf /usr/share/doc


    修改/vz/private/111/etc/modprobe.conf为如下

alias eth0 pcnet32
alias scsi_hostadapter mptbase
alias scsi_hostadapter1 mptscsih


    修改/vz/private/111/etc/sysconfig/i18n。默认里面是中文,的需要修改成英文,修改成如下内容:


LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en:zh_CN.GB18030:zh_CN:zh:zh_TW.big5:zh_TW:zh:ja_JP.UTF-8:ja_JP:ja:ko_KR.eucKR:ko_KR:ko"
SYSFONT="latarcyrheb-sun16"


    这样该处理的就全部处理完了,生成asianux2.0sp2模板吧:

cd /vz/private/111
tar cvfz /vz/template/cache/asianux-2.0-SP2-ok-x86.tar.gz *


    生成的模板名称是asianux-2.0-SP2-ok-x86.tar.gz,我只不过将模板放到了该放的位置(因为191机器就是我的openvz服务器),这样就可以直接使用了。
    如果想给模板增添新功能怎么办呢?比如基于asianux-2.0-SP2-ok-x86.tar.gz这个模板创建了一个虚拟系统,veid是999, 那么/vz/private/999就是这个虚拟系统里面所有内容。如果我们登录到999这个系统里面安装了一些软件或者做了一些修改,可以在修改完之 后,将999停止,然后直接打包/vz/private/999/里面的内容就可以了。打包可以参考上面生成asianux2.0SP2模板的方法。
    另外重建虚拟系统,启动虚拟系统,停止虚拟系统的脚本名称和内容都修改了,分别为vecreate.sh、vestart.sh、vestop.sh,内容分别如下:



# cat vecreate.sh
#!/bin/bash
#2007-07-17 by fan3838
if [ $# -lt 4 ];then
        echo "Usage: $0 "
        echo "Eg: $0 192 172.16.81.192 172.16.80.11 lvs192"
        echo "The ipaddress must be not exist in the local network"
        exit 1
fi

#create a VE with asianux-2.0-SP2-ok-x86 template
echo "-----------------------------"
vzctl create $1 --ostemplate asianux-2.0-SP2-ok-x86
if [ $? = 0 ]
then
        echo "-----------------------------"
        echo "-- create ok --"
        echo "-----------------------------"
else
        echo "-----------------------------"
        echo "-- create failed --"
        echo "-- why ? --"
        echo "-- look the infomations --"
        echo "-----------------------------"
        exit 2
fi
#set the ipaddr nameserver and hostname
vzctl set $1 --ipadd $2 --nameserver $3 --hostname $4 --onboot yes --save






# cat vestart.sh
#!/bin/bash
#2007-07-17 by fan3838
if [ $# -lt 1 ];then
        echo "Usage: $0 "
        echo "eg: $0 192"
echo "-----------------------------------------------------------"
        vzlist -a
echo "-----------------------------------------------------------"
        exit 1
fi

#start a VE
echo "-----------------------------"
vzctl start $1
if [ $? = 0 ]
then
        echo "-----------------------------"
        echo "-- start ok --"
        echo "-----------------------------"
else
        echo "-----------------------------"
        echo "-- start failed --"
        echo "-- why ? --"
        echo "-- look the infomations --"
        echo "-----------------------------"
        exit 2
fi




# cat vestop.sh
#!/bin/bash
#2007-07-17 by fan3838
if [ $# -lt 1 ];then
        echo "Usage: $0 "
        echo "eg: $0 192"
echo "-----------------------------------------------------------"
        vzlist -a
echo "-----------------------------------------------------------"
        exit 1
fi

#stop a VE
echo "-----------------------------"
vzctl stop $1
if [ $? = 0 ]
then
        echo "-----------------------------"
        echo "-- stop ok --"
        echo "-----------------------------"
else
        echo "-----------------------------"
        echo "-- stop failed --"
        echo "-- why ? --"
        echo "-- look the infomations --"
        echo "-----------------------------"
        exit 2
fi



阅读(511) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~