这个系列本来想水到3篇左右。
但实在没什么好填充的,还不如简单明了一命通关。
# Info.
KVM是什么?linux的开源虚拟机环境,其他无须赘述。
直入正题,本文将详细描述以下几个方面,全程命令行操作:
- kvm环境搭建
- 创建vps
- NAT联网
- vps管理
# Do it.
实验环境及准备工作:
- centos7.6_8h32g_开启虚拟化
- win10_LTSC.iso
Part.1 部署kvm环境
1. 安装基本组件
yum install qemu-kvm libvirt virt-install bridge-utils -y
2. 验证安装,如下所示即成功
lsmod | grep kvm
3. 启动kvm,设置自启
systemctl restart libvirtd
systemctl enable libvirtd
systemctl status libvirtd
4. 网络组状态
这部分与桥接有关,可能会出问题
设置并启用默认网络组virsh net-define /usr/share/libvirt/networks/default.xml
virsh net-start default
virsh net-list
5. 预备虚拟机硬盘文件路径,随便mk一个dir
mkdir /root/kvmdisk
Part.2 安装kvm虚拟机
1. 挂载镜像(好像可以不用挂载,未测试)
挂载 win10_LTSC.iso 到/mnt/usb1,但实际调用是用 /dev/loop0
,可通过df -h
查看
mkdir /mnt/usb1
mount -o loop /path/to/iso/windows_10_LTSC.iso /mnt/usb1/
2. 创建虚拟机磁盘
qemu-img create -f qcow2 /root/kvmdisk/win1.img 80G
3. 创建机器
使用virt-install
命令创建机器,可选参数比较多,可以参考:命令参数
超长的一句命令。:
virt-install --virt-type kvm --name win1 --memory 4096 --cdrom=/dev/loop0 --boot cdrom --disk path=/root/kvmdisk/win1.img,bus='ide' --cpu host-model-only --network=default,model='e1000' --graphics vnc,listen=0.0.0.0,port=5901 --vcpus 8 --noautoconsole --os-type=windows
命令参数释义,根据实际情况和需要逐条微调:
virt-install
--virt-type kvm #虚拟机类型
--name win1 #虚拟机名称
--memory 4096 #内存分配,单位MB
--cdrom=/dev/loop0 #cdrom路径
--boot cdrom #启动方式
--disk path=/root/kvmdisk/win1.img,bus='ide' #虚拟机磁盘路径
--cpu host-model-only #cpu属性
--network=default,model='e1000' #网络组和网卡型号
--graphics vnc,listen=0.0.0.0,port=5901 #vnc设置,0000监听母鸡所有ip,密码在后续配置
--vcpus 8 #cpu核数
--noautoconsole #无控制台模式? 具体看网络文档解释
--os-type=windows #系统类型
执行成功会返回 开始/正在安装
执行失败会有相应报错,根据实际报错修改命令(或环境,比如虚拟化)
4. (可选)VNC密码
由于本操作在公网上进行,所以需要添加vnc密码。
vnc配置也可在上边的创建命令中添加,但多次尝试失败,遂创建完后再修改配置文件
编辑win1配置文件virsh edit win1
找到vnc行,加入 passwd="xxxxxxx"
,保存退出,该vps关机再开机即可重载配置文件
<graphics type='vnc' passwd='mima123' port='5901' autoport='yes' listen='0.0.0.0'>
5. 可能存在问题:cpu核数
虽然不修改也能用,但还是多核看起来舒服些virsh edit win1
....
<cpu mode='host-passthrough' check='none'>
<topology sockets='1' cores='4' threads='4'></topology>
</cpu>
....
<!--
mode=cpu型号
sockets=cpu插槽数
cores=总核心数
threads=线程数
-->
Part.3 网络配置(NAT)
NAT方式能让vps用内网地址上网
因涉及到流量转发,这里采用iptables控制
1. 母鸡开启转发
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
2. 关闭、屏蔽 firewalld
systemctl stop firewalld
systemctl disable firewalld
systemctl mask firewalld
3. 安装iptables
yum -y install iptables-services*
(可选) 新安装的iptables 清除默认配置
iptables -F
iptables -t nat -F
4. 开放vps的vnc、远程端口,以及母鸡的常用端口
iptables -A INPUT -p tcp -m tcp --dport 5901 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 50001 -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
5. 转发设置
注意修改 vps内网ip
和 母鸡出口ip
NAT转发iptables -t nat -A POSTROUTING -s vps内网ip -o em1 -j SNAT --to-source 母鸡出口ip
端口转发,例如远程端口3389iptables -t nat -A PREROUTING -p tcp -d 母鸡出口ip --dport 转发端口 -j DNAT --to-destination
vps内网ip
:3389
保存重启service iptables save
service iptables restart
Part.4 常用 virsh 管理命令
参考:virsh命令
常用命令:
- 编辑配置:
virsh edit win1
- 软关机:
virsh shutdown win1
- 硬关机:
virsh destroy win1
- 删除:
virsh undefine win1
- 开机:
virsh start win1
- 挂起:
virsh suspend win1
- 恢复:
virsh resume
- 增加内存:
virsh setmem win1 4G
快照操作:
- 创建
virsh snapshot-create-as win1 快照名
- 查看快照列表和信息
virsh snapshot-list win1
virsh snapshot-info win1 快照名
- 恢复
virsh snapshot-revert win1 快照名
- 删除
virsh snapshot-delete win1 快照名
Q.E.D
Comments NOTHING