我有一台破旧的笔记本,说烂也不烂,配置还行,Intel I5 2代的CPU,8G内存,装了个CentOS跑各种服务,365天不停机服务(不折腾的情况下)。最近想要在上面安装KVM,装个Win Server 2012做windows装机服务器,为此还特地重装了系统。
虚拟化支持
首先确认机器是否支持虚拟化,其实现在的CPU基本都支持
lscpu | grep Virtualization
Virtualization: VT-x #代表支持Intel的VT技术
安装KVM程序
yum install qemu-kvm libvirt libvirt-python libguestfs-tools virt-install
systemctl enable libvirtd
systemctl start libvirtd
确认模块是否加载
lsmod | grep -i kvm
有输出kvm的内容即可,我用VMware测试的时候,需要重启一次虚拟机。
配置网络桥接
brctl show
virsh net-list
这个命令对我来说没什么用,virsh net-dumpxml default
可以看到默认出给创建了一个私有网络,只能虚拟机间通信。
正常情况下是创建一个虚拟网卡br0
,然后将物理网卡桥接到这个虚拟网卡br0
,然后在创建虚拟机的时候将网卡桥接到br0
上面,这样虚拟机的网卡和br0都能获取到和宿主机之前同样的一个网段。
动态获取IP的虚拟网卡br0配置如下:
DEVICE="br0"
BOOTPROTO="dhcp"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
ONBOOT="yes"
TYPE="Bridge"
DELAY="0"
然后修改物理网卡配置
vim /etc/sysconfig/network-scripts/ifcfg-enp5s0
在最后面加一条BRIDGE=br0
然后重启系统,用ifconfig看看,有br0接口。然后用brctl show
查看,是桥接到物理网卡上面的
br0 8000.5404a6abbfef no enp5s0
创建虚拟机
以windows server 2012 R2为例
virt-install \
--virt-type=kvm \
--name windows \
--ram 2048 \
--vcpus=1 \
--os-variant=windows \
--cdrom=/home/Data/OS/cn_windows_server_2012_r2_vl_with_update_x64_dvd_6052729.iso \
--disk /home/Data/OS/virtio-win-0.1.126_amd64.vfd,device=floppy \
--network bridge=br0,model=virtio \
--graphics vnc \
--disk path=/home/Data/kvm/win2k12r2.qcow2,size=30,bus=scsi,format=qcow2
参数解释:
--name 指定虚拟机的名称
--ram 指定Virtual Machine
--disk的内存量path = xxx,size = xxx
'path ='⇒指定虚拟机
size ='⇒指定虚拟机的磁盘数量
--vcpus 指定虚拟CPU
--os-type 指定GuestOS 的类型
--os-variant 指定GuestOS的类型 - 可能确认列表中使用以下命令osinfo-query os
--network 指定虚拟机的网络类型
--graphics 指定图形的类型。如果设置为“无”,则意味着非图形。
--console 指定控制台类型
--location 指定安装的位置,其中from
--extra-args 指定在内核中设置的参数
为什么会有--disk /home/Data/OS/virtio-win-0.1.126_amd64.vfd,device=floppy
这条命令?是因为KVM创建windows虚拟机是找不到磁盘的,要额外加上驱动,以软驱的方式加载,方便在安装系统的时候可以手动选择加载驱动下载地址 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/
装完后移除镜像和软驱,编辑/etc/libvirt/qemu/
目录下的虚拟机同名xml文件,找到如下内容<disk type='file' device='floppy'>
和<disk type='file' device='cdrom'>
并移除!
2018-10-24_221256.png
然后重启虚拟机就不会有镜像文件和软驱加载进来了。
一些常用的命令
virsh list --all #列出所有虚拟机
virsh dominfo vmName #获取虚拟机信息
virsh shutdown/start VM #关闭/开启虚拟机
virsh autostart VM #设置虚拟机随KVM自动启动
virsh reboot VM #安全软重启
virsh reset VM #重置虚拟机
删除虚拟机
virsh shutdown VM
virsh undefine VM
virsh pool-destroy VM
记得命令完成后删除对应的磁盘文件
可能遇到的问题
装机过程中,因为是命令行,怎么继续安装?当然是用VNC,但是可能会出现连接被拒绝的情况,为什么?因为VNC设置了默认只允许本地连接,需要修改如下内容
/etc/libvirt/qemu.conf
#vnc_listen = "0.0.0.0"
去掉#,重启libvirt即可。
怎么查看VNC端口?
使用以下命令即可查看,然后使用vnc viewer连接即可,需要提前在Server端开启防火墙端口virsh dumpxml windows | grep vnc
本文由 Ethan 创作,采用 知识共享署名4.0 国际许可协议进行许可。
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。