20
2024
05
18:38:50

Proxmox VE架构 proxmox cpu


有很多非常棒的虚拟化平台,但大多数价格不菲。尽管免费的虚拟化产品有不少,但都不是很好用。在本文中,我们介绍一款开源的虚拟化平台Proxmox。Proxmox基于KVM虚拟化,可以免费使用,包括全功能的图形界面而且支持成本很低。

Proxmox开放源代码、易于使用而且健壮的Web界面使其与其他虚拟化产品区别开来。开箱即用功能包括高可用以及集群节点之间的在线迁移。按照下文中简单的步骤就可以配置一个独立的Proxmox环境。

安装Proxmox虚拟化平台

在安装前需要检查一些先决条件,为使用Proxmox虚拟化,需要配置DNS正向、反向解析。还必须确保Proxmox主机启用了Intel VT-d。另外,强烈建议配置固定IP。

满足上述先决条件后,就可以启动ISO 安装镜像了,操作步骤如下所示:

在菜单中选择安装Proxmox。首先看到的是最终用户许可协议,单击同意即可。

接下来是地区配置。需要配置地区、时区以及键盘布局。

建议管理员为本地root账号设置一个可靠的密码。用户在web页面进行身份验证时需要输入root账号的密码。还需要提供一个与安装相关的邮件地址。

配置IP以及DNS。

这时,机器将配置存储并安装hypervisor以及依赖包,这一过程需要花几分钟。

取出光盘然后重启。

安装完成后,就可以使用web界面管理Proxmox服务器了。Proxmox使用的是非标准端口8006。

登录时会看到一个警告信息,提示未使用安全连接。确认后在Proxmox登录界面输入之前设置的密码。然后应该会看到非合法订阅的告警,忽略该告警并点击确认即可。需要明确的是,并非只有订阅后才能够使用Proxmox。

图A. 一个基本的Proxmox界面

图A展示的是大多数日常工作都要用到的界面。与大多数hypervisor类似,Proxmox提供了很多视图,包括存储视图、服务器视图、文件夹视图等等。每种视图都提供了不同的上下文视图以及菜单选项。

单击左侧面板中的Proxmox服务器配置与服务器相关的选项。顶部的菜单栏可以对部分配置进行修改,包括增加额外的DNS服务器、活动目录集成。

如果展开Proxmox节点,会看到两个磁盘节点。标记为本地的节点保存了Proxmox hypervisor详细信息,而且本地逻辑卷管理可以用于虚拟机存储。在生产或集群配置中,你可以使用NFS、iSCSI或者FC存储。

Proxmox虚拟化非常棒的功能之一是上传各种操作系统的安装镜像非常容易。例如在安装Ubuntu虚拟机之前,可以上传一个ISO安装镜像。可以在服务器视图下看到可用的磁盘。单击本地磁盘然后在弹出的菜单中选择模板按钮。然后,在下拉列表中选择ISO文件。最后,单击选择文件按钮,选择ISO镜像并单击上传即可。

在Proxmox中创建一个基础虚拟机

可以通过单击屏幕顶端名为创建虚拟机的蓝色按钮创建一个基础的虚拟机。接下来将会打开虚拟机创建向导。为创建虚拟机,必须填写几个字段,包括将虚拟机安装在哪个节点上,当前默认只有一个节点。然后输入虚拟机ID。系统默认给每台虚拟机分配一个唯一的ID,所以无需修改。接下来输入虚拟机的名字。最后会创建一个资源池,保持默认配置即可。完成上述配置后,单击下一步。

接下来的几个页面允许管理员配置操作系统,在Linux以及其他操作系统类型选项中选择Linux 4.x/3.x/2.6内核,单击下一步。在CD/DVD页面,保持默认的选项—从已存储的ISO引导。ISO镜像下拉菜单允许你选择之前上传的ISO镜像。选完镜像后单击下一步。在硬盘页面,可以选择相关的硬盘配置。我建议在下拉菜单中选择VirtIO而不是使用默认的IDE总线。这取决于具体的需求,你还可以配置存储路径以及磁盘大小。

接下来是CPU配置页面。建议除虚拟插槽个数外其余选项保持默认值,我建议将虚拟插槽数设置为2。将内存配置为2GB,然后单击下一步。网络配置允许你选择不同的桥接以及以太网驱动器,但目前我还没有添加任何额外的网络基础设施。VirtIO网络驱动器是最佳选择,因为它提供了最佳的虚拟性能。配置任何最近的Linux发行版应该都很轻松,因为性能优越的虚拟驱动程序构建在基础操作系统内。这省去了安装辅助工具的必要性,这和VMware很相似。构建一个Window虚拟客户机不是很简单,在初始阶段会涉及很多步骤。一旦创建完Windows模板后,部署虚拟机就是分分钟的事儿了。

完成上述配置后单击继续,查看并确认所有配置都没问题。如果查看下任务列表,你会看到建立一个新任务创建新虚拟机的选项。

这时,选择资源池视图然后会看到之前创建的虚拟机。右键单击虚拟机并单击启动。然后在位于顶部的虚拟机菜单下选择控制台。可以通过与web控制台交互完成服务器安装。控制台仅用于初始配置,今后你应该使用安全Shell或者Windows RDP管理主机。


== 部署相关 ==
支持虚拟化VT-d,VT-x的CPU即可部署Proxmox


== 功能挖掘 ==
本章旨在挖掘Proxmox已有但未放到WEB控制台的功能。


===无状态虚拟机 ===
Proxmox无状态虚拟机是指某台虚拟机重启后自动恢复到初始状态。由于Proxmox基于KVM内核,所以KVM下“无敌模式”照样在Proxmox上可以使用([http://wiki.ubuntu.org.cn/Kvm%E6%95%99%E7%A8%8B#.E5.BF.AB.E7.85.A7.E6.A8.A1.E5.BC.8F.EF.BC.88-snapshot.EF.BC.89 无敌模式])。
基于这种判断,我们启动一台虚拟机,并查看虚拟机的进程:


 ps aux|grep 104
得到关于104虚拟机的调用命令:

/usr/bin/kvm -id 104 -chardev socket,id=qmp,path=/var/run/qemu-server/104.qmp,server,nowait -mon chardev=qmp,mode=control -vnc unix:/var/run/qemu-<br>server/104.vnc,x509,password -pidfile /var/run/qemu-server/104.pid -daemonize -name win7-test -smp sockets=2,cores=2 -nodefaults -boot menu=on -vga std -no-hpet -<br>cpu kvm64,hv_spinlocks=0xffff,hv_relaxed,+x2apic,+sep -k en-us -m 4048 -device piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2 -device usb-<br>tablet,id=tablet,bus=uhci.0,port=1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 -drive if=none,id=drive-ide0,media=cdrom,aio=native -device ide-<br>cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100 -drive file=/var/lib/vz/images/104/vm-104-disk-2.qcow2,if=none,id=drive-<br>ide1,format=qcow2,aio=native,cache=none -device ide-hd,bus=ide.0,unit=1,drive=drive-ide1,id=ide1 -drive file=/var/lib/vz/images/104/vm-104-disk-<br>1.qcow2,if=none,id=drive-virtio0,format=qcow2,aio=native,cache=none -device virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=201 -netdev <br>type=tap,id=net0,ifname=tap104i0,script=/var/lib/qemu-server/pve-bridge,vhost=on -device virtio-net-<br>pci,mac=52:FC:91:CC:D4:1D,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300 -rtc driftfix=slew,base=localtime -machine type=pc-i440fx-1.4 -global kvm-<br>pit.lost_tick_policy=discard1.




关闭虚拟机后,我们直接在Putty中输入上述命令,成功启动虚拟机。
现在进一步测试,在上述命令末尾加入-snapshot参数,运行命令启动虚拟机,如下所示:

/usr/bin/kvm -id 104 -chardev socket,id=qmp,path=/var/run/qemu-server/104.qmp,server,nowait -mon chardev=qmp,mode=control -vnc unix:/var/run/qemu-<br>server/104.vnc,x509,password -pidfile /var/run/qemu-server/104.pid -daemonize -name win7-test -smp sockets=2,cores=2 -nodefaults -boot menu=on -vga std -no-hpet -<br>cpu kvm64,hv_spinlocks=0xffff,hv_relaxed,+x2apic,+sep -k en-us -m 4048 -device piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2 -device usb-<br>tablet,id=tablet,bus=uhci.0,port=1 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3 -drive if=none,id=drive-ide0,media=cdrom,aio=native -device ide-<br>cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=100 -drive file=/var/lib/vz/images/104/vm-104-disk-2.qcow2,if=none,id=drive-<br>ide1,format=qcow2,aio=native,cache=none -device ide-hd,bus=ide.0,unit=1,drive=drive-ide1,id=ide1 -drive file=/var/lib/vz/images/104/vm-104-disk-<br>1.qcow2,if=none,id=drive-virtio0,format=qcow2,aio=native,cache=none -device virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=201 -netdev <br>type=tap,id=net0,ifname=tap104i0,script=/var/lib/qemu-server/pve-bridge,vhost=on -device virtio-net-<br>pci,mac=52:FC:91:CC:D4:1D,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300 -rtc driftfix=slew,base=localtime -machine type=pc-i440fx-1.4 -global kvm-<br>pit.lost_tick_policy=discard -snapshot1.




虚拟机成功启动后,新建一个txt文档,写入内容,然后在WEB控制台重启虚拟机,发现测试成功——新建的txt文档消失,系统回到初始状态,这证明-snapshot参数可行。


实验到这里,我们已经成功实现了无状态虚拟机功能,但是操作起来较为繁琐,于是我们可否进一步,使得直接在WEB控制台直接启动一台无状态虚拟机?


如果我们能把-snapshot写入到虚拟机配置文件中(Proxmox虚拟机配置文件在/etc/pve/qemu-server/vmid.conf),将能实现控制台启动无状态虚拟机。


官方wiki查找[http://pve.proxmox.com/wiki/Manual:_vm.conf vm.conf文档]、[http://pve.proxmox.com/wiki/Qm_manual Qm文档]各项参数,找到args选项:

<pre>qm set <vmid> -args string 

 Note: this option is for experts only. It allows you to pass 

 arbitrary arguments to kvm, for example: 

 args: -no-reboot -no-hpet</pre>1.2.3.4.5.6.7.




于是使用
 qm set 104 -args -snapshot
启动虚拟机后查看进程中已经有-snapshot选项,然后写入文档并重启操作发现:


'''1、虚拟机直接重启,状态保持——应该是内存没有释放,所有内存中资料还存在'''


'''2、虚拟机关机,然后启动,恢复初始状态——无状态虚拟机模式'''


使用cat /etc/pve/qemu-server/104.conf可以看到里面有一项
 args: -snapshot
以后需要无状态虚拟机,只需在虚拟机配置文件中添加这条参数即可。


===虚拟机自动挂载USB===
使用以下命令可以让ID为100的虚拟机自动挂载USB,USB代码使用info usbhost得知
 qm set 100 -usb0 host=064f:03e9


== 疑难解决 ==
针对proxmox出现的各种问题,整理出来的解决方案,不断补充中...
[[PVE虚拟机内部文件系统识别修改]]
[[PVE虚拟机中挂载外部USB设备]]
[[USB相关命令文件说明]]
=== 更改IP集群失效 ===
在一个Proxmox集群创建完毕后,因网络环境变更,所以需要修改每个节点的IP地址,如从原来的192.168.1.1网段改成10.10.1.1网段,这时重启将造成集群失效,表现如下几个方面:
1、web控制台只能看到一个节点虚拟机情况
2、无法创建、删除、修改虚拟机(集群文件系统成只读模式)
3、通过pvecm nodes命令看到集群成员状态都是 X 模式
4、无法通过pvecm delnode无法删除集群成员(在官网上询问后,发现可以先暂停pve-cluster服务,然后删除节点,经测试发现可行。)
……


通过分析,发现集群创建后,会有相应的认证机制,改IP导致了认证机制失效,所以群集失效。再次分析,正常集群页面服务器列表都是显示服务器名,而非IP地址,所以hosts设置肯定是问题原因之一,所以尝试如下操作:


1、停止pve-cluster服务
 /etc/init.d/pve-cluster stop
2、修改/etc/hosts中的IP地址
 nano /etc/hosts
找格式类似如下内容的,修改其IP(如将192.168.1.100改成10.10.1.100)
 192.168.1.100 anjing.me anjing pvelocalhost
3、将所有集群节点的hosts文件均做修改,然后删除known_hosts中所有的信息
 nano /root/.ssh/known_hosts
4、重启所有服务器(也可以先尝试重启cman和pve-cluster)
 init 6
5、如果不出意外,集群将恢复正常


=== 删除日志后无法访问WEB控制台 ===


产生原因:


1、/目录占用100%,然后重启发现内存报错


 EDAC sbridge:lost memory errors


2、再次启动,使用
 rm -fr /var/log/*
命令删除日志,然后使用
 lsof |grep delete
找到该路径下已经被删除的文件,再次
 kill -9 pid 
3、于是无法访问web界面


解决方法:


连外网,
 apt-get update&apt-get upgrade&apt-get dist-upgrade
不行


查看syslog
 vim /var/log/syslog
显示无法访问到
 /var/log/pveproxy/access.log
 mkdir pveproxy
目录后,
 vim access.log
文件,然后
 chmod -R 7777 pveproxy
(中房公司出现类似情况,有集群,还需恢复一个cluster文件夹以及其中含有文件rorosync.log,具体看syslog)


=== 集群节点失效 ===
创建好集群后,除了主节点K1可以访问外,其他节点K2/K3无法通过浏览器访问(但所有节点都显示绿色正常)。通过修改hosts文件、重启pve-cluster、cman服务器等操作均无效。系统日志显示:
<pre>Feb 12 16:17:10 K1 pveproxy[2993]: WARNING: proxy detected vanished client connection
Feb 12 16:17:40 K1 pveproxy[2995]: WARNING: proxy detected vanished client connection
Feb 12 16:18:10 K1 pveproxy[2995]: WARNING: proxy detected vanished client connection
Feb 12 16:18:40 K1 pveproxy[2994]: WARNING: proxy detected vanished client connection
Feb 12 16:19:10 K1 pveproxy[2995]: WARNING: proxy detected vanished client connection</pre>
经过搜索发现是认证的问题,执行下面命令可以使集群节点生效
<pre>
root@K1:/etc/pve/local# scp pve-ssl.* root@K2:$PWD/
pve-ssl.key 100% 1679 1.6KB/s 00:00 
pve-ssl.pem 100% 1359 1.3KB/s 00:00 
</pre>
=== 虚拟机无法启动 ===
加入HA的虚拟机一旦死机,无法启动;必须先将虚拟机踢出HA,启动后再加入HA。


=== 禁止虚拟机进入修复模式 ===
服务器意外断电时,win7系统虚拟机自动启动后可能会进入修复模式,导致虚拟机无法连接,可以在虚拟机cmd(管理员模式)中输入如下命令,解决这个问题:
<pre>bcdedit /set {default} bootstatuspolicy ignoreallfailures
bcdedit /set {current} recoveryenabled No</pre>


== Proxmox个性化定制 ==
定制proxmox个性化界面,如logo修改,默认中文语言等。


===批量修改脚本=== 

 <pre>#!/bin/sh 

 ###update logo### 

 wget http://jst-cn.com/proxmox_logo.png 

 rm -fr /usr/share/pve-manager/images/proxmox_logo.png 

 mv proxmox_logo.png /usr/share/pve-manager/images 

 ###update pvemanagerlib.js### 

 cd /usr/share/pve-manager/ext4 

 cp pvemanagerlib.js pvemanagerlib.js.bak 

 sed -i -e 's/proxmox.com/kinsuncloud.com/g' pvemanagerlib.js 

 sed -i -e 's/(English)/(Chinese)/g' pvemanagerlib.js 

 sed -i -e 's/Proxmox/KSCLOUD/g' pvemanagerlib.js 

 sed -i -e 's/This is not a valid DNS name/这不是一个有效的DNS名/g' pvemanagerlib.js 

 sed -i -e 's/No valid subscription/技术支持/g' pvemanagerlib.js 

 sed -i -e 's/You do not have a valid subscription for this server. Please visit/请访问/g' pvemanagerlib.js 

 sed -i -e 's/to get a list of available options/获取技术支持/g' pvemanagerlib.js 

 ###update issue### 

 sed -i -e 's/Proxmox/KSCLOUD/g' /etc/issue 

 sed -i -e 's/Proxmox/KSCLOUD/g' /boot/grub/grub.cfg 

 sed -i -e 's/Proxmox/KSCLOUD/g' /usr/bin/pvebanner 

 ###update Proxmox VE authentication server### 

 sed -i -e 's/Proxmox/KSCLOUD/g' /usr/share/perl5/PVE/Auth/Plugin.pm 

 sed -i -e 's/Proxmox/KSCLOUD/g' /usr/share/pve-manager/root/index.pl 

 sed -i -e 's/Proxmox/KSCLOUD/g' /usr/share/doc/pve-manager/aplinfo.dat 

 ###title### 

 sed -i -e 's/Proxmox/KSCLOUD/g' /usr/bin/pveproxy 

 </pre>1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.34.35.36.37.38.39.40.41.42.43.44.45.46.47.48.49.50.51.52.53.




===弹出对话框删除===
删除/usr/share/pve-manager/ext4/pvemanagerlib.js文件第110行和第452行
<pre>noSubKeyHtml: '请访问 <a target="_blank" href="http://www.fucloud.com/products/proxmox-ve/subscription-service-plans">www.fucloud.com</a> 获取技术支持.',</pre>

<pre>if (data.status !== 'Active') { 

               Ext.Msg.show({ 

                title: '技术支持', 

                icon: Ext.Msg.WARNING, 

                msg: PVE.Utils.noSubKeyHtml, 

                buttons: Ext.Msg.OK, 

                callback: function(btn) { 

                    if (btn !== 'ok') { 

                     return; 

                    } 

                    orig_cmd(); 

                } 

               }); 

           } else { 

               orig_cmd(); 

           } 

 </pre>1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.


===删除权限说明=== 

 删除/usr/share/pve-manager/ext4/pvemanagerlib.js文件第20785行开始的代码 

 <pre>{ 

     xtype: 'pveRoleView', 

     title: gettext('Roles'), 

     itemId: 'roles' 

 },   

 </pre>1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.






推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

本文链接:https://hqyman.cn/post/6191.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

分享到:
打赏





休息一下~~


« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

请先 登录 再评论,若不是会员请先 注册

您的IP地址是: