如何在CentOS 6.4上安装并使用OpenVZ?

2013-04-07 15:14 核子可乐译 51CTO.com 字号: T | T

OpenVZ是Virtuozzo的开源分支,在OpenVZ的帮助下,大家可以在同一套硬件上获得多套虚拟私有服务器(简称VPS),本文中,将向大家介绍如何为OpenVZ创建一套CentOS 6.4服务器。

AD:WOT2014:用户标签系统与用户数据化运营培训专场

【51CTO精选译文】在本篇指导文章中,我将向大家介绍如何为OpenVZ创建一套CentOS 6.4服务器。在OpenVZ的帮助下,大家可以在同一套硬件上获得多套虚拟私有服务器(简称VPS),这跟Xen以及Linux Vserver项目颇为相似。OpenVZ是Virtuozzo的开源分支,作为家族长辈,Virtuozzo以商业虚拟化方案的姿态出现在很多提供虚拟服务器业务的供应商处。OpenVZ内核补丁以GPL许可为基础,而用户层工具则基于QPL许可。

由于采取实用性指南的定位,这篇文章不会包含任何理论背景知识。网络上背景知识方面的资源已经非常丰富,这里我们就不再赘述。这份文档不向大家提供任何效果保证,仅仅作为参考性材料存在。以下流程是否实际生效需视具体情况而定。 

安装OpenVZ

要完成OpenVZ的安装工作,我们需要先把OpenVZ库添加到yum当中:

cd /etc/yum.repos.d
wget http://download.openvz.org/openvz.repo
rpm --import http://download.openvz.org/RPM-GPG-Key-OpenVZ

现在打开openvz.repo文件:

vi openvz.repo

接下来禁用[openvz-kernel-rhel5]库(enabled=0)并启用[openvz-kernel-rhel6]库作为替代(enabled=1):

[...]
[openvz-kernel-rhel6]
name=OpenVZ RHEL6-based kernel
#baseurl=http://download.openvz.org/kernel/branches/rhel6-2.6.32/current/
mirrorlist=http://download.openvz.org/kernel/mirrors-rhel6-2.6.32
enabled=1
gpgcheck=1
gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
[openvz-kernel-rhel5]
name=OpenVZ RHEL5-based kernel
#baseurl=http://download.openvz.org/kernel/branches/rhel5-2.6.18/current/
mirrorlist=http://download.openvz.org/kernel/mirrors-rhel5-2.6.18
enabled=0
gpgcheck=1
gpgkey=http://download.openvz.org/RPM-GPG-Key-OpenVZ
[...]

这套库中包含多种OpenVZ内核(欲了解不同内核的具体情况,请访问http://wiki.openvz.org/Kernel_flavors进行查看)。以下命令:

yum search vzkernel

将在屏幕上列出所有可用内核:

[root@server1 yum.repos.d]# yum search vzkernel
[...]
vzkernel.i686 : The Linux kernel
vzkernel.x86_64 : The Linux kernel
vzkernel-devel.i686 : Development package for building kernel modules to match the kernel
vzkernel-devel.x86_64 : Development package for building kernel modules to match the kernel
vzkernel-firmware.noarch : Firmware files used by the Linux kernel
vzkernel-headers.i686 : Header files for the Linux kernel for use by glibc
vzkernel-headers.x86_64 : Header files for the Linux kernel for use by glibc
[...]
[root@server1 yum.repos.d]#

选择其中之一,并按如下命令进行安装:

yum install vzkernel

这一操作应该也会自动更新GRUB引导程序。无论如何,我们现在要打开/boot/grub/menu.lst;现在首个内核中应该已经包含有新的OpenVZ内核了。务必确保default值为0,这样首个内核(也就是OpenVZ内核)才会被自动引导并替换掉默认的CentOS内核。

vi /boot/grub/menu.lst
# grub.conf generated by anaconda
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
# all kernel and initrd paths are relative to /boot/, eg
# root (hd0,0)
# kernel /vmlinuz-version ro root=/dev/mapper/vg_server1-lv_root
# initrd /initrd-[generic-]version.img
#boot=/dev/sda
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title OpenVZ (2.6.32-042stab057.1)root (hd0,0)kernel /vmlinuz-2.6.32-042stab057.1 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/lv_swap rd_NO_DM rhgb quietinitrd /initramfs-2.6.32-042stab057.1.img
title CentOS (2.6.32-279.el6.x86_64)root (hd0,0)kernel /vmlinuz-2.6.32-279.el6.x86_64 ro root=/dev/mapper/vg_server1-lv_root rd_LVM_LV=vg_server1/lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=de rd_LVM_LV=vg_server1/lv_swap rd_NO_DM rhgb quietinitrd /initramfs-2.6.32-279.el6.x86_64.img

现在我们需要安装几款OpenVZ用户工具:

yum install vzctl vzquota

打开/etc/sysctl.conf并确保文件中包含以下设定:

vi /etc/sysctl.conf
[...]
net.ipv4.ip_forward = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.rp_filter = 1
kernel.sysrq = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.default.forwarding=1
[...]

如果大家需要对/etc/sysctl.conf进行修改,请在上述命令后添加以下内容:

sysctl -p

如果大家的虚拟机IP地址来自不同子网而非直接采用主机系统的IP地址,那么接下来的步骤非常关键。如果忽略这一步,网络将无法在虚拟机上正常工作。

打开/etc/vz/vz.conf 并将NEIGHBOUR_DEVS 设置为 all:

vi /etc/vz/vz.conf
[...]
NEIGHBOUR_DEVS=all
[...]

如果大家想让OpenVZ正常工作,那么SELinux必须被禁用。打开/etc/sysconfig/selinux 并将SELINUX 的值设为disabled:

vi /etc/sysconfig/selinux
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=disabled
# SELINUXTYPE= can take one of these two values:
# targeted - Targeted processes are protected,
# mls - Multi Level Security protection.
SELINUXTYPE=targeted

最后,重新启动系统:

reboot

如果大家的系统顺利完成了重启,那么恭喜--安装工作成功结束!

运行:

uname -r

这时我们的新OpenVZ内核应该显示以下内容:

[root@server1 ~]# uname -r
2.6.32-042stab057.1
[root@server1 ~]#

在利用OpenVZ创建虚拟机之前,我们需要在/vz/template/cache目录下为所要用到的发行版添加一套模板,这套模板将负责虚拟机的生成工作。大家可以在以下地址中找到预创建模板清单:http://wiki.openvz.org/Download/template/precreated)。

我打算在自己的虚拟机中使用CentOS 6,所以我需要下载CentOS 6模板:

cd /vz/template/cache
wget http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz

现在我要向大家展示使用OpenVZ所涉及的基本命令。

要通过CentOS 6模板建立一套VPS,需要运行:

vzctl create 101 --ostemplate centos-6-x86_64 --config basic

这里的101必须是单独ID--每套虚拟机都需要拥有专属的独立ID。大家可以利用虚拟机IP地址的最后三位数字来为其命名。举例来说,如果虚拟机IP地址为192.168.0.101,那么其ID为101即可。

如果大家希望在系统启动时自动运行虚拟机,则执行以下命令:

vzctl set 101 --onboot yes --save

要为虚拟机设定主机名称与IP地址,则运行以下命令:

vzctl set 101 --hostname test.example.com --save
vzctl set 101 --ipadd 192.168.0.101 --save

接下来我们将套接口数量设置为120,并为虚拟机指派数个域名服务器:

vzctl set 101 --numothersock 120 --save
vzctl set 101 --nameserver 8.8.8.8 --nameserver 8.8.4.4 --nameserver 145.253.2.75 --save

(请注意,这里我们也可以使用vzctl set命令或者直接对/etc/vz/conf目录下的虚拟机配置文件进行编辑。如果虚拟机ID为 101, 那么配置文件的路径应为/etc/vz/conf/101.conf。)

运行以下命令来启动虚拟机:

vzctl start 101

执行以下命令为虚拟机设定root密码:

vzctl exec 101 passwd

大家现在已经可以通过SSH(例如PuTTY)或者手动输入以下命令的方式与虚拟机连通:

vzctl enter 101

是退出虚拟机控制台,可直接输入:

exit

停止虚拟机运行,运行:

vzctl stop 101

重启虚拟机则运行:

vzctl restart 101

如果需要从磁盘中删除虚拟机(前提是我们已经停止了该虚拟机的运行),执行以下命令:

vzctl destroy 101

要列出当前虚拟机清单及其运行状态,需运行:

vzlist -a
[root@server1 cache]# vzlist -aCTID      NPROC STATUS    IP_ADDR         HOSTNAME101         14 running   192.168.0.101   test.example.com
[root@server1 cache]#

要查看被指派给对应虚拟机的资源,需运行:

vzctl exec 101 cat /proc/user_beancounters
[root@server1 cache]# vzctl exec 101 cat /proc/user_beancounters
Version: 2.5uid  resource           held    maxheld    barrier      limit    failcnt101:  kmemsize        1508202    1661695   11055923   11377049          0lockedpages           0          0        256        256          0privvmpages        5430       7102      65536      69632          0shmpages            381        381      21504      21504          0dummy                 0          0          0          0          0numproc              19         21        240        240          0physpages          2489       2775          0 2147483647          0vmguarpages           0          0      33792 2147483647          0oomguarpages       2489       2775      26112 2147483647          0numtcpsock            5          5        360        360          0numflock              3          4        188        206          0numpty                0          1         16         16          0numsiginfo            0          2        256        256          0tcpsndbuf         44720          0    1720320    2703360          0tcprcvbuf         81920          0    1720320    2703360          0othersockbuf      13144      14356    1126080    2097152          0dgramrcvbuf           0       8380     262144     262144          0numothersock         11         13        120        120          0dcachesize            0          0    3409920    3624960          0numfile             503        531       9312       9312          0dummy                 0          0          0          0          0dummy                 0          0          0          0          0dummy                 0          0          0          0          0numiptent            10         10        128        128          0
[root@server1 cache]#

failcnt这一列的信息非常重要,正常来说所有数值都应该为0;如果出现非0数字,则代表当前虚拟机所拥有的资源不足、我们需要为其分配更多资源。打开/etc/vz/conf目录下的虚拟机配置文件,提高对应资源数量,最后重新启动虚拟机。

如果大家还需要进行其它操作,可以运行下列命令以查看vzctl的所有操作指令:

man vzctl
yuanwendizhi:http://os.51cto.com/art/201304/387720.htm

如何在CentOS 6.4上安装并使用OpenVZ相关推荐

  1. 如何在CentOS 5/6上安装EPEL源

    如何在CentOS 5/6上安装EPEL源 2013-12-04 14:45 译者:NearTan Linux中国 字号:T | T 我们可以很容易地通过yum命令从EPEL源上获取上万个在CentO ...

  2. 如何在CentOS 5.5上安装Kippo蜜罐

    Kippo是一个可交互的SSH蜜罐,旨在记录暴力攻击行为,最重要的是可以记录攻击者的shell交互行为,如果你需要了解有关Kippo更多信息,请访问它的官方网站http://code.google.c ...

  3. 如何在 CentOS Stream 8上安装 LibreNMS

    LibreNMS是一个基于PHP,MySQL和SNMP的开源自动发现网络监控工具. LibreNMS包括对各种网络硬件和操作系统的支持,包括瞻博网络,思科,Linux,Foundry,FreeBSD, ...

  4. fedora mysql gui,在RHEL、CentOS及Fedora上安装Drupal 8——开源内容管理系统

    如何在RHEL.CentOS及Fedora上安装Drupal 8 Drupal 是一个开源,灵活,高度可拓展和安全的内容管理系统Content Management System(CMS),使用户轻松 ...

  5. 如何在Digital Ocean VPS上安装cpanel / whm

    by Michael Umanah 迈克尔·乌曼纳(Michael Umanah) 如何在Digital Ocean VPS上安装cpanel / whm (How to install cpanel ...

  6. 如何在Ubuntu 18.04上安装和配置NFS服务器

    网络文件系统(NFS)是一种分布式文件系统协议,使您可以通过网络共享远程目录.使用NFS,您可以在系统上挂载远程目录,并像对待本地文件一样使用远程计算机上的文件. NFS协议默认情况下未加密,并且与S ...

  7. exfat安装linux系统,在CentOS 7系统上安装exFAT驱动器/启用exFAT支持的方法

    本文介绍在CentOS 7操作系统上安装exFAT驱动器的方法.exFAT(扩展文件分配表)是一种专有的Microsoft文件系统,针对闪存设备(如SD卡和USB闪存驱动器)进行了优化,它旨在取代旧的 ...

  8. 如何在 CentOS 8 Stream 上安裝 PHP 8.1

    PHP 8.1是 PHP 语言的重要更新,于 2021 年 11 月 25 日"正式"发布.随着我们从现有的 PHP 8.0 版本前进,这是一个标准升级.新的 PHP 8.1 带来 ...

  9. Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库

    Linux有问必答:如何在CentOS或者RHEL上启用Nux Dextop仓库 问题: 我想要安装一个在Nux Dextop仓库的RPM包.我该如何在CentOS或者RHEL上设置Nux Dexto ...

最新文章

  1. 基于Cobbler实现多版本系统批量部署
  2. 虚拟键码和扫描码的区别
  3. 033_使用ArrayDeque模拟队列结构
  4. Python 异常处理 Python 基础教程 try..except
  5. HighNewTech:支付宝全球首发5G手机,四大逆天功能(防骗三折叠气味识别自由飞)!
  6. django 数据库中中文转化为汉语拼音
  7. Android之如何解决刚下载的Android studio(包括上面的菜单栏)乱码问题
  8. 5 年 Python 的我,总结了这 90 条写 Python 程序的建议
  9. docker entrypoint入口文件详解
  10. jdk版本低于1.7 waterdrop 打不开解决
  11. Oracle 批量修改字段长度
  12. android 小米相机权限,小米如何设置访问相机权限设置
  13. 电容器充放电的原理是什么?
  14. cocos creator-Assembler2D
  15. java 裁剪图片_java实现的图片裁剪功能示例
  16. [ZT]完全用Linux工作,摈弃Windows
  17. 零基础转行学编程技术难吗?
  18. three.js 源码注释(六十一)objects/LOD.js
  19. 瑞吉外卖第五天(套餐的增删改和手机端登录功能的实现)
  20. RDMA技术详解——DMA和RDMA概念

热门文章

  1. 【mia】服务器构建和启动及srssdk推流拉流测试
  2. Linux 配置 solr-4.10.3和tomcat-8.0.18
  3. 微信小程序 开发 微信开发者工具 快捷键
  4. 今天来聊聊嵌入式的应用领域,连电商都波及
  5. 美格信理解THD与THD+N
  6. 外企公司常用英文缩写
  7. 如何走好知识变现第一步
  8. StarFS方案 | 并行存储加速影视动漫渲染
  9. 反向传播 BP 理解
  10. Word处理控件Aspose.Words功能演示:使用Java拆分MS Word文档