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 网卡的吞吐量。

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

  1. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  2. 三分钟搞定Python中的装饰器

    python的装饰器是python的特色高级功能之一,言简意赅得说,其作用是在不改变其原有函数和类的定义的基础上,给他们增添新的功能. 装饰器存在的意义是什么呢?我们知道,在python中函数可以调用 ...

  3. SSM框架三分钟搞定分页查询

    使用的国产第三方jar   pagehelper 里面的基本属性值 //当前页 private int pageNum; //每页的数量 private int pageSize; //当前页的数量 ...

  4. 三步搞定ISO/GHO安装系统 - imsoft.cnblogs

    高清互动安装系统附件:重装系统视频教程.7z

  5. 【转】让你10分钟搞定Mac--最简单快速的虚拟安装

    文章出处:让你10分钟搞定Mac--最简单快速的虚拟安装http://bbs.itheima.com/thread-106643-1-1.html (出处: 黑马程序员训练营论坛) 首先说明一下. 第 ...

  6. LIN、CAN、FlexRay、MOST,三分钟搞明白四大汽车总线

    LIN.CAN.FlexRay.MOST,三分钟搞明白四大汽车总线 2016-09-21 13:09 汽车中的电子部件越来越多,光是ECU就有几十个,这么多的电子单元都要进行信息交互.传统的点对点通信 ...

  7. JS组件系列——又一款MVVM组件:Vue(一:30分钟搞定前端增删改查)

    前言:关于Vue框架,好几个月之前就听说过,了解一项新技术之后,总是处于观望状态,一直在犹豫要不要系统学习下.正好最近有点空,就去官网了解了下,看上去还不错的一个组件,就抽空研究了下.最近园子里vue ...

  8. Spring Boot 返回 XML 数据,一分钟搞定!

    Spring Boot 返回 XML 数据,前提必须已经搭建了 Spring Boot 项目,所以这一块代码就不贴了,可以点击查看之前分享的 Spring Boot 返回 JSON 数据,一分钟搞定! ...

  9. zookeeper-架构设计与角色分工-《每日五分钟搞定大数据》

    本篇文章阅读时间5分钟左右 点击看<每日五分钟搞定大数据>完整思维导图   zookeeper作为一个分布式协调系统,很多组件都会依赖它,那么此时它的可用性就非常重要了,那么保证可用性的同 ...

  10. zookeeper核心-zab协议-《每日五分钟搞定大数据》

    上篇文章<paxos与一致性>说到zab是在paxos的基础上做了重要的改造,解决了一系列的问题,这一篇我们就来说下这个zab. zab协议的全称是ZooKeeper Atomic Bro ...

随机推荐

  1. [转]ptp(precision time protocol)时钟同步

    一.介绍1:什么是ptpPTP(Precision Time Protocol) 是一个通过网络同步时钟的一个协议.当硬件支持时,PTP 精度能达到亚微秒,比 NTP(Network Time Pro ...

  2. 即时通讯技术文集(第15期):IM跨平台和社交软件红包技术 [共19篇]

    为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第15 期. [- 1 -] IM跨平台技术学习(一):快速了解新一代跨平台桌面技术--Elec ...

  3. 跟着源码学IM(九):基于Netty实现一套分布式IM系统

    本文作者小傅哥,原题"使用DDD+Netty,开发一个分布式IM(即时通信)系统".为了提升阅读体验,有大量修订和改动,感谢原作者. 0.系列文章 <跟着源码学IM(一):手 ...

  4. WPF页面中将一个控件的宽度绑定到其父级用户控件的实际宽度

    该实际场景比较常见于,当存在多个用户控件页面拼成一个窗体,因为实际控件对应窗体的宽度并不能确定,也不是那种能指定的宽度或者高度,比如窗体分导航区域和内容区域,左侧导航区域可以直接指定宽度,而右侧内容区 ...

  5. Solution Set - “我献上明月一盏,照满河山”

    目录 0.「集训队互测 2018」「洛谷 P9248」完美的集合 1.「UR #6」「UOJ #74」破解密码 2.「NOI Simu.」苯为 3.「NOI Simu.」西克 4.「NOI Simu. ...

  6. Java接口-详解

    一.基本概念 接口(Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合.接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 如果一个类只由 ...

  7. 微软宣布更新SymCrypt加密库,新增对PQC算法的支持

    转载链接:https://mp.weixin.qq.com/s/aWXzPTWhxFpJVP1s0iwAtw 2024年9月9日,微软(Microsoft)在其博客中宣布,已开始在其开源核心加密库Sy ...

  8. ctfshow--web4 include日志注入

    这题和第三题有点不一样,这题的把php 和 data 都过滤掉了 一旦我们输入这个关键字就页面就会报error 一开始是没啥头绪的,后面上网查了一下,可以通过日志记录来注入代码 对于Apache,日志 ...

  9. Rust多线程中安全的使用变量

    在Rust语言中,一个既引人入胜又可能带来挑战的特性是闭包如何从其所在环境中捕获变量,尤其是在涉及多线程编程的情境下. 如果尝试在不使用move关键字的情况下创建新线程并传递数据至闭包内,编译器将很可 ...

  10. 《Indie Tools • 半月刊》第001期

    引言:独立开发者工具分享 <INDIE TOOLS>专注于分享独立开发出海精选.最新.最实用的工具. 欢迎订阅半月刊:<INDIE TOOLS • 半月刊> 如果本文能给你提供 ...