找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 42303|回复: 127

[openwrt(x86)] pve里LXC跑openwrt X86软路由的最佳方法(附nfs解决方案)

 火.. [复制链接]
本帖最后由 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

最后晒张这套系统在日常工作时的负载与温度图


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
看不懂的路过..........
回复

使用道具 举报

 楼主| | 显示全部楼层
非常稳定,lxc与pve内核的融合浑然天成,效能实在赞!
回复

使用道具 举报

本帖最后由 时光雕刻人生 于 2021-1-17 12:18 编辑

新开一个LXC无特权为“是”的Debian或Ubuntu镜像装个docker
Debian或Ubuntu怎么安装啊
回复

使用道具 举报

 楼主| | 显示全部楼层
时光雕刻人生 发表于 2021-1-17 12:16
新开一个LXC无特权为“是”的Debian或Ubuntu镜像装个docker
Debian或Ubuntu怎么安装啊

pve的CT模版里有很多lxc镜像,直接下载安装就可以了
回复

使用道具 举报

hehe8899 发表于 2021-1-17 20:55
pve的CT模版里有很多lxc镜像,直接下载安装就可以了

好的
谢谢!
回复

使用道具 举报

可以装个omv,在这个下面可以装docker
回复

使用道具 举报

又是一位技术大神,感谢分享,小白受教
回复

使用道具 举报

 楼主| | 显示全部楼层
yyljt 发表于 2021-1-17 23:56
可以装个omv,在这个下面可以装docker

效能比不上lxc里跑docker吧
回复

使用道具 举报

让我看看
回复

使用道具 举报

我来思考下
回复

使用道具 举报


我来思考下
回复

使用道具 举报

思考看看,谢谢楼主
回复

使用道具 举报

LXC的openwrt 能否PPPOE?
回复

使用道具 举报

 楼主| | 显示全部楼层
The_Catalyst 发表于 2021-1-23 12:02
LXC的openwrt 能否PPPOE?

没仔细看贴吧?安装相应的pve内核可破
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /1 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-5-16 13:58

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表