测试:12300T+纳斯Z690主板
graph TD
A["PVE宿主"]
A --> C["Win10"]
A --> D["NAS"]
A --> B["网络"]
A --> E["LXC..."]
C --> F["日常用"] --> FF["SRIOV核显"]
D --> G["相册"]
D --> H["影音"] --> FF["SRIOV核显"]
E --> I["SMB/NFS文件"]
B --> BB["Openwrt"] ---> MM["旁路由/网关"]
F --> I["SMB/NFS文件"]
H --> I["SMB/NFS文件"]
style A fill:#f9f,stroke:#333
style B fill:#fff,stroke:#333
style BB fill:#fff,stroke:#333
style MM fill:#fff,stroke:#333
style C fill:#dfd,stroke:#333
style D fill:#dfd,stroke:#333
style E fill:#dfd,stroke:#333
上图展示了整体架构设计,主要分为三层。用PVE提供的ZFS当NAS,切记对 pve 尽量少修改,提高系统稳定性,各种服务通过 lxc 提供。( 网络相关服务不在正式环境计划之内 )
12代CPU核显虚拟化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
vim /etc/default/grub
# 开启iommu分组和i915guc,在里面找到:GRUB_CMDLINE_LINUX_DEFAULT="quiet"项将其修改为
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt i915.enable_guc=3 i915.max_vfs=7"
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules
update-grub
update-initramfs -u -k all
reboot
# 不开启核显SR-IOV直通pcie设备
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt pcie_acs_override=downstream"
echo -e "vfio\nvfio_iommu_type1\nvfio_pci\nvfio_virqfd" | tee -a /etc/modules
update-grub
update-initramfs -u -k all
reboot
|

物理核显 VS SRIOV
|
优点 |
缺点 |
物理核显直通 |
1、性能强 |
|
2、支持物理显示输出(VGA/DP/HDMI/Type-C) |
|
|
3、兼容性好,不妨碍PVE升级。 |
宿主需要另外显卡 |
|
SRIOV虚拟核显直通 |
可分为多个VF虚拟显卡,给不同VM使用 |
1. 不支持HDMI输出 |
2. PVE升级需要注意 |
|
|
3. 部分流媒体解码/转码功能受限 |
|
|
通过命令删除虚拟机
1
2
3
4
5
6
7
8
9
10
11
12
|
root@pve:~# qm destroy 100
VM 100 is running - destroy failed
root@pve:~# qm stop 100
trying to acquire lock...
can't lock file '/var/lock/qemu-server/lock-100.conf' - got timeout
root@pve:~# rm /var/lock/qemu-server/lock-100.conf
root@pve:~# qm stop 100
root@pve:~# qm destroy 100
root@pve:~# qm list
root@pve:~# qm destroy 100 --purge
Configuration file 'nodes/pve/qemu-server/100.conf' does not exist
root@pve:~# ls /etc/pve/qemu-server/
|
PVE常用命令
更换IP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
# 修改IP地址
vim /etc/network/interfaces
# 修改主机hosts
vim /etc/hosts
# 重启网络服务
systemctl restart networking
# 重启pveproxy
systemctl restart pveproxy
# 重启后,查看issue即可变更为新的IP地址
cat /etc/issue
|
网络
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
|
root@pve:/hdd-pool# pveversion -v
proxmox-ve: 8.3.0 (running kernel: 6.8.12-4-pve)
pve-manager: 8.3.2 (running version: 8.3.2/3e76eec21c4a14a7)
proxmox-kernel-helper: 8.1.0
proxmox-kernel-6.8: 6.8.12-5
proxmox-kernel-6.8.12-5-pve-signed: 6.8.12-5
proxmox-kernel-6.8.12-4-pve-signed: 6.8.12-4
# 有4个网口
root@pve:/hdd-pool# cat /etc/network/interfaces
auto lo
iface lo inet loopback
iface enp3s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.3.200/24
gateway 192.168.3.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0
iface enp2s0 inet manual
iface enp4s0 inet manual
iface enp5s0 inet manual
# 安装网络工具
apt install net-tools
|
pve-swap
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
|
# 移除swap
root@pve:/hdd-pool# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root pve -wi-ao---- <944.87g
swap pve -wi-ao---- 8.00g
root@pve:/hdd-pool# swapoff -a
root@pve:/hdd-pool# lvremove /dev/pve/swap
Do you really want to remove active logical volume pve/swap? [y/n]: y
Logical volume "swap" successfully removed.
root@pve:/hdd-pool# lvresize -l +100%FREE /dev/pve/root
Size of logical volume pve/root changed from <944.87 GiB (241886 extents) to <952.87 GiB (243934 extents).
Logical volume pve/root successfully resized.
root@pve:/hdd-pool# resize2fs /dev/mapper/pve-root
resize2fs 1.47.0 (5-Feb-2023)
Filesystem at /dev/mapper/pve-root is mounted on /; on-line resizing required
old_desc_blocks = 119, new_desc_blocks = 120
The filesystem on /dev/mapper/pve-root is now 249788416 (4k) blocks long.
root@pve:/hdd-pool# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
root pve -wi-ao---- <952.87g
# 新增swap参考 #
cp /etc/fstab /etc/fstab.bak
vi /etc/fstab
#/dev/pve/swap none swap sw 0 0
dd if=/dev/zero of=/data/swapfile bs=1M count=16384
root@pve:/# chmod 0600 /data/swapfile
root@pve:/# mkswap /data/swapfile
Setting up swapspace version 1, size = 16 GiB (17179865088 bytes)
no label, UUID=f5768046-998c-4dfb-a60c-0ff6e73ee1a4
root@pve:/#
vi /etc/fstab
root@pve:/# vi /etc/fstab
root@pve:/# swapon -a
|
磁盘
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
|
# 卸载
umount /mnt/hd1
# 同步磁盘,避免数据未写完整
sync
# 确认磁盘未被使用
lsof | grep /dev/sda
# 休眠硬盘
hdparm -Y /dev/sda
# 安全断电移除
echo 1 > /sys/block/sda/device/delete
# 查看磁盘信息 (如果没有命令就安装: apt install smartmontools -y)
hdparm -I /dev/sda
# 或
smartctl -i /dev/sda
# 查看硬盘温度
hdparm -H /dev/sda
# 电源模式模式
hdparm -C /dev/sda
# 查看温度信息方法
hdparm -H /dev/sda
# 或
smartctl -A /dev/sda | grep -i temperature
# 禁用 smartmontools.service 避免频繁监控硬盘信息
root@pve:~# systemctl disable smartmontools.service<span style="background-color: rgba(237, 243, 236, 1);">Synchronizing state of smartmontools.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install disable smartmontools
Removed "/etc/systemd/system/smartd.service".
Removed "/etc/systemd/system/multi-user.target.wants/smartmontools.service"</span><span style="background-color: ;"># 自定义 smartd 检查频率
/dev/sda -a -s L/1/00:00:00
这里-a还是执行所有的e SMART 自检操作,-s L/1/00:00:00中的L表示每天(Daily),1表示每天检查一次,00:00:00表示在每天的午夜(0 点)开始检查。这样smartd就会在每天的午夜对/dev/sda这个硬盘进行一次 SMART 自检。</span>
|
ZFS
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
|
root@pve:~# zfs get compression,compressratio hdd-pool
NAME PROPERTY VALUE SOURCE
hdd-pool compression on local
hdd-pool compressratio 1.00x -
root@pve:~# zfs get all hdd-pool |grep dedup
hdd-pool dedup off default
root@pve:~# zfs set dedup=on hdd-pool
root@pve:~# zfs get all hdd-pool |grep dedup
hdd-pool dedup on local
# 移除子数据集(原来瞎创建了一个)
root@pve:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
hdd-pool 732K 14.4T 96K /hdd-pool
hdd-pool/vmdata 96K 14.4T 96K /hdd-pool/vmdata
root@pve:~# zfs unmount hdd-pool/vmdata
cannot unmount 'hdd-pool/vmdata': not currently mounted
root@pve:~# zfs unmount hdd-pool/vmdata
cannot unmount 'hdd-pool/vmdata': not currently mounted
root@pve:~# zfs destroy hdd-pool/vmdata
root@pve:~# zfs list
NAME USED AVAIL REFER MOUNTPOINT
hdd-pool 636K 14.4T 96K /hdd-pool
# 原来使用中的磁盘 /dev/sdb /dev/sdc
# 新增的大容量磁盘 /dev/sdd /dev/sde /dev/sdf
# 创建新的存储池
zpool create newZFS raidz1 /dev/sdd /dev/sde /dev/sdf
# 创建快照
zfs snapshot -r zfs@migrate
# 列出快照
zfs list -t snapshot
# 删除快照
# zfs destroy zfs@migrate
# 数据迁移
zfs send -R zfs@migrate | zfs receive -F newZFS
# 删除旧存储池
zpool destroy zfs
# 查看镜像列表
zfs list -t snapshot
# 下面的操作可以忽略, 有强迫症的要 zpool保持原来一直的需要再做一次
# 迁移到临时目录
zpool create -f oldzfs /dev/sdb /dev/sdc
zfs send -R newZFS@migrate | zfs receive -F oldzfs
zpool destroy newZFS
zpool create -f zfs raidz1 /dev/sdd /dev/sde /dev/sdf
zfs send -R oldzfs@migrate | zfs receive -F zfs
zpool destroy oldzfs
# 查看镜像列表
zfs list -t snapshot
zfs destroy zfs@migrate
|
win10专业版激活
1
2
3
4
5
6
7
8
9
10
11
12
13
|
# 以管理员身份运行CMD
slmgr.vbs /upk
slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX
slmgr /skms zh.us.to
slmgr /ato
# 激活企业版换成这个码,其他一样 slmgr /ipk NPPR9-FWDCX-D2C8J-H872K-2YT43
## 企业版如果还是不行,请尝试:
1:W269N-WFGWX-YVC9B-4J6C9-T83GX
2:NYW94-47Q7H-7X9TT-W7TXD-JTYPM
3:PBHCJ-Q2NYD-2PX34-T2TD6-233PK
4:DPH2V-TTNVB-4X9Q3-TJR4H-KHJW4
5:FWN7H-PF93Q-4GGP8-M8RF3-MDWWW
|
安装ImmortalWrt
编译ImmortalWrt
打开🔗https://firmware-selector.immortalwrt.org/?version=23.05.4&target=x86%2F64&id=generic
复制下面自要自定义添加的软件(根据自己需求添加软件即可,如果自己还想添加其他固件,在这个仓库搜索想要添加的固件https://mirrors.vsean.net/openwrt/releases/23.05.4/packages/x86_64/luci/?sort=size&order=desc
),粘贴到预安装的软件包后面,注意要有空格隔开。点击开始构建,等构架完成后下载。版本选择: COMBINED-EFI (SQUASHFS-COMBINED-EFI.IMG.GZ)
1
|
luci-i18n-firewall-zh-cn luci-i18n-filebrowser-zh-cn luci-app-argon-config luci-i18n-argon-config-zh-cn luci-i18n-opkg-zh-cn luci-i18n-ttyd-zh-cn luci-i18n-passwall-zh-cn luci-app-openclash luci-i18n-homeproxy-zh-cn openssh-sftp-server
|

导入PVE安装
前面有记录虚拟机创建,这里只简单记录一些重要笔记
1
2
3
4
5
6
7
8
|
# 导入镜像
qm importdisk 101 /var/lib/vz/template/iso/openwrt-23.05.5-x86-64-generic-squashfs-combined-efi.img local --format=qcow2
# 编辑网络
/etc/config/network
# 重启网络
/etc/init.d/network restart
|
——————–1. 网络拓扑图不一样,导致openwrt
配置不一样
2. 硬件不一样,导致Openwrt
配置不一样,比如有单网口,有多网口
3. 关于Openwrt
做旁路由、主路由存在争议,选自己合适的
4. Openwrt
版本不同,一些配置也不一样
5. 关于科学上网,openclash
配置更是五花八门,只需要记住一点,【备份⇒花式修改配置⇒保存⇒看看问题有没有解决⇒备份】(没办法,太难了,需要大量的网络知识储备,网路大佬直呼easy)
——————–### 设置旁路网关
- 在“网络”-“接口”的“常规设置”中给
Openwrt
的 LAN 网络接口设置一个和现有局域网同网段的静态 IP 地址,注意不要和现有设备的 IP 地址冲突。然后应用设置。
- 将 LAN 网络接口的“默认网关”设为主路由的 IP 地址。
- 在“高级设置”中找到“使用自定义的 DNS 服务器”设为主路由的 IP 地址。
- 在“DHCP 服务器”中勾选“忽略此接口”。
- 在“DHCP 服务器”-“IPv6 设置”中禁用所有IPv6服务。
- 点击“保存”以及“保存并应用”。
- 在“网络”-“防火墙”中,关闭“SYN-flood 防御”,点击“保存并应用”。
- 建议重启一次。

需要科学的网络设置
IP改成同一个网段内地址,路由器和DNS也改成Openwrt``IP

OpenWrt推荐阅读
推荐特别好的一篇文章:https://sspai.com/post/68511
关于openclash
的相关配置参考:https://github.com/Aethersailor/Custom_OpenClash_Rules/wiki/OpenClash-设置方案
https://easonyang.com/posts/transparent-proxy-in-router-gateway/
📎 参考文章