Total Pageviews

Monday, 14 November 2011

红帽下快速安装KVM

红帽已经主推KVM了,原因是KVM优异的性能,在此之前我也在Ubuntu上安装过KVM效果非常理想
CPU:i3
RAM:4G
OS:Ubuntu 10.10
同时运行了8台虚拟机,下面介绍红帽系统下,yum安装方法:

sudo yum install qemu-kvm libvirt virt-manager
然后是加载 KVM 内核模块:
AMD CPU:
sudo modprobe kvm-amd
Intel CPU:
sudo modprobe kvm-intel
紧接着驱动 libvirt 服务:
sudo service libvirtd start
最后就是打开 virt-manager 创建和启动 KVM 虚拟机即可。
-------------------------------------------

1.apt-get install ubuntu-virt-server
2.apt-get install virt-manager
3.vim /usr/bin/virt-manager
exec sudo python "/usr/share/virt-manager/virt-manager.py" "$@"
4.virt-manager
5./usr/bin/qemu-img create -f qcow redhat.img 20G
kvm的配置文件存放位置:
root@ubuntu:~# vim /etc/libvirt/qemu/redhat.xml

相关帖子:http://briteming.blogspot.com/2012/01/kvm.html
-------------------



在 CentOS 6.5 上安装 KVM


检查CPU是否支持硬件虚拟化

$ egrep '(vmx|svm)' --color=always /proc/cpuinfo

安装依赖

# yum install kvm libvirt qemu-kvm

启动libvirt守护进程

# /etc/init.d/libvirtd start

检查virsh是否能正常连接kvm

# virsh -c qemu:///system list
如果没有输出错误信息,则代表安装成功了

设置桥接

为了能使建立的虚拟机能从外部连接,需要配置一个网桥

先安装所需的包

# yum install brigde-utils tunctl

编辑配置文件

/etc/sysconfig/network-script目录下建立ifcfg-br0文件,输入以下内容
DEVICE="br0"
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE=Bridge
BOOTPROTO=none
IPADDR=192.168.0.100
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System br0"
注意,IPADDR, PREFIX, GATEWAY, DNS1, DNS2这几个值需要从物理网卡的配置(如eth0)中拷贝过来
修改物理网卡配置(例如/etc/sysconfig/network-script/ifcfg-eth0)如下
DEVICE="eth0"
#BOOTPROTO=none
NM_CONTROLLED="yes"
ONBOOT=yes
TYPE="Ethernet"
UUID="73cb0b12-1f42-49b0-ad69-731e888276ff"
HWADDR=00:1E:90:F3:F0:02
#IPADDR=192.168.0.100
#PREFIX=24
#GATEWAY=192.168.0.1
#DNS1=8.8.8.8
#DNS2=8.8.4.4
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
BRIDGE=br0
因为IPADDR, PREFIX, GATEWAY, DNS1, DNS2这几个值已经拷贝到br0的配置里了,所以需要在这注释掉
然后重启network
# /etc/init.d/network restart

修复桥接问题

在上一步中,重启network的时候总是报错
eth0: Connection activation failed: Master connection not found or invalid
br0:Conncetion activation failed: Failed to determine connection’s virtual interface name
经过Google之后确认,是因为Centos中的NetworkManager捣乱所致,所以需要关闭它,使用手动的network来配置网络
# chkconfig NetworkManager off
# chkconfig –levels 35 network on
# /etc/init.d/NetworkManager stop
# /etc/init.d/network restart
为了避免性能以及安全性问题,需要关闭netfilter机制
# cat >> /etc/sysctl.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
EOF
# sysctl -p /etc/sysctl.conf
或者配置iptables允许网桥上的转发
# iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT
# service iptables save
# service iptables restart
最后重启libvirt守护进程
# service libvirtd reload

安装虚拟机

接下来需要安装以及配置一个虚拟机

首先,需要安装virt-install

# yum install python-virtinst
然后使用预先配置好的磁盘image或者从iso镜像中安装一个系统

从预先配置好的磁盘image中快速启动一个虚拟机

这里下载预先配置好的磁盘image,保存到/var/lib/libvirt/images下,比如centos6.3-gold-master.img
调整磁盘image的大小
# qemu-img create -f qcow2 centos6.3-gold-resized-20G.img 20G
# virt-resize \
--expand /dev/vda2 \
--LV-expand /dev/vg_main/lv_root centos6.3-gold-master.img centos6.3-gold-resized-20G.img
安装虚拟机
# virt-install \
--name centos6.3-gold-resized-20G \
--vcpus=2 \
--ram=1024 \
--os-type=linux \
--os-variant=rhel6 \
--disk path=/var/lib/libvirt/images/centos6.3-gold-resized-20G.img \
--import
修正启动问题
  1. 编辑域XML

    virsh edit centos6.3-gold-resized-20G

    在打开的xml文档中将挂接的磁盘image里的 替换成 
  2. 或者在使用virt-install时,指定好bus类型

    virt-install —connect qemu:///system —ram 1024 -n rhel_64 -r 2048 —os-type=linux —os-variant=rhel5 —disk path=/root/RHEL-Server-5.8-64-virtio.qcow2,device=disk,bus=virtio,format=qcow2 —vcpus=2 —vnc —noautoconsole —import

从ISO镜像中安装一个系统

先下载一个ISO镜像,比如CentOS-6.4-x86_64-netinstall.iso
创建一个磁盘image
# qemu-img create -f qcow2 /tmp/centos-6.4.qcow2 10G
安装虚拟机
# virt-install --virt-type kvm --name centos-6.4 --ram 1024 \
--disk /tmp/centos-6.4.qcow2,format=qcow2 \
--network network=default \
--graphics vnc,listen=0.0.0.0 --noautoconsole \
--os-type=linux --os-variant=rhel6 \
--extra-args="console=tty0 console=ttyS0,115200n8 serial" \
--location=/data/isos/CentOS-6.4-x86_64-netinstall.iso
通过控制台或者vnc进行普通安装过程
安装完成后,移除CDROM
# virsh attach-disk --type cdrom --mode readonly centos-6.4 "" hdc
# virsh destroy centos-6.4
# virsh start centos-6.4
为了能通过外部关闭虚拟机,需要安装acpi服务
# yum install acpid
# chkconfig acpid on

参考

http://www.howtoforge.com/virtualization-with-kvm-on-a-centos-6.4-server
https://catn.com/projects/centos-images/
http://docs.openstack.org/image-guide/content/centos-image.html
http://docs.openstack.org/image-guide/content/virt-install.html
https://help.ubuntu.com/community/KVM/Managing
http://serverfault.com/questions/475015/guest-system-managed-by-libvirt-doesnt-start-after-successful-installation
http://wiki.libvirt.org/page/After_import_a_guest_from_an_existing_disk_image_using_virt-install,_the_guest_starting_stalls_with_%22No_boot_device%22
--------------

在CentOS 7中安装KVM VPS 

KVM即Kernal-based Virtual Machine, 是一种高效且成熟稳定的虚拟化技术, 支持所有的操作系统. 因此, 掌握服务器上搭建KVM平台是很有意义的. 通过虚拟机的建立以及IP分配, 虚拟机可以当做一台完全独立的服务器来使用, 即我们常用的VPS.
搭建虚拟机平台对宿主机系统的要求较高. KVM虚拟化要求宿主机的CPU支持Intel VT或AMD-V技术 (请执行cat /proc/cpuinfo查看), CPUBenchMark至少在1000以上, 建议5000或更多 (ATOM D525这种就不要来装虚拟机了). 系统内存要求至少为4G, 建议8G或更多. 硬盘要求20G以上. 操作系统必须为64位. 服务器至少分配2枚或以上的独立IP地址 (每个VPS一枚, 宿主机一枚). 本次教程, 我们以最新版本的CentOS 7为例, 介绍KVM平台的搭建.

1, 系统环境准备

(1) 设置服务器名(Hostname)
任何与网络相关的Linux操作都要求设置好服务器名. 请确保您已经正确设置服务器名: 当您在SSH中执行hostname -f命令时, 应看到servername.domainname.com; 当您执行hostname命令时, 应看到servername. 具体设置方法我已强调数十遍, 这里不再赘述. 若未设置好服务器名, 请不要继续.

(2) 软件更新
CentOS系统下执行yum -y update命令更新软件.

(3) 检查网络与IP信息
CentOS 7系统中执行ip addr命令查看网卡及IP地址信息. 查看一下绑定您的宿主机外网主IP地址的网卡名称, 记下它, 我这里是ens9. 查看一下是否有其他的虚拟网卡绑定了额外的外网IP地址, 若有, 请删除对应的虚拟网卡.
本次教程中, 我们假设给宿主机分配的IP地址段为标准网段100.100.100.200/29共8个IP, 则网络地址100.100.100.200, 网关100.100.100.201, 宿主机IP 100.100.100.202, VPS IP段100.100.100.203 ~ 100.100.100.206, 广播地址100.100.100.207, 子网掩码255.255.255.248.

2, 桌面环境的搭建

如果您仅使用一台服务器搭建KVM, 那我建议搭建桌面环境并搭建VNC服务器, 这样在管理KVM虚拟机和安装操作系统时较为方便. 我们以GNOME桌面环境为例介绍VNC服务器的搭建. GNOME桌面环境安装很简单, 执行下面这行命令即可:
1
yum groupinstall "GNOME Desktop"
然后安装VNC服务器. 执行:
1
yum install tigervnc-server
新建用户, 用来连接VNC, 并配置用户的连接文件. 执行:
1
2
useradd qingsu
cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
编辑文件: /etc/systemd/system/vncserver@:1.service
将文件中的<USER>替换为我们的用户名qingsu, 并取消行首的注释符.
配置防火墙:
1
2
firewall-cmd --permanent --zone=public --add-service vnc-server
firewall-cmd --reload
然后, 切换到用户qingsu, 启动VNC服务器:
su qingsu
vncserver
此时, 会提示输入VNC密码, 设置好后回车即可.
最后切换回root, 设置随开机启动:
1
2
3
su root
systemctl daemon-reload
systemctl enable vncserver@:1.service
这样, 我们就配置好VNC服务器了. 在本地电脑上使用VNC客户端连接100.100.100.202:5901即可访问服务器的GNOME桌面环境. 第一次使用VNC连接的时候会提示输入管理员密码.
此时请输入您的root用户密码. 然后会提示一系列配置信息, 直接NEXT就好.

3, KVM的安装

KVM安装很简单. 在SSH中执行下面这行命令即可.
1
yum install qemu-kvm qemu-img virt-manager libvirt libvirt-python libvirt-client virt-install virt-viewer

4, 在宿主机上新建VPS

首先, 使用VNC连接宿主机. 进入桌面后, 找到Virtual Machine Manager, 如下图.

 打开后, 点击图标Create a new virtual machine:
然后按步骤载入系统镜像.
 参见 http://archive.is/aEMtR
--------------------------------------------------
相关帖子:
http://briteming.blogspot.com/2012/01/kvm.html
http://briteming.blogspot.com/2016/03/kvm.html