openwrt的openclash 开启后端口转发失效解决办法
DNS设置-添加第二DNS,下方添加走这个DNS的域名。
比如61.139.2.69
nas.szlnas.space
DNS设置-添加第二DNS,下方添加走这个DNS的域名。
比如61.139.2.69
nas.szlnas.space
脚本自动检测:一键给PVE增加温度和cpu频率显示,NVME,机械固态硬盘信息
理论上适合任何设备
自动适配传感器数据
自动检测NVME硬盘数量
自动检测机械,固态硬盘数量
自动检测CPU核心数量
微信截图_20231120165427.png
使用方法:
可以一键执行下面:
(curl -Lf -o /tmp/temp.sh https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh || curl -Lf -o /tmp/temp.sh https://ghproxy.com/https://raw.githubusercontent.com/a904055262/PVE-manager-status/main/showtempcpufreq.sh) && chmod +x /tmp/temp.sh && /tmp/temp.sh remod
没有显示功耗的,请执行下面的命令安装依赖,请确保安装成功,就是最后的一行的输出,必须为 “成功!” 才表示安装成功了。
apt update ; apt install linux-cpupower && modprobe msr && echo msr > /etc/modules-load.d/turbostat-msr.conf && chmod +s /usr/sbin/turbostat && echo 成功!
如果你已经用别人的脚本之类的修改过页面,请先用下面命令先回复官方设置之后,才可以运行本脚本:
apt update
apt install pve-manager proxmox-widget-toolkit --reinstall
rm -f /usr/share/perl5/PVE/API2/Nodes.pm*bak
rm -f /usr/share/pve-manager/js/pvemanagerlib.js*bak
rm -f /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js*bak
另外:每次pve升级之后都需要执行一次脚本,因为升级后PVE会自己还原文件
以上内容转自MJJ论坛:https://www.right.com.cn/forum/thread-6754687-1-1.html
1、设置网关为op的旁路由才能用应用。
2、可以再pve添加nv硬盘给他装应用。
3、数据盘单盘添加比较好,比整个sata控制器灵活。
4、每个应用都要分配储存池,qb之类的要先把容器里的downloads等目录,挂载truenas的实际路径,然后给与权限才能下载使用。
5、emby要先挂载媒体目录,没有可以新命名,点跟实际的储存目录挂载即可添加媒体库。
6、常用的NPT cn.pool.ntp.org
7、truenas 开启文件共享,设置用户组,设置用户,对方挂载只需要输入 \ip\共享文件夹名称,不需要文件夹全部路径。弄了好久。
8、
挂载群晖的共享文件方法:mount -t cifs -o username=admin,password=831086,vers=2.0 //192.168.5.6/yingshi/dianshiju /mnt/test/dianshiju
没有SR-IOV前有用midclt call system.advanced.update '{"kernel_extra_options": "i915.force_probe=4692"}'
安装工具包 包括apt等root下 install-dev-tools,更改grub,路径:nano /etc/default/grub.d/truenas.cfg,然后更新 grub-mkconfig -o /boot/grub/grub.cfg
网上很多是错的
开发调优
配置优化
nas
581
浏览量
9
赞
2
链接
2024 年 12月
2024 年 12月
Johan6
2024 年 12月
概要
众所周知,NAS 中硬盘是耗电的主要来源,那么有什么办法能够降低功耗呢?
答案是肯定的,现在市面上常见的 NAS 系统都有提供硬盘休眠功能,接下来我将以 TrueNAS Scale为例,分享一下我的设置的方法、如何检测是否生效以及遇到的坑。
Storage → Disks → Edit → Power Management
image
参数说明:
HDD Standby:硬盘在几分钟未活动后进入休眠状态(Alaways On 永不休眠)
Advanced Power Management:我这边选择的是 Level 1, 直接让硬盘停转,以最低功耗运行;
检测是否生效
shell 脚本
编写脚本用于定时检测硬盘状态,主要是通过 hdparm -C /dev/sda 这个命令来判断硬盘当前状态
standby:代表硬盘进入休眠状态
active/idle:代表硬盘处于活跃/空闲状态,未休眠
disk_monitor.sh
LOG_DIR="/root/disk_monitor"
mkdir -p $LOG_DIR
STATS_FILE="$LOG_DIR/spindown_stats.txt"
DEBUG_FILE="$LOG_DIR/spindown_debug.log"
DISKS=("/dev/sda" "/dev/sdb")
declare -A last_state
declare -A standby_count
declare -A active_count
for disk in "${DISKS[@]}"; do
last_state[$disk]="unknown"
standby_count[$disk]=0
active_count[$disk]=0done
debug_log() {
echo "$(date '+%Y-%m-%d %H:%M:%S'): $1" >> $DEBUG_FILE}
update_stats() {
local current_time="$1"
local today=$(date '+%Y-%m-%d')
echo "=== 统计信息 ($current_time) ===" > $STATS_FILE
echo "今日日期: $today" >> $STATS_FILE
echo "监控开始时间: $(head -n 1 $DEBUG_FILE 2>/dev/null | cut -d':' -f1 || echo $current_time)" >> $STATS_FILE
echo "" >> $STATS_FILE
for disk in "${DISKS[@]}"; do
disk_name=$(basename $disk)
echo "硬盘 $disk_name:" >> $STATS_FILE
echo "- 进入休眠次数: ${standby_count[$disk]}" >> $STATS_FILE
echo "- 唤醒次数: ${active_count[$disk]}" >> $STATS_FILE
echo "" >> $STATS_FILE
done}
while true; do
current_time=$(date '+%Y-%m-%d %H:%M:%S')
for disk in "${DISKS[@]}"; do
disk_name=$(basename $disk)
current_state=$(hdparm -C $disk 2>/dev/null | grep "drive state" | awk '{print $NF}')
# 添加调试信息
debug_log "硬盘: $disk_name"
debug_log "当前状态: $current_state"
debug_log "上次状态: ${last_state[$disk]}"
if [ "${last_state[$disk]}" != "$current_state" ]; then
debug_log "状态发生变化"
if [ "$current_state" = "standby" ]; then
((standby_count[$disk]++))
debug_log "$disk_name 进入休眠,计数: ${standby_count[$disk]}"
elif [ "$current_state" = "active/idle" ]; then
((active_count[$disk]++))
debug_log "$disk_name 被唤醒,计数: ${active_count[$disk]}"
fi
# 更新状态前记录
debug_log "更新状态: ${last_state[$disk]} -> $current_state"
last_state[$disk]=$current_state
# 更新状态后验证
debug_log "更新后的状态: ${last_state[$disk]}"
update_stats "$current_time"
else
debug_log "状态未变化"
fi
debug_log "-------------------"
done
# 日志轮转(保持最近7天的日志)
find $LOG_DIR -name "spindown_debug.log.*" -mtime +7 -delete 2>/dev/null
if [ $(stat -c%s "$DEBUG_FILE" 2>/dev/null) -gt 1048576 ]; then # 1MB
mv $DEBUG_FILE "$DEBUG_FILE.$(date '+%Y%m%d')"
fi
sleep 300 # 每5分钟检查一次done
使用 tmux: TrueNAS SCALE 已经预装了 tmux,你可以使用它来管理会话。tmux 的功能与 screen 类似。
启动 tmux 会话 & 运行脚本:
tmux new -s disk_monitor
chmod 777 ./disk_monitor.sh
./disk_monitor.sh
分离会话:
# 按 Ctrl+B 然后按 D
列出会话:
tmux ls
重新连接到会话:
tmux attach -t disk_monitor
查看统计信息
cat /root/disk_monitor/spindown_stats.txt
cat /root/disk_monitor/spindown_debug.log
image
遇到的问题
硬盘被周期性唤醒
通过观察日志 & 功耗可以发现,NAS 在待机状态下,硬盘频繁的被唤醒;仔细观察日志发现,硬盘有规律的被唤醒,30min/次。
这样频繁的唤醒对机械硬盘是很不好的,如果硬盘坏了最后节省的电费还没有一块硬盘和数据来的值钱,于是我立即展开排查。
image
image
这样的有规律的一般是后台有定时任务在执行导致的,经过一顿排查,发现系统并没有定时任务会去读写 sda & sdb 这两块硬盘;最后在系统日志中发现了猫腻:
root@truenas[~/disk_monitor]# cat /var/log/syslog | grep "smartd"
Dec 3 00:23:10 truenas smartd[2631]: Device: /dev/sda [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 71 to 74
Dec 3 00:23:10 truenas smartd[2631]: Device: /dev/sda [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 29 to 26
Dec 3 00:53:11 truenas smartd[2631]: Device: /dev/sda [SAT], SMART Usage Attribute: 190 Airflow_Temperature_Cel changed from 74 to 75
Dec 3 00:53:11 truenas smartd[2631]: Device: /dev/sda [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 26 to 25
Dec 3 01:22:55 truenas smartd[2631]: Device: /dev/sdb [SAT], SMART Usage Attribute: 194 Temperature_Celsius changed from 240 to 250
smartd 每隔半小时会去检测硬盘的温度变化,这个操作会导致硬盘被唤醒;
于是我直接将 smartd 服务给关闭, 果不其然硬盘不再被周期性唤醒。
systemctl stop smartd
systemctl disable smartd
systemctl status smartd
Help: HDD Standby
Minutes of inactivity before the drive enters standby mode. Temperature monitoring is disabled for standby disks.
官方在硬盘休眠的帮助说到,在硬盘休眠时,温度监控是被禁用的,不确定为什么它还是会执行。
我尝试禁用特定硬盘的 S.M.A.R.T. ,但看起来它还是会被定期执行,我怀疑是: System Settings → Services → S.M.A.R.T.这边开启的原因。大家又遇到同样的问题可以尝试将 Power Mode 修改为非 Never 试看看。
参考:https://www.truenas.com/docs/scale/scaleuireference/systemsettings/services/smartservicesscreen/
image
image
总结
经过一番折腾,终于搞定了 TrueNAS Scale 下硬盘休眠,大家可以根据自己的需求设置硬盘休眠的策略;另外在设置好后,一定要注意观察硬盘是否有频繁被唤醒的情况,如果存在则需要及时排查原因,避免频繁的启停最终导致硬盘损坏,得不偿失!
若文中有描述不准确的地方还请各位指出,大家什么有问题或建议也可以在评论区里一起讨论~
Pass Wall2
解决DNS泄露
IPv4/IPv6双栈共存
去广告
规则管理
删除默认的所有规则,然后添加Reject规则、Direct规则、Proxy规则
Reject
域名:
geosite:category-ads-all
Direct
域名:
xn--ngstr-lra8j.com
geosite:private
geosite:cn
IP:
geoip:private
geoip:cn
Proxy
域名:
geosite:geolocation-!cn
规则顺序排列:
1、Reject规则
2、Direct规则
3、Proxy规则
注释
geosite:category-ads-all 去广告
xn--ngstr-lra8j.com 谷歌商店
geosite:private 内网地址
geosite:cn 国内域名
geoip:private 内网IP
geoip:cn 国内IP
geosite:geolocation-!cn 国外域名
高级设置
1.如果不使用UDP代理,就把UDP不转发端口改成-所有,即可
2.设置TCP转发端口为:仅网页 ,也就是仅允许代理80、443这两个端口
3.TCP代理方式可以改成TPROXY,也可以默认REDIRECT(勾选IPv6透明代理(TProxy)后,会自动变更为TPROXY)
4.如果你的节点支持IPv4/IPv6互通或者有IPv6的出口IP,可以勾选IPv6透明代理(TProxy),反之不勾选
Xray分流:[分流总节点]
1.Reject设置为:黑洞(丢弃)
2.Direct设置为:直连(绕过)
3.Proxy设置为:默认(代理)
3.*默认设置为:按照自己需求选择一个作为上网海淘的节点
4.域名解析策略设置为:AsIs (也就是跳过IP匹配、只匹配域名)
基本设置
1.远程 DNS 协议:DOH
2.勾选FakeDNS
注释:
1、远程DNS出站一定要设置为:远程(走代理),不然你走直连大概率是不通的,但是DOH走代理都是会增加延迟
2、勾选FakeDNS后,在Proxy规则内的域名,匹配上的会返回一个假IP作为DNS响应(例如198.18.0.0/16),最后将域名请求发送给节点服务器VPS在它的网络环境中进行解析IP
3、不在Proxy规则内的域名则会使用设置的CloudFlare远程DNS进行本地DNS解析真实IP,最后将这个真实IP发送给节点服务器VPS,而如果遇到解析出的是被污染的IP,由于开启了嗅探功能,会探测HTTP请求里的域名,所以就算本地解析出的IP是被污染也不影响
4、如何判断是走FakeDNS还是走远程DNS,电脑运行CMD窗口,输入nslookup youtube.com回车,输入nslookup ipleak.net回车