Feb 4

[原]把物理系统搬入OpenVZ中 晴

linuxing , 10:41 , 网络服务 » 虚拟机 , 评论(1) , 引用(0) , 阅读(19475) , Via 本站原创 | |
    OpenVZ真的非常好用,配合上GUI的图形管理很方便,效率也相当好。使用时间长了,一直有个问题困扰着我,就是如何把一些部署在物理服务器上的系统(简称物理系统)搬入OpenVZ中呢?
    OpenVZ默认只提供了几个简单的centos、fedora的模板,虽然官方网站上也提供了大量precreated(预创建)的各种系统模板供使用,但毕竟这些template(模板)都是别人创建的。以前,我就曾写过:[原]创建VPS OS模板的文章,告诉大家如何创建自己的模板。但这还不能满足我的要求,试想想,如果物理系统上已经部署了大量的应用,重新在VPS里面部署、迁移数据,这工作量将是非常庞大的。OpenVZ本身似乎没有提供这样的迁移工具。
    经过查询相关资料,我终于实现了从物理系统到VPS的迁移工作。以下步骤,适用于部署在实际物理服务器上,或VMware、VirtualBox、Xen等虚拟环境中,而物理系统为红旗DC Server 5.0/Asianux 3.0,Centos/RedHat 4.0/5.0,Fedora 7.0/8.0/9.0等操作系统的环境。其余发行版也可参考类似的步骤进行,但因各发行版对配置文件的定义有所差异,需要根据各自的情况进行改动。Debian系列的系统,可以参考底下附录部分的文章处理。

一、准备工作
系统环境:
引用
server1:红旗 DC Server 5.0 192.168.228.99(被迁移系统)
server2:红旗 DC Server 5.0 + OpenVZ 2.6.9-023stab048.4  192.168.228.90(虚拟机HW)

这里,我希望把server1上的物理系统迁移到server2的其中一个VPS中。迁移前,确认:
引用
1、server1上的物理系统可正常运行;
2、server2提供的VPS环境可以支持原server1的操作系统运行,例如核心为2.6.9以上;
3、server1与server2的操作系统应为同一平台,即都为x86或x86_64;
4、server2上已经搭建好OpenVZ环境,最好也把Vtonf等GUI管理配置好;
5、确保server2上有足够的空间供vz使用,建议把/vz作为一个单独分区划分,方便控制磁盘配额等资源。

二、迁移数据
1、创建VPS环境
可以用vzctl create借助模板创建一个VPS环境,然后清空/vz/private/$veid目录。也可以手动创建:

# mkdir /vz/root/101 /vz/private/101
# cat /etc/vz/conf/ve-vtonf.512MB.conf-sample > /etc/vz/conf/101.conf

2、准备拷贝环境
迁移数据的方法有好多,tar、dd、rsync等都可以。我这里使用rsync,所以需要做到:
引用
1、server1和server2两边都已经安装rsync软件包;
2、server1上需提供网络和sshd远程访问;
3、若server1部署了比较多的应用,建议暂时全部停掉;我的做法是,把server1切换到init 1模式,然后启动网络和sshd服务;

3、迁移数据
从server1拷贝数据到server2上:

# rsync -arvpz --numeric-ids --exclude lost+found --exclude /dev --exclude /mnt --exclude /tmp --exclude /proc --exclude /sys --exclude /usr/src --exclude /boot -e "ssh -l root@192.168.228.99" root@192.168.228.99:/ /vz/private/101/

※ 注意,原物理系统上有些目录对于VPS来说是没用的,甚至是有害的,拷贝时请把他们排除
4、设置VPS参数
前面若使用OpenVZ提供的sample配置文件,则还需要对该VPS设置,在server2上执行:

# vzctl set 101 --ostemplate centos-4-i386-default --save
# vzctl set 101 --onboot yes --save
# vzctl set 101 --hostname 101.linuxfly.cn --save
# vzctl set 101 --ipadd 192.168.228.101 --save
# vzctl set 101 --numothersock 120 --save
# vzctl set 101 --nameserver 202.96.134.133 --nameserver 202.96.128.86 --save
# vzctl set 101 --diskspace 10000000:11000000 --save
# vzcpucheck
# vzctl set 101 --cpuunits 40000 --save

这部分的工作,实际是根据今后该VPS运行的情况而设置的,可以参考原来物理系统的配置进行。注意,若修改了网络等参数的话,今后启动VPS后,记得也要修改应用上的设定咯。

三、调整VPS环境
物理系统上的启动与VPS中启动有不少地方是有差异,或冲突的。这也是最重要改动的地方:
1、修改etc/inittab文件

# sed -i -e '/getty/d' /vz/private/101/etc/inittab

2、修改etc/mtab文件

# rm -f /vz/private/101/etc/mtab
# ln -s /proc/mounts /vz/private/101/etc/mtab

3、修改etc/fstab文件
仅保留挂载/dev/pts的哪行:

# cp /vz/private/101/etc/fstab /vz/private/101/etc/fstab.old
# grep devpts /vz/private/101/etc/fstab.old > /vz/private/101/etc/fstab
# rm -f /vz/private/101/etc/fstab.old

4、修改etc/rc.d/rc.sysinit文件
把运行/sbin/start_udev的一行删除或注释掉:

# sed -i -e '/udev/d' /vz/private/101/etc/rc.d/rc.sysinit

5、创建device设备符号

# cd 101
# mkdir dev
# mknod -m 666 dev/ptmx c 5 2
# mkdir dev/pts
# /sbin/MAKEDEV -d /vz/private/101/dev ttyp ptyp
# chmod 660 /vz/private/101/dev/ttyp*
# chmod 660 /vz/private/101/dev/ptyp*
# mknod -m 666 dev/null c 1 3
# mknod -m 666 dev/random c 1 8
# mknod -m 444 dev/urandom c 1 9

6、删除网卡配置文件
因VPS使用虚拟网卡,不再需要启动物理网卡了。你可以修改配置文件中的ONBOOT为no,或直接删掉:

# rm -f /vz/private/101/etc/sysconfig/network-scripts/ifcfg-eth0
# cat /dev/null > /vz/private/101/etc/sysconfig/network

7、创建缺省目录

# mkdir /vz/private/101/proc
# mkdir /vz/private/101/tmp
# chmod 1777 /vz/private/101/tmp

四、启动VPS
启动:
引用
# vzctl start 101
Starting container ...
Container is mounted
Adding IP address(es): 192.168.228.101
Setting CPU limit: 0
Setting CPU units: 1000
Configure meminfo: 32768
Set hostname: 101.linuxfly.cn
File resolv.conf was modified
Setting quota ugidlimit: 0
Container start in progress...
# vzctl enter 101
entered into CT 101

至此,迁移工作全部完成。
您可以进入VPS中看看应用运行是否正常。由于VPS与物理系统环境仍存在一点差异,可能会导致应用启动失败,这需要逐一分析日志解决。最常见的是,提供给VPS的资源不足问题。因物理系统可完全独立获得全部系统资源,而在VPS中,受HW控制资源的分配,这可通过在VPS中:

# cat /proc/user_beancounters

查看failcnt列的信息来判断。然后根据实际情况增加资源即可。

五、参考资料
How To Convert Physical Systems And Xen VMs Into OpenVZ Containers (Debian Etch)
Creating a CentOS 5.0 Template
Tags: ,
openvz
2011/08/28 11:24
你好,我最近在研究openvz,碰到一些问题,希望您能帮忙看一下:以前使用的是32位的centos ,openvz能很好的运作,后台把内存增加到了8G,所以把centos换成了64位的,安装过openvz后(使用的是ovkernel.xx.x86_64.rpm),问题出来了:1.创建vps出错:###############################################tar: ./sbin/ifenslave: Cannot open: No such file or directorytar: ./sbin/pam_tally2: Cannot open: No such file or directorytar: ./sbin/dmraid: Cannot open: No such file or directorytar: ./sbin/shutdown: Cannot open: No such file or directorytar: ./sbin/mkfs: Cannot open: No such file or directorytar: ./sbin/e2label: Cannot hard link to `./sbin/findfs': No such file or directorytar: ./sbin/rmmod: Cannot open: No such file or directorytar: ./sbin/mpath_prio_ontap.static: Cannot open: No such file or directorytar: ./media: Cannot mkdir: Disk quota exceededtar: ./selinux: Cannot mkdir: Disk quota exceededtar: ./mnt: Cannot mkdir: Disk quota exceededtar: ./tmp: Cannot mkdir: Disk quota exceededtar: ./boot: Cannot mkdir: Disk quota exceededtar: Error exit delayed from previous errorsvps-create ERROR: Error in tar --numeric-owner -Sp -z -xf /vz/template/cache/centos-5-x86.tar.gzCreation of container private area failed###################################################2.打开以前创建的VPS  也报错:###################################################Starting container ...vzquota : (warning) block_hard_limit [10695575] < block_current_usage [4194273]vzquota : (error) path to mount point can't be read from config file,use -p <mount_point> optionvzquota on failed [13]####################################################请问下这该怎么办?谢谢
linuxing 回复于 2011/09/02 16:39
是否你安装的配套工具不是64的?
分页: 1/1 第一页 1 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]