Centos7 搭建KVM并创建Linux Windows虚拟机

一、安装KVM

 
查看系统版本
cat /etc/redhat-release
 
 
关闭防火墙及selinux
 
systemctl disable firewalld.service
查看防火墙状态   
systemctl status firewalld
查看开机是否启动防火墙服务
systemctl is-enabled firewalld
 
1. 验证CPU是否支持KVM;
如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU支持的。
egrep '(vmx|svm)' /proc/cpuinfo
 
 
2,关闭SELinux
将 /etc/selinux/config 中的 SELinux=enforcing 修改为 SELinux=disabled
3. 最小安装的CentOS安装一些最基本的包
(可选项,因为我是刚安装好的CentOS,所以为了下面方便点,先把一些必要的工具安装下)
yum install epel-release net-tools vim unzip zip wget ftp -y
 
4. 安装KVM及其依赖项
yum install qemu-kvm libvirt virt-install bridge-utils -y
 
5. 验证安装结果,下图说明已经成功安装了
lsmod | grep kvm
 
6. 开启kvm服务,并且设置其开机自动启动
systemctl start libvirtd
开机启动
systemctl enable libvirtd
7. 查看状态操作结果
如下图所示,说明运行情况良好
systemctl status libvirtd
 
查看是否开机启动
systemctl is-enabled libvirtd
 
 
cp -r /etc/sysconfig/network-scripts/ /data/network/
 
 
8. 配置网桥模式
先将 /etc/sysconfig/network-scripts/ 目录下的网卡配置文件备份一份
a. 创建 netifcfg-br0 文件,(创建的br0文件的IP地址要和物理网卡的IP地址一致,命令 ipconfig查看物理网卡将不会显示IP)内容如下:
vi /etc/sysconfig/network-scripts/ifcfg-br0
 
 
[root@bogon ~]# vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
BOOTPROTO=none
DEFROUTE=yes
ONBOOT=yes
TYPE=Bridge
IPV4_FAILURE_FATAL=yes
IPADDR=192.168.1.130
NETMASK=255.255.255.0
GATEWAY=192.168.1.254
DNS1=221.6.4.66
DELAY=0
USERCE=no
修改物理网卡eno1
 
vi /etc/sysconfig/network-scripts/ifcfg-eno1
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="static"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="YES"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"a
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="eno1"
UUID="bb40d726-8d67-4187-90c3-eb61e1b42d61"
DEVICE="eno1"
ONBOOT="yes"
IPADDR="192.168.1.130"
NETAMSK=255.255.255.0
GATEWAY="192.168.1.254"
DNS1="221.6.4.66"
IPV6_PRIVACY="no"
BRIDGE=br0
c. 重启网络服务
systemctl restart network
使用 ifconfig 验证操作结果,多了一块网卡br0,现在访问 think8848-srv02 使用 192.168.1.120就可以了。
*注释:如果有防火墙的话在防火墙添加虚拟机IP地址策略 允许源地址访问目标地址。
 

二、安装linux虚拟机

1. 准备操作系统安装镜像文件
在本文中将使用和宿主环境一样的CentOS7.2,把该文件放到 /home/iso 目录下
 
挂载U盘
 
[root@nkgtsv01 ~]# mount  -o loop /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso /data/iso/
mount: /dev/loop0 写保护,将以只读方式挂载
 
2. 创建虚拟机文件存放的目录
mkdir -p /data/kvm-bak
 
3.使用 virt-install 创建虚拟机
[root@bogon data]# virt-install --name njvm01 --boot network,cdrom,menu=on --ram 6411 --vcpus=1 --os-variant=rhel6 --accelerate --cdrom=/mnt/udisk/CentOS-7-x86_64-DVD-1708.iso --disk path=/data/kvm-bak/vm01.img,size=200,bus=virtio --bridge=br0,model=virtio --autostart --vnc --vncport=5910 --vnclisten=0.0.0.0
WARNING  无法连接到图形控制台:没有安装 virt-viewer。请安装 'virt-viewer' 软件包。
WARNING  没有控制台用于启动客户机,默认为 --wait -1
开始安装......
正在分配 'vm01.img'                                   | 200 GB  00:00:00
ERROR    internal error: process exited while connecting to monitor: 2018-01-31T06:20:00.727909Z qemu-kvm: -drive file=/mnt/udisk/CentOS-7-x86_64-DVD-1708.iso,format=raw,if=none,id=drive-ide0-0-0,readonly=on: could not open disk image /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso: Could not open '/mnt/udisk/CentOS-7-x86_64-DVD-1708.iso': Permission denied
正在删除磁盘 'vm01.img'                             |    0 B  00:00:00
域安装失败,您可以运行下列命令重启您的域:
'virsh start virsh --connect qemu:///system start njvm05'
否则请重新开始安装。
 
不要理会里面提示的错误,接着往下走
4. 打开防火墙上的5910端口
防火墙若关闭请忽略
firewall-cmd --zone=public --add-port=5910/tcp --permanent
 
 
firewall-cmd --reload
 
[root@nkgtsv01 ~]# firewall-cmd --zone=public --add-port=5910/tcp --permanent
FirewallD is not running	
[root@nkgtsv01 ~]# firewall-cmd    --state
not running	
[root@nkgtsv01 ~]# systemctl  start   firewalld.service
[root@nkgtsv01 ~]# firewall-cmd    --state
running
[root@nkgtsv01 ~]# firewall-cmd --zone=public --add-port=5910/tcp --permanent
Success  
[root@nkgtsv01 ~]# systemctl  start   firewalld.service
[root@nkgtsv01 ~]# firewall-cmd --reload
Success

 

 
5.Virsh list --all 查看虚拟机状态
 
6.开启虚拟机 然后打开VNC
使用VNC输入宿主机IP地址 加上端口号 输入虚拟机名字 打开
 
7.打开远程工具远程调整下IP
 
8.Service network restart
重启网络
 
使用 virt-clone 克隆njvm01为新的虚拟机(虚拟机需要先关闭)
virt-clone -o njvm02 -n njvm03 -f /data/kvm-img/njvm03.img
 
 
 
克隆完查看 所有的虚拟机以及状态
virsh list --all
 
 
删除虚拟机njvm01
 
强制关机断电虚拟机
virsh destroy njvm01
删除虚拟机
virsh undefine njvm01
 
[root@nkgtsv01 data]# virsh shutdown njvm01
域 njvm01 被关闭
 
[root@nkgtsv01 data]# virsh start njvm02
域 njvm02 已开始
 
[root@nkgtsv01 data]#
[root@nkgtsv01 data]# virsh list --all
 Id    名称                         状态
----------------------------------------------------
 12    njvm02                         running
 -     njvm01                         关闭
 -     njvm03                         关闭
 -     njvm04                         关闭
 
克隆完以后因为IP地址还是njvm01的IP地址所以我们要修改IP地址
开启我们克隆的虚拟机
远程登陆上去
 
[root@nkgtsv-vm01 ~]# cd /etc/sysconfig/network-scripts/
[root@nkgtsv-vm01 network-scripts]# ls
ifcfg-eth0   ifdown-ppp       ifup-eth     ifup-sit
ifcfg-lo     ifdown-routes    ifup-ippp    ifup-Team
ifdown       ifdown-sit       ifup-ipv6    ifup-TeamPort
ifdown-bnep  ifdown-Team      ifup-isdn    ifup-tunnel
ifdown-eth   ifdown-TeamPort  ifup-plip    ifup-wireless
ifdown-ippp  ifdown-tunnel    ifup-plusb   init.ipv6-global
ifdown-ipv6  ifup             ifup-post    network-functions
ifdown-isdn  ifup-aliases     ifup-ppp     network-functions-ipv6
ifdown-post  ifup-bnep        ifup-routes
[root@nkgtsv-vm01 network-scripts]# vi ifcfg-eth0
 
IPADDR=192.168.1.121改为我们想要的IP地址
保存退出
 
Service network restart
重启网络
重新链接
 
 

三、Kvm-virtio-windows

 
在kvm中,安装windows需要使用virtio驱动,这个驱动是安装windows中必须要的,否则就会找不到硬盘,我们先下载驱动。
***重点***
wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
 
***重点***
 yum install -y virtion-win
 
执行命令
virt-install --name=客户机名称 --ram 内存(1024)1G --vcpus= cpu1 --os-type= 客户机系统类型 windows --os-variant= win2k8 --disk path= 客户机文件存放路径 /data/kvm-images/win2k8.img,size=客户机硬盘大小200 --accelerate --cdrom (镜像文件路径) --vnc --vncport=vnc远程端口 5910 --network bridge=网卡桥接 br0,model=virtio --noautoconsole
 
virt-install --name=win2k12  --ram=8192 --vcpus=2 --os-type=windows --os-variant=win2k12  --disk path=/home/kvm/data/win2k12.img,size=200 --accelerate --cdrom /home/kvm/iso/cn_windows_server_2012_r2_x64_dvd_2707961.iso --vnc --vncport=5901 --vnclisten=0.0.0.0 --network bridge=br0,model=virtio --noautoconsole 
 
为备注,需删掉
 
 
 
或 执行命令
virt-install --name=win2k12  --ram 1024 --vcpus=1 --os-type=windows --os-variant=win2k12 --disk path=/home/data/kvm/win2k12.img,size=100 --accelerate --cdrom  /home/data/iso/cn_windows_server_2012_r2_vl_x64_dvd_3316795.iso --vnc --vncport=5990 --network bridge=br0,model=virtio --noautoconsole
 
virt-install --virt-type kvm --name=win2k8 --ram=4096 --vcpus=4 --os-type=windows --accelerate --cdrom=/home/kvm_data/iso/cn_windows_server_2008_r2_standard_enterprise_datacenter_and_web_with_sp1_vl_build_x64_dvd_617396.is.iso --disk path=/usr/share/virtio-win/virtio-win.iso,device=cdrom --disk path=/home/kvm_data/img/win2k8.qcow2,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0,password=123456,port=5920 --noautoconsole
 
用vnc链接
若在安装的时候找不到硬盘
###############################################################################
挂载win镜像
 
virsh change-media win2k12vm01  hdb /usr/share/virtio-win/virtio-win.iso
 
 
 
选择这个路径的文件 然后下一步
然后取消挂载的镜像 吧系统镜像 从新挂载到系统 进行分区 安装系统
###############################################################################
 
 
安装完会重启windows虚拟机
我们查看状态 然后启动虚拟机
用vnc从新连接
等他自动读条
 
等待安装完成
启动之后设置密码 我们就进入了新的windows 操作系统
 
用vnc链接
 
***重点***
挂载软驱 (硬盘驱动 网卡驱动等)注释:网卡驱动要在系统中装好之后挂载 不然装系统的时候会提示找不到光盘镜像
在宿主机中执行命令
virsh change-media win2k12  hdb /usr/share/virtio-win/virtio-win.iso 
 
VMTools工具安装完成后,使用如下命令卸载掉挂载的VMTools工具:
a.如果是Linux虚拟机,执行如下命令卸载VMTools工具:
virsh change-media 【虚拟机ID】 --eject 【vmtools-linux.iso文件全路径】
b.如果是Windows虚拟机,执行如下命令卸载VMTools工具:
virsh change-media 【虚拟机ID】 --eject 【vmtools-windows.iso文件全路径】
 
挂载驱镜像文件到win2k12主机上
用vnc链接
 
 
 
 

原文地址:https://www.cnblogs.com/xuewenlong/p/12881940.html