|
本帖最后由 hehe8899 于 2021-1-19 11:54 编辑
经过多方研究与摸索,找到一个pve下跑Openwrt的最佳方案!
先说下配置及需求(all in one):
CPU:10代G6400
渣主板昂达H410SD4
内存:杂牌4Gx2 2400
网卡:主板自带1个螃蟹千兆,加一块pci Intel双口千兆,还有一块螃蟹pci 8125B 2.5G,共有3个千兆及1个2.5G网口
硬盘:三块2.5作数据盘,板载M.2一块nvme固态做pve和虚拟机系统电源:ATX 90瓦直插电源
虚拟机服务应用需求:日常跑3-4个虚拟机:Openwrt为主路由加下载机;一个NAS作网盘及数据分享;一个DSM作影音视频媒体服务器。偶尔开几个虚拟机作编译或实验研究用。这其中Openwrt软路由是主要需求。
其他虚拟机服务需求没啥可说的,主要的Openwrt一般都是用qm来创建虚拟机应用,很方便,但是跑下来感觉系统损耗不小。这是因为qm的虚拟化会更高,导致系统损耗加大!当然用硬件直通会提高一些效能,但是有没有更好的方法呢?
有的,就是用pve里的lxc来跑Openwrt相。对于普通的虚拟机,lxc用的是容器技术,和docker容器不一样的是这个是完整的系统容器!
我们知道pve实际是Debian系统加虚拟机扩展,lxc就是Debian里的一个容器,lxc里跑一个新系统,可以看作宿主机的内核加上系统的扩展应用,本质非常接近裸装Debian系统本身。所以用lxc来跑Openwrt相当于用Debian的内核本身加上Openwrt的路由应用来跑软路由,这个效能是最佳的!
具体实施步骤:普通的Debian跑路由缺少一些东西,比如pppoe拨号、模拟硬件NAT等等,所以要在pve内核里打包进这些功能包,另外还需要对普通的pve做些配置调整,具体编译新内核及安装Openwrt的步骤本坛 skill7899 已给出方法并提供好编译的内核文件可以直接使用!看这里:
https://www.right.com.cn/forum/thread-4053183-1-1.html
提醒下,pve这种linux内核为主的服务系统,默认安装完是运行于高效能模式的,如果你用的CPU和我一样属于性能好的CPU(比如奔腾、I3以上的,这些U在这种应用场景已经算比较好的CPU了),特别建议在pve里开启内核节能睿频模式,温度功耗都会有大幅的改善。
具体方法已经有人做了工具,除了可以调整CPU的效能模式,还附带很多pve优化工具,特别推荐!看这里:
https://github.com/ivanhao/pvetools
我的这套配置按这个方法弄好后,日常跑3-4个虚拟机,一般待机工作情况功耗20瓦左右,扣除插入的两块网卡以及3个2.5寸硬盘,估计功耗也就10瓦左右!平时上上网,CPU负载几乎不动,偶尔下载大文件浏览在线高清视频,cpu占用都是个位数,nas下载大文件跑满2.5G带宽也只有10几%的占用,室温20度下cpu温度只有35度!拉满功耗会去到50瓦左右,性能杠杠的。对比下,原来用qm虚拟机跑同样的应用,日常应用,openwrt里CPU很容易上10%以上(配置为2个cpu,2G内存),下载大文件浏览在线高清视频会跑到20%以上,如果从nas下载文件跑满2.5G带宽,会飙到4、50%!
lxc跑openwrt目前发现的一些小问题:
一是openwrt里无法跑docker了,再有就是openwrt里的NFS也无法使用,原因是openwrt的路由等功能需要调用特殊的内核应用,在lxc创建时需要配置为无特权容器为“否”,而这样会造成一些系统内核服务上的冲突!
docker的解决办法很简单:新开一个LXC无特权为“是”的Debian或Ubuntu镜像装个docker完事。
Openwrt自带的NFS因为是系统级应用,在无特权容器为“否”的容器里是无法使用的,这类应用需要换成用户级别的应用才能使用。NFS用户级别的linux应用有NFS-ganesha、unfs3等,不过Openwrt因为属于linux嵌入式系统,很多普通的linux应用缺乏对应的资料库文件而无法使用,需要自己编写!
有没有简单的方法?有的,就是在openwrt上安装Entware扩展,而Entware扩展里已经有unfs3应用可以直接下载安装了!Entware本身就是属于用户级别应用的资料扩展库,而Entware已经有几千个应用可以直接使用,这样就完美的解决了lxc下Openwrt换用户级别应用的问题,稍微有点遗憾是unfs3的nfs版本目前最高只支持ver3,不过日常用用已经相当足够了。
安装Entware的方法看这里:
https://www.right.com.cn/forum/thread-260766-1-1.html
安装unfs3的具体办法:安装好Entware后,在Openwrt里执行如下命令:
opkg update
opkg install unfs3 portmap
安装成功后执行
vim /opt/etc/exports
输入需要挂载出去的NFS目录,比如:
/mnt/sdb1 192.168.16.0/255.255.255.0(rw,sync,insecure,no_root_squash)
前面的/mnt/sdb1改成你要挂载的目录,中间的192.168.16.0/255.255.255.0是可以允许访问的本地网段,括号里面的按我的写就好了。
退出保存后,输入以下命令关闭rpcbind服务(与unfs3需要的portmap有冲突),然后启动portmap与unfs3服务:
/etc/init.d/rpcbind disable
/etc/init.d/rpcbind stop
/opt/etc/init.d/S55portmap enable
/opt/etc/init.d/S55portmap start
/opt/etc/init.d/S56unfsd enable
/opt/etc/init.d/S56unfsd start
最后晒张这套系统在日常工作时的负载与温度图
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|