kvm虚拟化,使用qemu-kvm创建和管理虚拟机(全网最全,最完善)
qemu-kvm参数选项详解:https://bbs.cnblackhat.com/thread-2808-1-1.html环境:
系统:centos6.7(下面操作,centos7同样也可以)
内核版本:2.6.32-573
IP地址:172.31.225.246
网关:172.31.225.1
要求:
1、创建一个名称为centos6的虚拟机
2、内存512M,2核cpu
3、指定一块磁盘设备
4、指定一块光驱设备
5、以第一块硬盘进行引导,第一次引导使用第一个光驱设备
6、指定vnc监听的ip和桌面号
7、磁盘和网络设备通过半虚拟化的方式模拟,性能更好
8、数据缓存通过回写的方式
9、网络模式
准备工作
0. 由于我的物理机本身就是vmware虚拟出来的虚拟机,所以需要设置它支持虚拟化,如下截图,勾选上即可
1. 加载kvm相关的模块,我这里是intel的,需要加载kvm和kvm-intel模块
modprobe kvm
modprobe kvm-intel
2. 查看是否已经加载这两个模块
lsmod | grep kvm
3. 安装kvm虚拟机相关的管理工具qemu-kvm
yum install qemu-kvm -y
4、安装好之后,默认的qemu-kvm是没有的,红帽把这个命令放到/usr/libexec/qemu-kvm,我们做下软链接
ln -sv /usr/libexec/qemu-kvm /usr/bin
5. 上传光驱设备,放到data目录下
以上是准备工作,这里我们先不去创建centos虚拟机系统,我们通过cirros镜像来给大家演示,cirros一般用来测试,方便简单
[*]下载cirros镜像,我这里使用的是0.3.6,下载地址:http://download.cirros-cloud.net/0.3.6/cirros-0.3.6-x86_64-disk.img
wget http://download.cirros-cloud.net/0.3.6/cirros-0.3.6-x86_64-disk.img
[*]安装之前,介绍一下网络模型,分为四种网络模型,分别如下:
[*]隔离模型
[*]路由模型
[*]NAT模型
[*]桥接模型
首先先介绍隔离模型(创建的虚拟机可以互相通信,但是无法与物理机器以及外网通信)
[*]创建桥接设备,是通过brctl命令创建的,如果没有这个命令,安装bridge-utils包,yum install bridge-utils -y
brctl addbr br0
[*]创建虚拟机的时候,我们把虚拟网卡关联到br0设备上,这里我们通过脚本/etc/qemu-ifup实现,脚本如下:
#!/bin/bash
#
bridge=br0
if [ -n "$1" ];then
ip link set $1 up
sleep 1
brctl addif $bridge $1
[ $? -eq 0 ] && exit 0 || exit 1
else
echo "Error: no interface specified."
exit 1
fi
[*]使用qemu-kvm创建虚拟机,不打开图形窗口,使用参数-nographic(这里的内存以及名称,我自己就自定义了,下面创建centos虚拟机时候,在按照要求来做)
qemu-kvm -m 128 -smp 2 -name test -drive file=cirros-0.3.6-x86_64-disk.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic,model=virtio,macaddr=52:54:00:12:34:57 -net tap,ifname=vif0.0,script=/etc/qemu-ifup
[*]创建的过程当中,初次进去cirros系统的时候,会很慢,具体原因,之前我总结过,以及解决方法也提供了
解决方法:https://bbs.cnblackhat.com/thread-2805-1-1.html
[*]这里我提供我自己修改过的cirros镜像,进去,速度很快,如有需要,自己下载
下载地址:
[*]进入系统之后,默认是没有地址的,我们给它配置地址,可以通过ifconfig临时添加ip,也可以修改配置文件,使其永久生效,这里我修改配置文件/etc/network/interfaces,默认是通过dhcp方式获取ip的,我这里没有安装dhcp,所以通过static的方式获取ip
vi /etc/network/interfaces
[*]保存并重启机器,获取ip,这次进去系统就特别的快
reboot
[*]输入ifconfig查看ip
[*]接下来我们复制一份cirros镜像出来,命名为cirros-0.3.6-x86_64-disk2.img,创建另外一个虚拟机,测试网络下的隔离模式
cp cirros-0.3.6-x86_64-disk.img cirros-0.3.6-x86_64-disk2.img
qemu-kvm -m 128 -smp 2 -name test2 -drive file=cirros-0.3.6-x86_64-disk2.img,if=virtio,media=disk,format=qcow2,cache=writeback -nographic -net nic,model=virtio,macaddr=52:54:00:12:34:58 -net tap,ifname=vif1.0,script=/etc/qemu-ifup
[*]修改ip地址,把192.168.2.2修改成192.168.2.1,最后重启机器
[*]测试网络下的隔离模型,两台虚拟机互ping,都是通的,但是ping物理机器不通,说明已经成功了
路由模型(虚拟机之间可以互相通信,同时也可以和物理机通信,但是不能和外网进行通信)
[*]在隔离模型基础之上,我们给桥接设备添加上ip地址,ifconfig临时设置ip地址;并把br0的ip地址作为虚拟机的网关即可,修改/etc/network/interfaces
[*]重启机器,并测试,下图可知,可以和物理机器通信了,但是不能和外网进行通信,这里
NAT模型(虚拟机可以互相通信,同时也可以和物理机器,以及外网都可以通信)
[*]在路由模型基础上,在物理机器上设置一条iptables规则即可,NAT表上设置源地址转换,做此操作之前,需要把本机的ip转发功能给打开,不然不成功,这里我就临时打开ip转发功能,仅作演示测试
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 172.31.225.246
[*]在虚拟机上进行测试,截图如下:(可以成功ping通外网了,也可以ping通物理机一个网段的其它物理机器)
桥接模型(直接通过br0网卡设备接收虚拟网卡传送来的数据,最后通过物理网卡出去)
[*]把物理网卡上的地址删除,并把物理网卡地址绑定在br0设备上,关联物理网卡设备到br0上,同样这里也是临时设置,就不修改配置文件了
[*]如果你是直接配置桥接模型的,下面这个步骤就跳过;如果你是按照以上步骤操作,先把br0地址给删除了
ip addr del 192.168.2.254/255.255.255.0 dev br0
[*]然后再继续执行以下步骤
ip addr del 172.31.225.246/255.255.255.0 dev eth0; brctl addif br0 eth0; ip addr add 172.31.225.246/255.255.255.0 dev br0; route add default gw 172.31.225.1
[*]修改虚拟机的相关信息:IP地址、网关,vim /etc/network/interfaces(这里我只修改其中一台虚拟机,另外一台就不修改测试了)
[*]修改完机器,重启机器,验证一下
下面正式安装centos操作系统,用光盘安装
[*]使用qemu-img创建一块磁盘设备,保存在data目录下面
mkdir /data
qemu-img create -f qcow2 /data/centos6.img -o size=120G,preallocation=metadata
[*]使用qemu-kvm创建虚拟机
qemu-kvm -m 512 -smp 2 -name centos6 -drive file=/data/centos6.img,if=virtio,media=disk,format=qcow2,cache=writeback -drive file=/data/CentOS-6.7-x86_64-bin-DVD1.iso,media=cdrom -net nic,model=virtio,macaddr=52:54:00:12:34:59 -net tap,ifname=centos6,script=/etc/qemu-ifup -boot order=c,once=d -usbdevice tablet
[*]然后紧接着用vncviewer来连接本地的5900端口,如果没有vncviewer命令的话,安装tigervnc包,yum install tigervnc -y
vncviewer :5900
[*]最后按照以下的步骤去操作,很简单
[*]登录进去之后,地址是没有的,因为我的物理机器没有安装配置dhcp,所以需要手动配置网卡,设置成static,修改后的内容如下:
[*]重启网路,并测试
至此centos6系统已经安装成功了,就结束了,原创不易,请保留版权信息
附:对于虚拟机冷迁移和热迁移,以及快照创建恢复等操作,大家可以自行谷歌
kvm详解介绍:https://blog.csdn.net/hejin_some/article/details/72673192
页:
[1]