PVE虚拟平台常用简明操作,三分钟搞定虚拟机更换安装配置

Proxmox Virtual Environment是一个基于QEMU/KVM和LXC的开源服务器虚拟化管理解决方案,本文简称PVE,与之相类似的虚拟化平台是VMWARE的ESXi虚拟平台,相较于商业产品ESXi虚拟平台,由于PVE基于Debian系统,Linux系统的优势太强,在硬件驱动支持方面无敌,在可扩展方面无敌,在性能和稳定性方面与ESXi相当,只是在易用性上稍逊,不过对于偏向命令行喜好的玩家来说,PVE易用方便高效秒杀ESXi虚拟平台了。

当然,PVE也提供了WEB操作界面,但若要高效方便还得是命令行。命令很多,但常用的就下面几条,更复杂的直接查看PVE手册,随用随查。

#qm list //列出当前PVE平台中所有虚拟机
#qm snapshot <虚拟机编号> <快照文件名>   //给指定虚拟机生成快照
#qm importdisk <虚拟机编号> <img\vmdk格式文件> local-lvm  //导入系统文件到指定虚拟机
#qm shutdown <虚拟机编号>  //关闭指定虚拟机
#qm start <虚拟机编号> 启动虚拟机编号

PVE可以通过一个集成的、易于使用的Web界面或通过CLI来管理虚拟机、容器、高可用集群、存储和网络。需要说明,QEMU/KVM虚拟机和Linux容器是Proxmox VE支持的两种类型的虚拟化技术。在Proxmox VE主机上常见任务:例如设置软件包库、配置网络、系统更新、主机启动程序、外部度量服务器、磁盘健康监测、逻辑卷管理器LVM、Linux上的ZFS等,PVE主机支持集群,运行在PVE平台上的的虚拟机和容器可以配置高可用性,PVE主机支持的存储架构也很丰富,例如:Ceph RBD、ZFS、用户模式iSCSI、iSCSI、ZFS over iSCSI、LVM、LVM thin、GlusterFS、NFS和Proxmox Backup Server。

三分钟搞定PVE虚拟机的过程

第一步:准备好虚拟机系统镜像,将镜像文件传到PVE虚拟平台中,这里以openwrt的镜像openwrt21.02.img.gz为例,操作环境为MX Linux系统,如果使用Windows系统,可以使用WinSCP软件传输虚拟机镜像文件到PVE平台中,这里PVE平台管理IP为192.168.5.2
//scp命令将虚拟机系统镜像文件复制进PVE平台的root目录
$scp openwrt21.02.img.gz root@192.168.5.2:/root
$ssh root@192.168.5.2   //进入PVE平台命令行
$gunzip openwrt21.02.img.gz     //解压镜像文件为img格式
第二步,建立PVE虚拟机,导入准备好的系统镜像,需要重启虚拟机
$ssh root@192.168.5.2   //进入PVE平台命令行
//qm 命令导入img系统镜像文件到编号100的PVE虚拟机中,显示为未用硬盘
$qm importdisk 100 openwrt21.02.img local-lvm

双击导入镜像后产生的PVE虚拟机硬盘,选择scsi编号后确定,添加PVE硬盘成功,点击PVE虚拟机Options,修改Boot Order为刚新添加的scsi编号硬盘,重启虚拟机,或者先关闭虚拟机,再启动虚拟机,实测两步走更好一些。用命令更高效一些。
#qm shutdown 100   关闭100编号的PVE虚拟机
#qm start 100      //启动100编号的PVE虚拟机

第三步,PVE虚拟机基本初始配置,需要重启相关服务。以openwrt为例 ,需要修改两处配置,一处是管理口网络IP,然后重启网络服务使其生效;一处为修改用户口令,以便WEB管理端登录。进入PVE平台WEB管理界面,打开编号100PVE虚拟机中的Console界面,执行以下命令进行设置。
#passwd    修改root用户密码
#vi /etc/config/network    //修改PVE虚拟机管理IP,例如lan口IP设置为192.168.5.1
#/etc/init.d/network restart 重启网络服务,使管理IP生效

最后,就可以输入PVE虚拟机的管理IP进入Openwrt的WEB管理界面了,以修改好的密码登录即可。登录后第一件事是修改网络接口Lan,勾选需要桥接的网卡,然后修改网络接口WAN的协议为PPPoE,填入家中宽带帐户密码即可连接宽带上网。

至此,PVE虚拟机切换完成,如果有其他系统镜像,直接重复前面三步,都不用删除现存的虚拟机,一个虚拟机导入多个scsi硬盘,然后在BootOder启动顺序中选择,想用哪个系统用哪个,惬意……

本来想写篇短文章,结果一写收不住,干脆多写一点,网上流传什么内置硬盘直通、外挂USB硬盘直通,都是既麻烦又有硬件损坏风险的方案,最方便稳妥好用的方案是使用PVE搭建Samba共享服务,再使用PVE虚拟机Openwrt去访问Samba共享服务,间接访问存储设备,这个方案与硬盘文件系统无关,支持NTFS、EXT4、EXFAT、HPFS+等主流操作系统的文件系统格式,兼容性无敌。

下图为PVE平台中搭建Samba服务,需要修改smb配置以提供写盘权限。

下图为在PVE虚拟机中挂载PVE共享,使用存储设备进行下载等后续应用。

下图以挂载点为/mnt/smb为例,挂载PVE中samba共享,为aria2下载应用提供存储支持。

延伸阅读

啥是容器?

容器是完全虚拟机的轻量级替代品,它使用所宿主主机系统的内核,而并不像完全虚拟平台台那样直接虚拟一个完整的操作系统,因此容器可以直接访问主机系统上的资源,其运行效率高,与在主机上直接运行的应用相比差别很小,主要目标是提供一个环境,提供使用虚拟机的好处,但没有虚拟机那样巨大的额外开销。

系统容器和应用容器的不同?相当于PVE之于VirtualBox,ESXi之于Vmware WorkStation

目前,PVE容器中只提供对Linux发行版支持,不能在容器内运行其他操作系统,例如:FreeBSD、Windows。容器在安全性上天然弱于完全虚拟机,通常都需要技术隔离,限制对主机资源的访问,特别是涉及到系统调用功能,即用户空间对Linux内核的请求在容器内是禁止的。因此,PVE容器属于系统容器,而不是“应用容器”,如果需要运行应用容器,例如Docker镜像则需要在PVE虚拟机中运行Docker。

Qemu(Quick Emulator的简称)是一个开源的管理程序,可以模拟物理计算机。从Qemu运行的主机系统的角度来看,Qemu是一个用户程序,它可以访问一些本地资源,如分区、文件、网卡,然后将其传递给模拟计算机,模拟计算机将其视为真实设备。

在模拟计算机中运行的客户操作系统访问这些设备,并像在真实硬件上运行一样运行。例如,将一个操作系统ISO镜像作为参数传递给Qemu,在被模拟的计算机中运行的操作系统将看到一个真正的CD-ROM插入到CD驱动器。Qemu可以模拟从ARM到Sparc的各种硬件,PVE只关注32位和64位的PC模拟,基本上代表了绝大多数的服务器硬件。

软件模拟的硬件有兼容性问题吗?完全没有

由于有了处理器扩展,当仿真的架构与主机架构相同时,Qemu的仿真速度也是最快的之一。在Linux系统中使用KVM(基于内核的虚拟机)来实现原生虚拟,这意味着Qemu是在虚拟化处理器扩展的支持下,通过linux内核KVM模块运行的,因此PVE中的Qemu性能很高,虚拟设备和准虚拟化的设备,包括主板、网络控制器、SCSI、IDE和SATA控制器、串行端口等PC硬件,所有这些都是通过软件模拟的。如果在客户中运行的操作系统有适当的驱动程序,它将使用这些设备,就像它在真正的硬件上运行一样。这使得Qemu可以运行未经修改的操作系统。

软件模拟的硬件和直通硬件的性能差异,直通不一定最好

因为在软件中运行本应在硬件中运行的东西,主机CPU负担比较重,存在性能损失,为了缓解这个问题,Qemu可以向虚拟机中的操作系统直通准虚拟化设备,从而使虚拟机操作系统知道它正在Qemu内运行。

Qem遵循virtio虚拟化标准,因此能够呈现准虚拟化的virtio设备,其中包括准虚拟化的通用磁盘控制器、准虚拟化的网卡、准虚拟化的串口、准虚拟化的SCSI控制器等。强烈建议尽可能地使用virtio设备,因为它们提供了很大的性能改进。依据bonnie++测试结果,使用 virtio 通用磁盘控制器与模拟的 IDE 控制器相比,连续写入的吞吐量将增加一倍;类似地,依据iperf测试结果,使用 virtio 网络接口可以提供三倍于模拟的 Intel E1000 网卡的吞吐量。

posted @ 2022-12-21 16:19  lclc  阅读(12698)  评论(0编辑  收藏  举报