What's Proxmox VE
Proxmox Virtual Environment is an open source server
virtualization management solution based on QEMU/KVM and LXC. You can
manage virtual machines, containers, highly available clusters, storage
and networks with an integrated, easy-to-use web interface or via CLI.
Proxmox VE code is licensed under the GNU Affero General Public License,
version 3. The project is developed and maintained by Proxmox Server Solutions GmbH .
安装
Ref:
https://zhuanlan.zhihu.com/p/62084071
https://einverne.github.io/post/2020/03/proxmox-install-and-setup.html
安装 win10
Ref:
https://zhuanlan.zhihu.com/p/62492187
显卡直通
Ref:PVE下安装Windows10并直通核显、键盘鼠标、声卡等设备详细步骤
安装 linux
Ref:
https://post.smzdm.com/p/a78egn7o/
server
ubuntu--vg-ubuntu--lv
磁盘扩容
Ref:
https://serverfault.com/questions/953174/how-do-i-expand-the-roots-volume-size
First, you can use lvextend to extend the size of the
logical volume, to fill up the remaining space:
Now, you can resize the filesystem in that logical volume.
1 sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
Finally, you can see the end result:
安装qemu-guest-agent
参考https://pve.proxmox.com/wiki/Qemu-guest-agent
https://foxi.buduanwang.vip/virtualization/pve/530.html/
1 2 apt-get install qemu-guest-agent apt-get install spice-vdagent
然后打开 “数据中心->pve->VMname->选项->QEMU Guest
Agent”
Ref:
https://www.d3tt.com/view/239
omv 磁盘丢失
OMV 断电后,没有卸载文档,直接将磁盘从omv硬盘接口取下,重启后提示
磁盘丢失。
Ref: https://www.jianshu.com/p/5a78668b0670
Ref: https://zhuanlan.zhihu.com/p/357495418
omv decker
Ref: https://zhuanlan.zhihu.com/p/360126067
pve删除lvm扩容步骤
Ref:
https://www.jianshu.com/p/bdb83531c56d
https://wp.gxnas.com/10402.html
防火墙
Ref:
https://www.pianshen.com/article/72122018797/
https://foxi.buduanwang.vip/virtualization/pve/508.html/
SPICE远程连接
Ref:
https://i.opat.vip/738.html
Proxmox
VE直通硬盘(全盘映射方式)
Ref:
https://wangxingcs.com/2020/0227/1411/
Proxmox
VE web 界面添加硬件温度显示(CPU温度和硬盘温度都显示)
Ref:
https://www.sjrkhb.com/article/3.html
https://oswu.cc/?p=99
安装温度检测软件
CPU
及主板温度检测:lm-sensors
1 sudo apt-get install lm-sensors
安装完成后执行 sensors-detect
进行传感器探测,通常情况下 全部默认选择 yes 即可
探测完成后执行 sensors 测试传感器
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 $ sensors coretemp-isa-0000 Adapter: ISA adapter Package id 0: +25.0°C (high = +86.0°C, crit = +100.0°C) Core 0: +22.0°C (high = +86.0°C, crit = +100.0°C) Core 1: +21.0°C (high = +86.0°C, crit = +100.0°C) Core 2: +23.0°C (high = +86.0°C, crit = +100.0°C) Core 3: +25.0°C (high = +86.0°C, crit = +100.0°C) Core 4: +22.0°C (high = +86.0°C, crit = +100.0°C) Core 5: +21.0°C (high = +86.0°C, crit = +100.0°C) Core 6: +24.0°C (high = +86.0°C, crit = +100.0°C) Core 7: +22.0°C (high = +86.0°C, crit = +100.0°C) nvme-pci-0400 Adapter: PCI adapter Composite: +30.9°C (low = -273.1°C, high = +83.8°C) (crit = +84.8°C) Sensor 1: +30.9°C (low = -273.1°C, high = +65261.8°C) Sensor 2: +29.9°C (low = -273.1°C, high = +65261.8°C) acpitz-acpi-0 Adapter: ACPI interface temp1: +27.8°C (crit = +119.0°C) iwlwifi_1-virtual-0 Adapter: Virtual device temp1: N/A nvme-pci-0200 Adapter: PCI adapter Composite: +26.9°C (low = -273.1°C, high = +84.8°C) (crit = +84.8°C) Sensor 1: +26.9°C (low = -273.1°C, high = +65261.8°C) Sensor 2: +24.9°C (low = -273.1°C, high = +65261.8°C)
在如上输出中,“acpitz-acpi-0” 是主板温度,“coretemp-isa-0000” 是 CPU
温度。
硬盘温度检测:hddtemp
1 user@pve:~$ sudo apt install hddtemp
安装完成后执行 hddtemp /dev/sd? 测试传感器
1 2 3 4 user@pve:~$ sudo hddtemp /dev/sd?/dev/sda: WDC WD40EZRZ-00WN9B0: 29°C /dev/sdb: ADATA SP600: 26°C /dev/sdc: WD2500: 29°C /dev/sdd: ADATA SP900: 38°C
由于 PVE 的 web 服务以用户 www-data 身份运行,需要修改 hddtemp
的权限
1 user@pve:~$ sudo chmod +s /usr/sbin/hddtemp
编辑 PVE web 服务文件
Nodes.pm
编辑文件 /usr/share/perl5/PVE/API2/Nodes.pm,跳转到
my $dinfo = df('/', 1); 位置,编辑成如下所示
1 2 3 4 5 6 7 8 9 $res ->{pveversion} = PVE::pvecfg::package () . "/" . PVE::pvecfg::version_text(); $res ->{temperatures} = `sensors` ; $res ->{hdd_temperatures} = `hddtemp /dev/sd?` ; my $dinfo = df('/' , 1 );
pvemanagerlib.js
修改页面样式以完整显示数据
编辑文件
/usr/share/pve-manager/js/pvemanagerlib.js,跳转到
gettext('Status') + ': ' + zpool, 位置,编辑成如下所示
1 2 3 4 5 6 7 8 9 var win = Ext .create ('Ext.window.Window' , { modal : true , width : 800 , height : 500 , resizable : true , layout : 'fit' , title : gettext ('Status' ) + ': ' + zpool, items :[{
跳转到 widget.pveNodeStatus 位置,编辑成如下所示
1 2 3 4 5 6 7 8 extend : 'PVE.panel.StatusView' , alias : 'widget.pveNodeStatus' , height : 400 , bodyPadding : '20 15 20 15' , layout : {
两处 height 的值需按情况修改,每多一行数据增加
20
例如有 1 行 CPU 与主板温度数据、3 行硬盘温度数据(3 块硬盘),即为
480 与 380
添加显示内容
跳转到 PVE Manager Version 位置,编辑成如下所示
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 { itemId : 'version' , colspan : 2 , printBar : false , title : gettext ('PVE Manager Version' ), textField : 'pveversion' , value : '' }, { itemId : 'temperatures' , colspan : 2 , printBar : false , title : gettext ('Temperatures' ), textField : 'temperatures' , renderer : function (value ) { value = value.replace (/Â/g , '' ); let data = []; let cpus = value.matchAll (/^coretemp-isa-(\d{4})$\n.*?\n((?:Package|Core)[\s\S]*?^\n)+/gm ); for (const cpu of cpus) { let cpuNumber = parseInt (cpu[1 ], 10 ); data[cpuNumber] = { packages : [], cores : [] }; let packages = cpu[2 ].matchAll (/^Package id \d+:\s*([^°]+).*$/gm ); for (const package of packages) { data[cpuNumber]['packages' ].push (package[1 ]); } let cores = cpu[2 ].matchAll (/^Core \d+:\s*([^°]+).*$/gm ); for (const core of cores) { data[cpuNumber]['cores' ].push (core[1 ]); } } let output = '' ; for (const [i, cpu] of data.entries ()) { output += `CPU ${i} : ` ; if (cpu.packages .length > 0 ) { for (const packageTemp of cpu.packages ) { output += `${packageTemp} °C ` ; } } if (cpu.cores .length > 0 ) { output += '(' ; for (const coreTemp of cpu.cores ) { output += `${coreTemp} , ` ; } output = output.slice (0 , -2 ); output += ')°C' ; } output += ' | ' ; } let boardTemp = value.match (/^acpitz-acpi-\d+$\n.*?\n^temp1:\s*([^°]+).*$/m ); if (boardTemp.length > 0 ) { output += `Board: ${boardTemp[1 ]} °C | ` } output = output.slice (0 , -3 ); return output; } }, { itemId : 'hdd-temperatures' , colspan : 2 , printBar : false , title : gettext ('HDD Temperatures' ), textField : 'hdd_temperatures' , renderer : function (value ) { value = value.replace (/Â/g , '' ); return value.replace (/\n/g , '<br>' ) } } ],
其中处理数据的正则式与返回值可能需按实际情况进行修改
完成
执行 systemctl restart pveproxy 重启 PVE web 服务
在浏览器中清除 PVE
控制台的缓存 ,重新加载即可在节点概要显示温度信息
pve-temperatures