给 DS218+ 硬塞一块 SSD 读缓存:把 eSATA 口改造成内置 SATA 盘位
给 DS218+ 硬塞一块 SSD 读缓存:把 eSATA 口改造成内置 SATA 盘位
dong4j前言
DS218+ 是我用得最久的那台群晖,2 盘位、J3355、4G 内存(后来偷偷加到 10G),常年跑 Drive、Photos、几个轻量 Docker。用下来最大的槽点只有一个:磁盘太慢了。
这货用的是两块 4T HDD 组 SHR,日常浏览照片、翻 Drive 里的老文档,机械盘寻道声噼啪响,Photos 的缩略图滚动起来一顿一顿的。我本来想加块 SSD 做读缓存,结果发现:
DS218+ 在 DSM 里根本没有 SSD 缓存选项。
官方给的理由是只有 2 个盘位,”塞 SSD 就等于少一个数据盘”,所以直接把这个功能砍了。但我又不想换 920+ / 923+(那时候价格还没跳水)—— 总觉得这台机器其实硬件是够的,只是被官方软件故意阉割掉了。
然后我盯上了它屁股后面那个从来没用过的 eSATA 接口。
思路很简单:如果能把 eSATA 这个接口在系统里”改名”成一个内置 SATA 盘位,那 DSM 就会认为这台 NAS 有 3 个内置盘位,SSD 缓存选项理论上就会亮起来。
折腾了一晚上,方案跑通了。这篇把整个原理和具体参数都记一下,后面谁要是也想干同样的事,直接抄就行。
相关配置文件
群晖系统里有两份同名配置,必须两个都改,不然要么重启后被覆盖,要么运行时读错:
1 | /etc/synoinfo.conf # 运行时使用 |
我第一次只改了 /etc/synoinfo.conf,重启后一切正常。后来 DSM 推了个补丁更新,它顺手把 /etc.defaults/ 里的默认值回写回来,maxdisks 又变回 2 了,缓存配置也丢了,整个存储池直接进入”异常”状态。
所以一定要同时改两份,有备无患。
我关心的四个参数
打开这俩文件,里面其实有上千个参数,但跟盘位相关的就这四个:
1 | # 默认值(DS218+ 原厂) |
前两个好理解:maxdisks 是上限,support_ssd_cache 控制 DSM 里那个菜单项是否可见。
难理解的是 esataportcfg 和 internalportcfg —— 官方文档里压根没解释,但它俩是整件事情的核心。
位图的含义
这两个值虽然写成十六进制,但本质是位图(bitmap):每一个二进制位代表一个接口槽位,1 表示”这个位置上有个接口”,0 表示”没有”。
拿 DS218+ 默认值展开看:
| 参数 | 十六进制 | 二进制 | 含义 |
|---|---|---|---|
internalportcfg | 0x3 | 0b011 | 第 0、1 位是内置 SATA |
esataportcfg | 0x4 | 0b100 | 第 2 位是 eSATA |
也就是说,DS218+ 内部一共有 3 个物理 SATA 控制器通道:前两个分配给了盘位 1 和 2,第三个被引出到了背面那个 eSATA 接口。
这就是为什么这个改造在物理上可行 —— 它本来就是一个完整的 SATA 通道,只不过被系统打了”eSATA”的标签。
我的目标值
我想要的效果是:eSATA 那一位”挪”到内置 SATA 这边,总盘位数变 3:
| 参数 | 改前 | 改后 |
|---|---|---|
maxdisks | 2 | 3 |
esataportcfg | 0x4 | 0x0 |
internalportcfg | 0x3 | 0x7 |
support_ssd_cache | no | yes |
验算一下:0x7 = 0b111,正好是三个内置 SATA 位,eSATA 清零。数学对齐。
实际操作
第一步:SSH 进群晖改配置
DSM 默认 SSH 是关的,去控制面板 → 终端机和 SNMP 打开,然后:
1 | ssh admin@192.168.1.x |
两份配置文件都编辑一下:
1 | vi /etc/synoinfo.conf |
⚠️ 建议先备份一份:
cp /etc/synoinfo.conf /etc/synoinfo.conf.bak,改崩了好还原。
找到那四行,按上面的表格改成新值。
第二步:物理上接 SSD
改完别急着重启,先把 SSD 插到 eSATA 口上。
我用的是一个很便宜的 eSATA → 2.5 英寸 SATA 转接盒(某宝大概五六十块),里面塞了一块闲置的 256G MX500。注意:
- 用外接电源的那种转接盒,不要只靠 eSATA 供电,eSATA 本身没给盘供电的能力;
- 线材尽量短,长 eSATA 线容易不稳定,会出现盘时断时连。
第三步:重启
改完配置 + 接上盘之后:
1 | sudo reboot |
重启后登录 DSM,打开存储管理器,直接看 HDD/SSD 列表,能看到多出来一个”磁盘 3“。此时它被认成了一个内置盘,类型会是 SSD。
然后去存储管理器 → SSD 缓存,新建缓存的按钮应该已经可以点了 —— 选择读缓存、挂到你现有的存储池上、分配完整个 SSD,完事。
效果
缓存挂上之后,最直观的两个变化:
- Photos 里滚动浏览照片几乎不再卡顿,缩略图加载肉眼可见地快了一截;
- Drive 上经常打开的几个 Office 文档,二次访问基本秒开,不再听到”咔哒咔哒”的机械盘声。
缓存命中率我专门观察了一个月,稳定在 **60% ~ 75%**,对于”经常访问同一批热数据“的家用场景来说够用了。
踩坑记录
过程中翻过几次车,都值得记一下。
坑 1:只改了 /etc/synoinfo.conf
这个前面说过了 —— 一定要同时改 /etc.defaults/synoinfo.conf,不然 DSM 打一次大补丁就回原形,SSD 缓存会被强制卸载,严重的话还会让存储池进入”降级/异常”状态。
坑 2:support_ssd_cache 改了还是没生效
改完重启发现 DSM 里 SSD 缓存选项还是灰的。后来发现是我把 support_ssd_cache="yes" 写成了 support_ssd_cache=yes(没加引号)。这文件语法挺挑剔的,值两边必须有双引号,不然被当成非法值忽略掉。
坑 3:eSATA 线拔掉之后存储池异常
有一次我临时想把 eSATA 盒子搬到另一台机器上,直接把线拔了。结果回来重启 NAS,存储池直接进入”降级”状态 —— 因为系统现在把这块 SSD 当作内置盘,它”突然消失”等同于一块内置盘掉了。
解决办法:
- 禁用缓存后再拔:在 DSM 里先把 SSD 缓存”移除”,等它提示安全移除后再拔线;
- 如果已经拔了,冷启动时不要装回来,直接进 DSM 把那个”丢失的盘”从存储池里清掉,然后再重新分配缓存。
所以强烈建议这块 SSD 就长期待在机器旁边别动它,把 eSATA 盒子跟 NAS 一起用扎带绑到机柜里,当它不存在就行。
坑 4:DSM 大版本升级前别忘记检查
DSM 7.x 升级 7.1、7.2 这种大版本更新时,我都会提前把配置文件再核对一遍。经验上小版本不会动这个文件,但每次大版本更新之后,最好 ssh 上去 cat 一眼,有被覆盖就再改回来。
最后聊两句
这波操作本质上是在软件层面”告诉 DSM 我有 3 个盘位”,硬件 & 固件上没做任何破坏性改动,DSM 系统升级依然能走官方通道。但这毕竟不是官方支持的用法,风险要自己担:
- 如果这台 NAS 上存着不可替代的数据,务必先有异地备份再动手;
- 改完之后别把这事写进工单找群晖官方售后(笑);
- 我建议只加读缓存,不要加读写缓存——读写缓存一旦 SSD 出问题会直接丢数据,而 eSATA 这种接口稳定性本来就不如内置 SATA。
对了,后来 DS218+ 被我出掉换了 923+,这台 923+ 官方就原生支持 SSD 缓存,还带 NVMe M.2 槽,不用折腾这些奇技淫巧了。但那是另一篇文章的故事了。
参考:

















