-
Notifications
You must be signed in to change notification settings - Fork 228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
luci-app-zerotier 不应将运行时文件存放在 /etc
中
#363
Comments
这是预期行为,否则配置文件、设备信息、密钥等重启之后直接丢失。不知道哪种规模的 zerotier 网络可以造成“频繁读写”与“大量占用空间”。 |
“预期行为”这结论令人意外。 首先,我要解释一下为什么避免频繁写 flash 非常重要:
删除 |
我搜索了一些有关该问题的 issue。发现使用官方包默认配置的情况下时,使用自定义 moon 和 planet 的用户无法将 moon 和 planet 配置持久化。这确实是我没想到的,因为我并不使用 moon 和 planet。 不过我也并不认为我的反馈是无价值的。因为
官方库对于使用 moon 的指导也是将运行时目录持久化,并提供了自定义目录位置的选项。同时它还提供一个
|
zerotier 是用来内网穿透的工具,应该不用过多介绍。
在使用 luci-app-zerotier 的过程中,我发现它将运行时文件存放在
/etc/config/zero
中,导致 flash 被频繁读写、大量占用空间。研究代码发现是这两句将运行时文件的存储位置定义在了
/etc/config/zero
中:luci/applications/luci-app-zerotier/root/etc/init.d/zerotier
Lines 30 to 31 in 1f8af45
这里的
$config_path
变量虽然名为配置,但实际存储的内容主要为:各节点信息、与各节点通信的密钥、统计数据、PID 进程锁、PORT 端口锁。这其中的大多数据都是变动的,有的还会不断增加。因此并不适合持久化存储,尤其是在低配置的路由器上。
zerotier 官方软件包的服务项文件默认是将它们存放在
/var/lib/zerotier-one
里,也就是存储在 RAM 里。我追溯了一下这段代码,最早是 lean 添加上去的。我没有找到他做这个改动的原因,也许是为了调试?我也没有在代码中找到别处调用了这个路径。
此外这个服务项的另一个问题就是初始化服务时没有清理旧的运行时文件。
zerotier 官方在初始化时清理了
/var/lib/zerotier-one_sample_config
。我认为应当参考 zerotier 官方软件包的服务项文件 将这两句代码换为
其实最好是将整个
start_instance()
函数换成 zerotier 官方软件包的代码。那样不仅上述问题能够得到解决,还能够支持用户在/etc/config/zerotier
配置文件中自定义运行时文件的路径、端口等设置。The text was updated successfully, but these errors were encountered: