Files
oneclickvirt.github.io/docs/guide/pve_kvm.md
2023-06-24 11:11:26 +08:00

8.9 KiB
Raw Blame History

KVM虚拟化

:::tip KVM虚拟化开设出的虚拟机SSH登录默认都不是root作用户名你需要执行sudo -i切换为root用户 :::

部分注意事项

执行本项目的第一个检测环境的命令,展示如下

图片

查询如上的只需使用下面的一键脚本自动创建虚拟机即可无需手动再修改WEB端设置

图片

查询如上的在使用后续脚本创建了虚拟机后,可能需要手动修改WEB端设置需要关闭对应每个虚拟机的硬件嵌套虚拟化如下图

图片

先停止虚拟机再修改修改完后再开机才能使用NOVNC不关闭可能导致这个虚拟机有BUG无法使用

如果强行安装PVE开KVM启动不了的也可以关闭这个选项试试能不能启动虚拟机

单独开设NAT的KVM虚拟化的VM

  • 自动开设NAT服务器默认使用Debian10镜像因为该镜像占用最小
  • 可在命令中自定义需要使用的镜像这里有给出配置好的镜像镜像自带空间设置是2~10G硬盘日常使用至少10G以上即可,除非某些镜像开不起来再增加硬盘大小
  • 可在命令中指定存储盘位置默认不指定时为local盘即系统盘可指定为PVE中显示的挂载盘
  • 自定义内存大小推荐512MB内存

:::tip 需要注意的是宿主机内存记得开点swap免得机器炸了开SWAP点我跳转 :::

  • 自动进行内外网端口映射含2280443端口以及其他25个内外网端口号一样的端口
  • 生成后需要等待一段时间虚拟机内部的cloud-init配置好网络以及登陆信息大概需要5分钟
  • 虚拟机的相关信息将会存储到WEB端对应VM的NOTES中可在WEB端查看

国际

curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm.sh -o buildvm.sh && chmod +x buildvm.sh

使用方法

  • 系统支持:详见 跳转 中列出的系统,使用时只需写文件名字,不需要.qcow2尾缀

:::tip 注意这里的用户名不能是纯数字会造成cloudinit出问题最好是纯英文或英文开头 :::

./buildvm.sh VMID 用户名 密码 CPU核数 内存 硬盘 SSH端口 80端口 443端口 外网端口起 外网端口止 系统 存储盘

测试示例

./buildvm.sh 102 test1 1234567 1 512 10 40001 40002 40003 50000 50025 debian11 local

开设完毕可执行cat vm102查看信息或到WEB端对应VM的NOTES中查看

  • 以下为开设的示例VM的信息
`VMID` - 102
`SSH登录的用户名` - test1
`SSH登录的密码` - 1234567
`CPU核数` - 1   
`内存大小` - 512MB
`磁盘大小` - 10G   
`SSH端口` - 40001
`80端口` - 40002
`443端口` - 40003
`内外网映射端口一致的区间` - 50000到50025
`系统` - debian11
`宿主机的存储盘` - local

删除示例

  • 停止VM
  • 删除VM
  • 删除端口映射
  • 重启网络
  • 删除log文件
qm stop 102
qm destroy 102
iptables -t nat -F
iptables -t filter -F
service networking restart
systemctl restart networking.service
rm -rf vm102

相关qcow2镜像

  • 已预安装开启cloudinit开启SSH登陆预设值SSH监听V4和V6的22端口开启允许密码验证登陆开启允许ROOT登陆

目前使用的镜像列表为

https://github.com/spiritLHLS/Images/releases/tag/v1.0

批量开设NAT的KVM虚拟化的VM

:::warning 初次使用前需要保证当前PVE纯净且宿主机未进行过任何端口映射否则设置冲突可能出现BUG :::

:::tip 开设前请使用screen挂起执行避免批量开设时间过长SSH不稳定导致中间执行中断 :::

  • 可多次运行批量生成VM
  • 自动开设NAT服务器选项留空默认使用debian11镜像可自定义使用镜像名字支持的系统名字详见上文支持的镜像列表
  • 自动进行内外网端口映射含2280443端口以及其他25个内外网端口号一样的端口
  • 生成后需要等待一段时间虚拟机内部的cloudinit配置好网络以及登陆信息大概需要5分钟每个虚拟机创建之间有间隔等待60秒避免突发性能不足
  • 默认批量开设的虚拟机网络配置为2280443端口及一个25个端口区间的内外网映射
  • 可自定义批量开设的核心数,内存大小,硬盘大小,使用宿主机哪个存储盘,记得自己计算好空闲资源开设
  • 虚拟机的相关信息将会存储到WEB端对应VM的NOTES中可在WEB端查看

国际

curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/create_vm.sh -o create_vm.sh && chmod +x create_vm.sh && bash create_vm.sh

开设完毕可执行cat vmlog查看信息或到WEB端对应VM的NOTES中查看

删除所有VM

  • 删除所有VM
  • 删除所有nat的端口映射
  • 重启网络
  • 删除log文件
for vmid in $(qm list | awk '{if(NR>1) print $1}'); do qm stop $vmid; qm destroy $vmid; rm -rf /var/lib/vz/images/$vmid*; done
iptables -t nat -F
iptables -t filter -F
service networking restart
systemctl restart networking.service
rm -rf vmlog

:::tip PVE修改VM配置前都得停机先再修改配置修改完再启动免得出现配置重载错误 :::

开设独立IPV4地址的VM

两个版本,各取所需

自动选择IPV4地址无需手动指定的版本

:::warning 使用前需要保证当前宿主机的IP段带了至少2个IP且有空余的IP未配置该空余的IP未绑定宿主机 :::

:::tip 开设前请使用screen挂起执行避免开设时间过长SSH不稳定导致中间执行中断 :::

  • 自动检测可用的IP区间通过ping检测空余可使用的IP选取其中之一绑定到虚拟机上
  • 系统的相关信息将会存储到对应的虚拟机的NOTE中可在WEB端查看

国际

curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_extraip.sh -o buildvm_extraip.sh && chmod +x buildvm_extraip.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_extraip.sh -o buildvm_extraip.sh && chmod +x buildvm_extraip.sh

创建示例

./buildvm_extraip.sh VMID 用户名 密码 CPU核数 内存大小以MB计算 硬盘大小以GB计算 系统 存储盘
./buildvm_extraip.sh 152 test1 1234567 1 1024 10 ubuntu20 local

上述命令意义为开设一个带独立IPV4地址的虚拟机VMID是152用户名是test1,密码是1234567CPU是1核,内存是1024MB,硬盘是10G,系统是Ubuntu20,存储盘是local盘也就是系统盘

需要手动指定IPV4地址的版本

:::tip 开设前请使用screen挂起执行避免开设时间过长SSH不稳定导致中间执行中断 :::

  • 需要手动在命令中指定IPV4地址且带上子网长度
  • 如果商家有给IPV4地址和子网长度请仔细比对按照下面示例的命令写参数
  • 系统的相关信息将会存储到对应的虚拟机的NOTE中可在WEB端查看

国际

curl -L https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_manual_ip.sh -o buildvm_manual_ip.sh && chmod +x buildvm_manual_ip.sh

国内

curl -L https://ghproxy.com/https://raw.githubusercontent.com/spiritLHLS/pve/main/scripts/buildvm_manual_ip.sh -o buildvm_manual_ip.sh && chmod +x buildvm_manual_ip.sh

创建示例

./buildvm_manual_ip.sh VMID 用户名 密码 CPU核数 内存大小以MB计算 硬盘大小以GB计算 系统 存储盘 IPV4地址
./buildvm_manual_ip.sh 152 test1 1234567 1 1024 10 ubuntu20 local a.b.c.d/24

上述命令意义为开设一个带独立IPV4地址的虚拟机VMID是152用户名是test1,密码是1234567CPU是1核,内存是1024MB,硬盘是10G,系统是Ubuntu20,存储盘是local盘也就是系统盘IPV4地址为a.b.c.d,子网为/24子网

删除示例

qm stop 152
qm destroy 152
rm -rf vm152