赞
踩
Proxmox VE(Proxmox Virtual Environment,通常简称为 PVE、Proxmox、Proxmox VE)是一个开源的服务器虚拟化环境 Linux 发行版。Proxmox VE 基于 Debian,使用基于 Ubuntu 的定制内核,包含安装程序、网页控制台和命令行工具,并且向第三方工具提供了 REST API。Proxmox VE 支持两类虚拟化技术:基于容器的 LXC(自 4.0 版开始,3.4 版及以前使用 OpenVZ 技术)和硬件抽象层全虚拟化的 KVM1。
进入Proxmox Virtual Environment官网下载新版ISO镜像文件,官网提供直接下载和BT下载两种方式,直接下载比较慢时可以选择BT下载提高下载速度。
Rufus 是一款格式化和创建 USB 启动盘的辅助工具。它适合以下环境:
- 需要将可引导 ISO (Windows、Linux、UEFI 等) 刻录到 USB 安装媒介的情况
- 需要处理未安装操作系统的设备的情况
- 需要在 DOS 环境下刷写 BIOS 或其他固件的情况
- 需要运行低级工具的情况
Zerotier是一款免费的多平台内网穿透工具,可以简单、方便、快速地实现异地组网功能。在设备都拥有公网IPv6地址时,可以实现低时延、无损带宽的异地内网直连。
# 下载并运行安装Zerotier软件包,这里默认已安装了curl和gnupg软件包
curl -s https://install.zerotier.com/ | bash
# 开启ZerotierOne服务
systemctl start zerotier-one
# 设置为开机自启动
systemctl enable zerotier-one
# 加入你的Zerotier网络,此处113fXXXXX为你的Zerotier网络id
zerotier-cli join 113fXXXXX
由于前面将Zerotier网络的控制权限设置为了私有的,这里你需要进入Zerotier的官网对该终端进行授权。在列表中找到新加入的终端在将前面的单选框选中即可。
Proxmox VE系统安装完成后,在数据中心-存储中可以看见两个存储模块local和local-lvm,注意两个存储模块的功能是不一样的,区别如下:
注意如果你只有一块硬盘,一定不能删除local-lvm。不知什么时候,网上有很多教程一安装完系统就教你把local-lvm存储删除掉并合并到根目录所在的lv卷里,缺少local-lvm存储对于只有一块硬盘是无法创建虚拟机的,因为没法给虚拟机分配存储空间,且一旦这样操作想要恢复就很麻烦。
Proxmox VE默认使用LVM(Logical Volume Manager)的分区模式。LVM可以让分区变得弹性,可以随时随地的扩大和缩小分区大小,前提是该分区是LVM格式的4。LVM格式的分区需要在硬盘分区的时候进行设置。
# 使用lsblk查看分区情况 root@pve:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme1n1 259:0 0 476.9G 0 disk ├─nvme1n1p1 259:2 0 1007K 0 part ├─nvme1n1p2 259:3 0 1G 0 part /boot/efi └─nvme1n1p3 259:4 0 475.9G 0 part ├─pve-swap 253:2 0 8G 0 lvm [SWAP] ├─pve-root 253:3 0 96G 0 lvm / ├─pve-data_tmeta 253:4 0 3.6G 0 lvm └─pve-data_tdata 253:5 0 348.8G 0 lvm nvme0n1 259:1 0 1.9T 0 disk ├─nvme0n1p1 259:5 0 500G 0 part │ └─pve_vg-vm--101--disk--0 253:0 0 1000G 0 lvm ├─nvme0n1p2 259:6 0 500G 0 part │ └─pve_vg-vm--101--disk--0 253:0 0 1000G 0 lvm ├─nvme0n1p3 259:7 0 500G 0 part │ └─pve_vg-vm--101--disk--0 253:0 0 1000G 0 lvm └─nvme0n1p4 259:8 0 407.7G 0 part └─data-dir 253:1 0 200G 0 lvm # 使用cfdisk进行分区 cfdisk /dev/nvme0n1 Disk: /dev/nvme0n1 Size: 1.86 TiB, 2048408248320 bytes, 4000797360 sectors Label: gpt, identifier: 278342EF-FA85-5540-98B3-4C0B23D40824 Device Start End Sectors Size Type >> /dev/nvme0n1p1 2048 1048578047 1048576000 500G Linux LVM /dev/nvme0n1p2 1048578048 2097154047 1048576000 500G Linux LVM /dev/nvme0n1p3 2097154048 3145730047 1048576000 500G Linux LVM /dev/nvme0n1p4 3145730048 4000797326 855067279 407.7G Linux LVM ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ │ Partition UUID: ED9A759E-6824-6540-B940-93147A8DEA2E │ │ Partition type: Linux LVM (E6D6D379-F507-44C2-A23C-238F2A3DF928) │ │Filesystem UUID: jD6IVN-mfPf-0Pil-epLi-3zyV-w3KB-4ZvnNX │ │ Filesystem: LVM2_member │ └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ [ Delete ] [ Resize ] [ Quit ] [ Type ] [ Help ] [ Write ] [ Dump ] Quit program without writing changes # 进入以上界面后选择Type后选择Linux LVM 即可设置为LVM格式的分区
由于博主的硬盘已经完成相关的分区操作,需要对其余硬盘进行分区可以请参考博客LVM知识梳理和LVM详解。
由于安装时只能设置静态的IP地址,因而PVE没有能力自动获取到公网IPv6地址。按博客proxmox7(pve7)获取公网ipv6地址5提供的方法设置后重启即可获取到公网ipv6地址,当然前提是你的路由器开启了相关功能。
# 修改文件/etc/sysctl.conf
net.ipv6.conf.all.accept_ra=2
net.ipv6.conf.default.accept_ra=2
net.ipv6.conf.vmbr0.accept_ra=2
net.ipv6.conf.all.autoconf=1
net.ipv6.conf.default.autoconf=1
net.ipv6.conf.vmbr0.autoconf=1
#修改保存后重启
root@pve:~# reboot
为了方便后续安装OpenWRT实现软路由的功能,需提前开启硬件直通功能,同时还要满足后续为黑群晖实现使用集成显卡软解的需要。开启硬件直通需要主板和CPU支持虚拟化,需提前在BIOS中开启VT-x和VT-d。
1.更改并更新grub6
#更改grub
root@pve: vim /etc/default/grub
#intel的的CPU这样写
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on pcie_acs_override=downstream video=efifb:off,vesafb:off"
#amd的CPU这样写
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on pcie_acs_override=downstream video=efifb:off,vesafb:off"
# 更改完成后,更新grub
root@pve: update-grub
2.更改内核参数
root@pve: vim /etc/modules
#加入以下几行
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
#保存更改后,重启
root@pve: reboot
在硬件直通后发现有一块nvme的m.2接口的固态硬盘总是开机几分钟后就消失不见了。关闭硬件直通后发现该硬盘又出现了。最后定位问题是系统盘和该硬盘使用了相同的通道开启硬件直通后该硬盘被屏蔽掉了。为了解决这个问题必须对PVE硬件直通进行强制IOMMU分组。
参考博客PVE硬件直通之强制IOMMU分组7中的方法发现我的硬件并不支持PCIe访问控制服务(ACS)8只能进行强制更新Linux系统内核来解决这个问题。下载该博主编译好的内核pve-kernel 6.1.6。下载后使用scp命令上传至pve系统中,解压、更新。
#解压
root@pve:~$ unzip pve-kernel-6.1.6.zip
# 更新内核
root@pve:~$ dpkg -i *.deb
# 更新完后重启系统
root@pve:~$ reboot
进入openwrt官网下载X86系统找到img镜像链接,使用wget命令进行下载
# 由于服务器在国外下载速度很慢
root@pve:$ wget https://downloads.openwrt.org/releases/22.03.5/targets/x86/generic/openwrt-22.03.5-x86-generic-generic-squashfs-combined-efi.img.gz
# 解压
root@pve:$ gzip -d penwrt-22.03.5-x86-generic-generic-squashfs-combined-efi.img.gz
创建一个虚拟机建议 双核 1GB内存,不添加磁盘后续通过命令行导入固件。
# 导入openwrt固件,此处103为刚创建的虚拟机VM ID
root@pve:$ qm disk import 103 XXX.img local-lvm
OpenWRT启动后可以通过PVE管理页面中的控制台进入shell终端界面,更改openwrt的网络参数。
# 网络接口配置文件 root@OpenWrt:~$ vim /etc/config/network config interface 'loopback' option device 'lo' option proto 'static' option ipaddr '127.0.0.1' option netmask '255.0.0.0' config globals 'globals' option ula_prefix 'fd8d:303f:1976::/48' config interface 'lan' option device 'br-lan' option proto 'static' option ipaddr '192.168.20.1' option netmask '255.255.255.0' option ip6assign '60' config interface 'wan1' option proto 'pppoe' #使用拨号上网 option device 'eth1' #接口 option username '0X520XXXXXXXX' #宽带账号 option password '123456' #宽带密码 option ipv6 'auto' #自动设置ipv6 config interface 'wan' option proto 'dhcp' #使用DHCP协议自动获取ip上网 option device 'eth0' #接口 config interface 'wan_6' #配置wan口获取ipv6 option proto 'dhcpv6' option device '@wan' option reqaddress 'try' option reqprefix 'auto'
为了方便远程访问需安装Zerotier进行内网穿透。9
# 更新镜像源 root@OpenWrt:~$ opkg update # 安装Zerotier root@OpenWrt:~$ opkg install zerotier #需要通过网页配置Zerotier可以在https://op.supes.top/packages/下载luci-app-zerotier.ipk包 #官方不提供Zerotier的luci的可视化包 #修改Zerotier的配置文件 root@OpenWrt:~$ vim etc/config/zerotier option enabled '1' #将此次修改为1 list join '填写第二步的网络id' #修改完成后,提交修改并重启服务 root@OpenWrt:~$ uci commit zerotier root@OpenWrt:~$ /etc/init.d/zerotier restart # 查看连接情况 root@OpenWrt:~$zerotier-cli status
为了让不在家时也能通过zerotierf访问家中设备需添加添加openwrt接口配置防火墙。
完成后还需要进入zerotier官网配置路由。
为了防止Zerotier故障后完全访问不了家中设备,需要另外一层保险,我这采用脚本将OpenWRT获取到的公网ipv6发送到我的个人邮箱中,保证远程访问的可靠性。此处参考博客Openwrt使用mutt和msmtp实现发送邮件功能10。
# 安装msmtp服务和mutt
root@OpenWrt:~$ opkg update
root@OpenWrt:~$ opkg install msmtp
root@OpenWrt:~$ opkg install mutt
2.配置msmtp,修改配置文件/etc/msmtprc
# Example for a system wide configuration file # A system wide configuration file is optional. # If it exists, it usually defines a default account. # This allows msmtp to be used like /usr/sbin/sendmail. account default # SMTP服务器网址 host smtp.189.cn auth on # 邮箱账号和密码 user XXXXX@189.cn password XXXXXXXX # Use TLS on port 465 port 465 tls on tls_starttls off tls_certcheck off # Construct envelope-from addresses of the form "user@oursite.example" from XXXXXXXX@189.cn # Syslog logging with facility LOG_MAIL instead of the default LOG_USER syslog LOG_MAIL
set from="XXXXX@189.cn"
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="邮件显示来件人名"
set editor="vim"
echo "内容" | mutt -s "标题" xxxx@163.com #收件人邮箱地址
#!/bin/sh #获取旧的ip地址 last=$(cat /root/.autoip/lastip) #获取新的ip地址 此处监测网络连接为pppoe-wan1 curr=$(ip -6 addr show dev pppoe-wan1 | awk '/dynamic / {print $2}' | cut -d/ -f1) #对比 if [ "$last" != "$curr" ]; then { echo "通知时间:`date '+%Y-%m-%d %H:%M:%S'`"; echo "" echo "WAN口的IPv6地址:" echo "$(ip -6 addr show dev pppoe-wan1 | awk '/dynamic / {print $2}' | cut -d/ -f1)" echo "br-lan口的IPv6地址" echo "$(ip -6 addr show dev br-lan | awk '/dynamic / {print $2}' | cut -d/ -f1)" echo "" } | mutt XXXX@foxmail.com -s "【OpenWRT】IP地址变动通知" echo $curr > /root/.autoip/lastip fi
# 在/etc/crontabs/root中加入如下内容,这里表示每5分中运行一次脚本/root/.autoip/autoip.sh
5 * * * * /root/.autoip/autoip.sh
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。