惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

W
WeLiveSecurity
The Last Watchdog
The Last Watchdog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
G
Google Developers Blog
博客园 - 叶小钗
雷峰网
雷峰网
人人都是产品经理
人人都是产品经理
博客园_首页
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 三生石上(FineUI控件)
Help Net Security
Help Net Security
Cloudbric
Cloudbric
AI
AI
N
News | PayPal Newsroom
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 【当耐特】
Forbes - Security
Forbes - Security
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
SecWiki News
SecWiki News
H
Heimdal Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
MyScale Blog
MyScale Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Proofpoint News Feed
S
Security @ Cisco Blogs
Google DeepMind News
Google DeepMind News
V
V2EX
大猫的无限游戏
大猫的无限游戏
阮一峰的网络日志
阮一峰的网络日志
S
Security Affairs
L
LangChain Blog
The Hacker News
The Hacker News
F
Full Disclosure
aimingoo的专栏
aimingoo的专栏
Hacker News - Newest:
Hacker News - Newest: "LLM"
腾讯CDC
Webroot Blog
Webroot Blog
A
About on SuperTechFans
H
Hacker News: Front Page
Cyberwarzone
Cyberwarzone
WordPress大学
WordPress大学
L
LINUX DO - 热门话题
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Attack and Defense Labs
Attack and Defense Labs
M
MIT News - Artificial intelligence

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS) 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 规范 git commit message 与自动化版本控制 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 简单了解 PKCS 规范 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 数字证书分类及怎么区分各类数字证书 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
NAS折腾记(5):群晖硬盘休眠设置与分析
2022-11-05 · via Razeen`s Blog

NAS需要硬盘休眠么?群晖怎么才能硬盘休眠? 这一期我们来聊聊硬盘休眠,同时分享一下我是怎么分析硬盘休眠的日志的,以及设置群晖系统休眠的。

这期我们从几个问题来入手。

硬盘休眠有什么好处?

众所周知,机械硬盘工作的时候,由电机带动盘片高速转动,磁头依靠盘片的高速旋转引起的空气动力效应悬浮在盘片上。

在不休眠的情况下,即使没有数据读写,为了保持较快的响应和磁头的悬浮,磁盘也会一直处于转动的状态,而且如果磁盘不支持降速的模式,磁盘都是以固定的转速在转动的。这时候的功率大概在8-10w.

而在停机或者休眠的时候,磁头回到停泊区,电机停止转动,消耗就很小了,功率大概在1w左右。

那么,可以看出,机械硬盘休眠,最大的好处应该就是省电。如果你的NAS上有5块硬盘,也就是说平均可以降低35w, 一天大概能省一度电。

当然,会有小伙伴说,这时候电机停止运转,磁头归位了,减少的电机/磁头的损耗,增加了硬盘的寿命,其实这个增加的还真不大,至少对我们来说,完全不用去操心的。反而是磁头的起停,它可能增加磁头损害的几率,这就有了如果频繁的休眠启动不如不休眠的说法。

其实影响磁盘寿命的更多的是温度,震动,磁场啥的。再说磁盘买来就是消耗的,其寿命我们就不用太过操心,买的时候买那种3年,5年质保的,平常数据多备份就好。

你需要硬盘休眠么?

我在平台搜索了一下,关于NAS硬盘休眠的文章不多,群晖休眠视频更是没看到。那么说明一个问题,硬盘休眠可能不那么重要。

这是为什么呢?因为很多情况下,我们的机械硬盘是得不到休眠的。在折腾NAS的时候,我们会在NAS上跑一些影音刮削软件,Docker或者PT保种之类的。而这些软件总有一些定时任务,网络连接,日志写入等等,总之在不停的对硬盘进行读写,硬盘基本上是没有休息时间的。

那么,如果你也是这种折腾的用户,恭喜你,这篇文章看到这里就可以了。

当然,如果你不折腾,装NAS就是来存储数据,平常也就使用一些群晖自家的图片管理软件,VideoStation,也不用保种,下完即删 的这种,需求比较简单,完全就可以考虑设置一下硬盘休眠。

群晖硬盘休眠设置

我先直接告诉大家怎么设置再讲分析,如果你按照我的设置方法不能生效,可以再看后面一节怎么分析。

第一步、关闭 DHCP

DHCP 即动态主机设置协议,简单理解就是为插入路由器的设备动态分配IP的。这个分配的IP是有一个租赁时间的,时间到了后客户端需要重新续租,这时候机器就被唤醒了。

其实,我们家里固定的一些设备, 可以设置一个固定IP就好了,完全不用DHCP。

于是,这里我们将DHCP关掉,给他一个固定的IP。

打开 “控制面板 > 网络 > 网络界面”, 选择"网络界面",选择下面的局域网连接,点击"编辑"。

点击 “IPv4”, 选择这个 “手动设置网络配置”。这里的IP你可以直接使用当前DHCP分配的这个IP,也可以自己设置一个,只要和局域网内其他设备不冲突就好。

如果你和我一样,有多个,就都修改一下。

然后确认保存。

第二步、日志写入内存

影响群晖休眠的还有第二个因素,就是日志。特别是黑群晖,如果有一些硬件的不兼容,系统会间歇或持续的输出错误日志,而这些日志是写入到磁盘的,这也就导致了磁盘无法休眠。

我这里可以将日志文件全部输出到内存中,将日志目录直接挂载到临时目录(临时目录默认挂载在内存中的)。

但这样还有一个问题,如果我们关机了,内存中的日志不就消失了么?所以这里我们又加了两个触发任务, 当开机的时候,将日志挂载到零时目录。当关机的时候,将日志拷贝到硬盘备份文件夹中。

打开 “控制面板 > 计划任务”, 点击"新增 > 触发的任务 > 用户自定义脚本"。

“常规"这里,任务名称写一下,注意这个账户需要用root, 不然没有权限操作后面的脚本。

“任务设置"这里,将下面的运行命令贴进去。

if [ ! -d "/var/logbak" ]; then
     mkdir /var/logbak
     cp -a -f /var/log/.  /var/logbak/
fi
cp -a -f /var/logbak/.  /tmp/log/
mount -B /tmp/log  /var/log

通知设置中,如果你配置了SMTP,可以和我一样勾选一下,填写邮箱,这样每次启动成功执行命令会给你发送一封邮件。

确认保存。

同样,再次点击"新增 > 触发的任务 > 用户自定义脚本”,这次"事件"我们选择关机,账户还是要用root。

“任务设置” 这里一样,把下面的脚本粘贴进去。

cp -a -f /tmp/log/.  /var/logbak

确认保存。

第三步、开启硬盘休眠

在"硬件和电源 > 硬盘休眠” 中, 启用这个休眠。

这里的时间可以设置到20分钟,甚至半小时,防止我们自己操作,频繁的去唤醒。

然后应用保存。

如果要更好的观察休眠,可以把 “启用硬盘休眠日志” 勾选上。

到这里我们的休眠设置就做完了。可以关闭页面,断开链接,等待一段时间,看看你的群晖是不是可以正常休眠了。

可以通过日志中心,搜索woke up来识别是否正常休眠。woke up是硬盘每次被唤醒就会输出这样一条日志。 如果频繁的woke up就还有问题。如果压根没woke up说明就没休眠。如果像我图片中这样,一天几次,基本都是我们使用的时候去唤醒的,那说明睡觉基本正常了。

当然,有朋友发现,即使做完了上面的三步,还是无法休眠。怎么办呢?这时候就要我们自己去分析一下是什么服务在读写硬盘了。

下面的一节我们就来看看硬盘不休眠的分析过程。

日志分析

开启休眠日志

在"硬件和电源 > 硬盘休眠" 中,启用硬盘休眠日志。

然后应用保存。

在"技术支持中心 > 技术支持服务",系统日志工具这里,启用系统休眠调试模式。

“遇到问题” 这里选择 “无法休眠”,应用即可。

然后把网页,SMB服务等客户端全部关了,等待一天。

分析日志

首先要在 “控制面板 > 终端机和SNMP” 中把SSH开启,并应用。

然后我们将硬盘休眠的日志拷贝下来。日志文件在 /var/log 目录下。如果你熟悉 scp 命令,可以直接通过命令拷贝。

我这里就使用WinSCP软件来做展示。

打开WinSCP软件,文件协议选择"SCP", 主机名填写群晖的IP地址,用户名密码就是群晖的登陆密码。 填好后点击登陆。

我们点击这个文件夹图标,选择打开目录。

输入 /var/log 直接跳转到该目录下面。

往下拖,找到这几个文件,拖到左边的文件夹中。

然后在左边的文件夹中找到这几个文件。用文本编辑器打开hibernationFull.log文件。

打开文件一看8000多行,怎么看呢?我们利用排除法。

我们先将下面这样的行排除。sync程序是内核将脏数据落盘,而这个脏数据一般是用户态操做的结果,不是主动触发的。

[226186.055466] ppid:6630(syno_hibernatio), pid:10639(sync), WRITE block 2213056 on dm-8 (32 sectors)

同样还有kthreadd这种内核调度的,如:

[226193.396532] ppid:2(kthreadd), pid:5644(jbd2/md0-8), WRITE block 4527896 on md0 (8 sectors)

然后就是排除非写入硬盘的。如下面这种带有 on tmpfs,on procon cgroup 的。

[226188.546357] ppid:1(systemd), pid:10668(synostgd-disk), dirtied inode 7354598 (temperature.tmp) on tmpfs
[226188.627252] ppid:1(systemd), pid:7698(irqbalance), dirtied inode 4026532190 (smp_affinity) on proc

接着我们就可以来分析剩下的内容了。如我这里的文件(为了展示类似的行我就删除了):

[226185.558637] ppid:1(systemd), pid:7729(synologrotated), dirtied subvolume 256 inode 31906 (.SMBXFERDB-shm) on dm-8
[226186.449574] ppid:1(systemd), pid:4292(EmbyServer), WRITE block 74240 on dm-8 (32 sectors)
[226188.534733] ata3: wake up successful, the reset fail can be ignored
[226188.543616] ata4: wake up from deepsleep, reset link now
[226191.559613] ata4: wake up successful, the reset fail can be ignored
[226193.396547] ppid:7729(synologrotated), pid:10646(logrotate), dirtied inode 401663 (logrotate.status.tmp) on md0
[226193.396551] ppid:1(systemd), pid:27845(syslog-ng), WRITE block 13236504 on md0 (8 sectors)
[226193.396555] ppid:1(systemd), pid:27845(syslog-ng), WRITE block 4647728 on md0 (8 sectors)
[226193.397410] ppid:7729(synologrotated), pid:10646(logrotate), WRITE block 13236552 on md0 (32 sectors)
[226193.598388] ppid:7729(synologrotated), pid:10646(logrotate), dirtied inode 404439 (?) on md0
[226193.598673] ppid:1(systemd), pid:27845(syslog-ng), dirtied inode 393912 (system) on md0
[226199.476489] ppid:11831(interfaceUpAdju), pid:12201(synonetdtool), dirtied inode 394012 (?) on md0
[226199.476496] ppid:1(systemd), pid:4292(EmbyServer), dirtied inode 31889 (embyserver.txt) on dm-8
[226199.476521] ppid:1(systemd), pid:4292(EmbyServer), WRITE block 8462896 on dm-8 (8 sectors)
uptime : [226225.649521]

就已这个来我们来分析一下。

  • logrotate / synologrotated :系统记录日志或日志轮换的进行,一般正常休眠应该不会工作,不用管。
  • syslog-ng: Nginx WEB页面/反向代理服务,这个可能是我中间访问了,不用管。
  • interfaceUpAdju: 接口变动,这个应该是我动路由器的时候,动到了网线,把网重新插拔了,一般不会有,不用管。
  • EmbyServer : 影音服务,感觉元凶找到了,应该是EmbyServer本身有一些定时任务,我们可以考虑去设置一下或者直接卸载==

我这里直接把EmbyServer卸载了==, 当然你也可以看看服务有没有定时任务的设置开关,去手动设置一下,如我这里的EmbyServer, 可以把这些时间延长。

经过将日志全部转移到内存,卸载了EmbyServer后,我的硬盘就可以正常休眠了。基本上不访问就不醒了。

如果你的经过一轮还不行,那就多观察几轮,找到最终唤醒磁盘的服务。

如果说,你喜欢折腾一些服务,或者挂个PT,开个博客,那把硬盘休眠直接关了吧。

好啦,这篇文章就到这里啦。感谢阅读。如果日志分析中,不知道那个进程是干什么的,可以在留言板上回复,我们一起来看看。

视频版本