安装前准备
验证CPU是否支持KVM
如果结果中有vmx(Intel)或svm(AMD)字样,就说明CPU的支持的。
1 | egrep '(vmx|svm)' /proc/cpuinfo |
---|
关闭SELinux
将 /etc/sysconfig/selinux
中的 SELinux=enforcing
修改为 SELinux=disabled
安装一些最基本的服务
可选项,因为我是刚安装好的CentOS,所以为了下面方便点,先把一些必要的工具安装下
1 | yum install epel-release net-tools vim unzip zip wget ftp -y |
---|
安装KVM及其依赖项
1 | yum install qemu-kvm libvirt virt-install bridge-utils -y |
---|
验证安装结果
下图说明已经成功安装了
1 | lsmod | grep kvm |
---|
开启kvm服务
并且设置其开机自动启动
1 | systemctl start libvirtd systemctl enable libvirtd |
---|
查看状态操作结果
如下图所示,说明运行情况良好
1 | systemctl status libvirtd |
---|
1 | systemctl is-enabled libvirtd |
---|
配置网桥模式
先将 /etc/sysconfig/network-scripts/
目录下的网卡配置文件备份一份
创建 ifcfg-br0 文件
创建的 br0
文件的IP地址要和物理网卡的IP地址一致,命令 ipconfig
查看物理网卡将不会显示IP
内容如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | [root@bogon ~]*# vim /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 |
---|
修改原网卡配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | vim /etc/sysconfig/network-scripts/ifcfg-eno1s TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="YES" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" 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 |
---|
重启网络服务
1 | systemctl restart network |
---|
使用 ifconfig
验证操作结果,多了一块网卡 br0
,现在访问宿主机 使用 192.168.1.130
就可以了。
<script async src=“https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-4855142804875926" crossorigin=“anonymous”>
安装虚拟机
准备操作系统安装镜像文件
在本文中将使用和宿主环境一样的 CentOS7.2
,把该文件放到 /home/iso
目录下
挂载U盘
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | [root@nkgtsv01 ~]# fdisk -l WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion. 磁盘 /dev/sda:2995.0 GB, 2994995200000 字节,5849600000 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘标签类型:gpt Disk identifier: 434CB2EB-C42E-4B9D-A76B-B759709EC159 # Start End Size Type Name 1 2048 206847 100M EFI System EFI System Partition 2 206848 616447 200M Microsoft basic 3 616448 5849597951 2.7T Linux LVM 磁盘 /dev/mapper/centos-root:214.7 GB, 214748364800 字节,419430400 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘 /dev/mapper/centos-swap:17.2 GB, 17179869184 字节,33554432 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘 /dev/mapper/centos-home:322.1 GB, 322122547200 字节,629145600 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘 /dev/mapper/centos-tmp:107.4 GB, 107374182400 字节,209715200 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘 /dev/mapper/centos-data:2333.2 GB, 2333249372160 字节,4557127680 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 4096 字节 I/O 大小(最小/最佳):4096 字节 / 4096 字节 磁盘 /dev/sdb:31.0 GB, 31004295168 字节,60555264 个扇区 Units = 扇区 of 1 * 512 = 512 bytes 扇区大小(逻辑/物理):512 字节 / 512 字节 I/O 大小(最小/最佳):512 字节 / 512 字节 磁盘标签类型:dos 磁盘标识符:0xcad4ebea 需要挂载的硬盘 设备 Boot Start End Blocks Id System /dev/sdb4 * 256 60555263 30277504 7 HPFS/NTFS/exFAT [root@nkgtsv01 ~]# mkdir -p /mnt/udisk [root@nkgtsv01 ~]# ls anaconda-ks.cfg [root@nkgtsv01 ~]# ls /mnt/ udisk usb [root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/ mount: 未知的文件系统类型“ntfs-3g” [root@nkgtsv01 ~]# yum list *ntfs* 已加载插件:fastestmirror Loading mirror speeds from cached hostfile * base: ftp.sjtu.edu.cn * epel: mirrors.ustc.edu.cn * extras: ftp.sjtu.edu.cn * updates: ftp.sjtu.edu.cn 可安装的软件包 ntfs-3g.x86_64 2:2017.3.23-1.el7 epel ntfs-3g-devel.x86_64 2:2017.3.23-1.el7 epel ntfsprogs.x86_64 2:2017.3.23-1.el7 epel 已安装: ntfs-3g.x86_64 2:2017.3.23-1.el7 完毕! [root@nkgtsv01 ~]#yum install ntfs-3g.x86_64 -y [root@nkgtsv01 ~]# mount -t ntfs-3g /dev/sdb4 /mnt/udisk/ The disk contains an unclean file system (0, 0). The file system wasn't safely closed on Windows. Fixing. [root@nkgtsv01 ~]# [root@nkgtsv01 ~]# ls /mnt/ udisk usb [root@nkgtsv01 ~]# ls /mnt/udisk/ CentOS-7.2-x86_64-DVD-1611.iso CentOS-7-x86_64-DVD-1708.iso maven_storey2.zip [root@bogon data]# mkdir -p /data/iso [root@bogon data]# ls iso kvm-bak network [root@nkgtsv01 ~]# mount -o loop /mnt/udisk/CentOS-7-x86_64-DVD-1708.iso /data/iso/ mount: /dev/loop0 写保护,将以只读方式挂载 |
---|
创建虚拟机文件存放的目录
1 | mkdir -p /data/kvm-images |
---|
⚠️ 注意
关于virtio-win驱动
virtio-win驱动主要用于kvm里的 windows虚拟机。virtio-win提供yum源安装rpm包,virtio驱动默认会安装在/usr/share/virtio-win目录中,可共享于kvm里的windows虚拟机。
代码语言:javascript复制sudo wget https://fedorapeople.org/groups/virt/virtio-win/virtio-win.repo -O /etc/yum.repos.d/virtio-win.repo
# 添加repo
该repo文件提供两个不同的仓库:
- virtio-win-stable 默认,该仓库的版本和RHEL版本关联在一起发布,意味着得到了非常多的测试,很稳定。
- virtio-win-latest 该仓库提供最新的build版本,这些版本可能有各种问题,用户需自己承担风险。这个仓库默认是disable的。如果你想从稳定版更新到最新版,可以使用如下命令: 1 sudo yum --enablerepo=virtio-win-latest update virtio-win
安装完成后的文件会存放在/user/share,内容如下:
代码语言:javascript复制/usr/share/virtio-win/*.iso: ISO镜像,包含所有驱动,详细内容后面会描述
/usr/share/virtio-win/*.vfd: 用于Windows XP下的VFD软驱镜像
/usr/share/virtio-win/drivers: 从VFD软驱镜像中提取的文件
/usr/share/guest-agent/*.msi: QEMU Guest Agent 32bit 和 64bit 安装包
其中ISO镜像内容为:
代码语言:javascript复制NetKVM/: Virtio网络驱动
viostor/: Virtio块驱动
vioscsi/: Virtio SCSI驱动
viorng/: Virtio RNG驱动
vioser/: Virtio串口驱动
Balloon/: Virtio 内存气球驱动
qxl/: 用于Windows 7及之前版本的QXL显卡驱动. (virtio-win-0.1.103-1和之后版本会创建)
qxldod/: 用于Windows 8及之后版本的QXL显卡驱动. (virtio-win-0.1.103-2和之后版本会创建)
pvpanic/: QEMU pvpanic 设备驱动 (virtio-win-0.1.103-2和之后版本会创建)
guest-agent/: QEMU Guest Agent 32bit 和 64bit 安装包
qemupciserial/: QEMU PCI 串口设备驱动
或者你也可以通过一下方获取
稳定版virtio-win iso
稳定版virtio-win x86 floppy
稳定版virtio-win amd64 floppy
最新版virtio-win iso
最新版virtio-win x86 floppy
最新版virtio-win amd64 floppy
最新版qemu-ga files
全部下载目录
变更日志
使用 virt-install 创建虚拟机
1 2 3 4 5 6 7 8 9 10 11 | [root@bogon data]# virt-install --virt-type kvm --name=njvm2k8 --ram=1024 --vcpus=1 --os-type=windows --accelerate --cdrom=/home/kvm_data/iso/cn_windows_server_2008_r2_617396.iso --disk path=/usr/share/virtio-win/virtio-win.iso,device=cdrom --disk path=/home/kvm_data/img/njvm2k8.qcow2,bus=virtio --network bridge=br0 --graphics vnc,listen=0.0.0.0,password=123456,port=5920 --noautoconsole WARNING 无法连接到图形控制台:没有安装 virt-viewer。请安装 'virt-viewer' 软件包。 WARNING 没有控制台用于启动客户机,默认为 --wait -1 开始安装...... 正在分配 'njvm2k8.img' | 200 GB 00:00:00 正在删除磁盘 'njvm2k8.img' | 0 B 00:00:00 域安装失败,您可以运行下列命令重启您的域: 'virsh start virsh --connect qemu:///system start njvm2k8' 否则请重新开始安装 |
---|
不要理会里面提示的错误,接着往下走
命令含义
代码语言:javascript复制virt-install
--name=客户机名称
--ram 内存(1024)1G
--vcpus= cpu1
--os-type= 客户机系统类型
--os-variant= win2k8
--disk path= 客户机文件存放路径 ,
size=客户机硬盘大小200
--accelerate
--cdrom (镜像文件路径)
--vnc --vncport=vnc远程端口 5910
--network bridge=网卡桥接 br0,model=virtio
--noautoconsole
打开防火墙上的5910端口
因为 VNC
使用的端口默认是 5910
所以需要打开防火墙, 防火墙若关闭请忽略
1 | firewall-cmd --zone=public --add-port=5910/tcp --permanent |
---|
查看打开新创建的虚拟机
1 2 | virsh list --all virsh start njvm2k8-win |
---|
使用VNC链接虚拟机
vncviewer下载地址
使用VNC输入宿主机IP地址 加上端口号 输入虚拟机名字然后打开
⚠️ 注意
安装的时候找不到硬盘
如果再安装的时候找不到硬盘,请执行一下操作
挂载win镜像
1 | virsh change-media njvm2k8 hdb /usr/share/virtio-win/virtio-win.iso |
---|
然后取消挂载的镜像 把系统镜像 从新挂载到系统 进行分区 安装系统
安装完毕重启虚拟机
安装完会重启windows虚拟机
我们查看状态 然后启动虚拟机
等待安装完成
启动之后设置密码 我们就进入了新的windows 操作系统
用vnc链接
⚠️ 注意 挂载软驱 (硬盘驱动 网卡驱动等)注释:网卡驱动要在系统中装好之后挂载 不然装系统的时候会提示找不到光盘镜像
在宿主机中执行命令
1 | virsh change-media njvm2k8 hdb /usr/share/virtio-win/virtio-win.iso |
---|
VMTools工具安装完成后,使用如下命令卸载掉挂载的VMTools工具:
代码语言:javascript复制a.如果是Linux虚拟机,执行如下命令卸载VMTools工具:
virsh change-media 【虚拟机ID】 --eject 【vmtools-linux.iso文件全路径】
b.如果是Windows虚拟机,执行如下命令卸载VMTools工具:
virsh change-media 【虚拟机ID】 --eject 【vmtools-windows.iso文件全路径】
挂载驱镜像文件到njvm2k8主机上
用vnc链接