群晖NAS非官方入门手册 篇十三:今夜来谈群晖---缓存、NAS和SSD那些事
创作立场声明:本文前后花了一周时间,如有疏漏或谬误,敬请在讨论区中指正。
上文我曾说过准备写一篇群晖NAS缓存方面的教程。在讨论群晖NAS的缓存特性之前,先来看一些说法,大家能识别出其中的常见谬误吗?
SSD就是缓存。
增加了缓存,NAS的速度立马就会提高。
只有带M.2插槽的NAS型号才支持缓存。
不带万兆网卡的型号,加了缓存都是浪费。
群晖的缓存是为存储空间加速的,而不是对硬盘加速。
缓存是NAS独有的技术。
缓存能够降低群晖NAS读写硬盘的噪音。
缓存(Cache)浅谈
缓存的英文名为Cache,所以也有音译为快取,不能不说,这个翻译更加完美,把音和意都传达出来了。缓存是一种经典(古老)而有效的技术,它的基本思想是以空间换时间。
简单地说,就是分析系统中的瓶颈,然后把最常用的数据(此处称为较热的数据)放在速度最高的存储介质中,不常用的数据则留在速度较慢的存储介质中。当下次要访问较热的数据时,则直接从高速存储介质中存取,这样就达到了牺牲部分高速存储空间,来换取提高速度的目的。
应用广泛的缓存
在计算机、NAS系统中,机械硬盘相对于内存、处理器等属于慢速存储设备,所以每当读写硬盘时,内存和CPU实际上处于等待硬盘完成任务的停工待料状态。此时硬盘就是系统的瓶颈。
改善的办法就是为硬盘增加缓存,比如用速度远比硬盘快的内存来作为缓存,把一些经常用到的数据或应用程序放在缓存中,下次需要访问或打开时,直接从缓存中调用,避免了去访问较低速的硬盘,自然就提高了系统的整体性能。
所以操作系统都是有缓存机制的,使用的就是速度极快的内存。当内存容量宽裕,且缓存机制有效的话,能直接观察到硬盘灯闪烁次数大大降低(表示对硬盘访问减少)。可惜,由于现在的某些操作系统越来越臃肿,一般用户可能因标配内存不大等原因,不一定能明显感受到缓存的作用。
从上面的例子中,可以看出,凡是存在较大速度差异的设备之间,都有可能使用缓存来解决瓶颈。所以,硬盘不一定总是充当被缓存的低速角色,它也能够作为其他设备的缓存。例如,打印机的速度是更慢的,那么就可以用硬盘为打印机做缓存,把打印任务队列存放在硬盘上,然后处理器就可以去继续其他的运算任务。不然的话,处理器就必须等待打印机返回一个打印完成的参数后,才能继续下一步任务,整个系统的效率都会被打印机拖累。
既然缓存能提升整体效率,那是不是缓存越大越好呢?不计成本的话,当然可以这样说。可惜,凡是速度高的设备,价格也会水涨船高,比如以单位容量计算,价格从高到低:内存>SSD>机械硬盘。所以,我们总是以适当容量的缓存(成本)来得到最大的效益(性能提升)。
硬盘的工作原理
简单分析一下,由于机械硬盘是盘片高速旋转,然后磁头沿径向移动,从而达到磁头能够访问到整个盘片的所有磁道、每条磁道的所有扇区中的数据。
例如,当我们要打开一个影视文件时,系统要通过文件名在硬盘的文件分配表中找到该文件的目录项,在目录项中查到该文件数据保存在硬盘的起始簇号(根据文件的大小,可能会分布在硬盘上多个不同簇中),然后将磁头移动到该簇的第一个扇区,来连续读取其中的数据;若文件大小超过了该簇的容量(即,一个文件必须有多个簇才能存得下),则会从文件分配表中找到下一个簇,然后重复以上的过程。
簇是操作系统为文件分配存储空间的最小单位,一个簇由多个扇区构成【1】。
对每一个存取文件的任务,操作系统都要经历:
在文件分配表中,查找该文件的目录记录;
根据目录,依次找到该文件的每一个簇;
存取该簇中每个扇区的数据;
重复第2步。直到遇到文件结束的标志。
对照上图想象一下,在这个过程中,盘片一直在高速旋转,磁头由悬臂带动也在不同的磁道之间来回穿梭(寻道)。
NAS中的瓶颈
先看几个常见的NAS应用情景吧:
团队利用群晖NAS进行协同办公,同一项目组的多位用户,在同一时间段,访问相对集中的一些文档、表格和数据库。
大量的家庭照片存放在群晖NAS中,家人用各自的手机或平板电脑来分享和欣赏。
你的NAS上存放了海量的影视、音乐等媒体内容,亲朋好友各自观看自己喜爱的节目,同时还有几个下载任务正在运行。
当同时访问NAS的用户、任务增加时,随着系统负载的上升,部分用户感觉到打开/保存文件的速度下降,甚至播放影片出现卡顿。
当NAS的用户较少、任务较轻时,硬盘能够快速地读取或者写入数据,给用户带来优良的体验。
而一旦对硬盘的读写请求任务超过了硬盘的最大传输速率,那么势必会有一部分任务必须排队等待了。对了,硬盘自己不也是有缓存吗?不过,区区64MB、256MB的缓存,面对当今以数TB计的大容量硬盘,显得有点捉襟见肘了。解决的办法就是在NAS中扩充SSD缓存了。
缓存的适用
由前述机械硬盘的工作原理可知,能让硬盘发挥最大读写速度的理想状况是:
磁头不动,在盘片高速旋转下,对同一磁道上的连续簇(扇区)进行读写。
日常使用中,大文件(比如电影、电视剧等内容)的存取就属于这种情况,我们称之为顺序读写。
反之,对硬盘读写速度最不利的状况是:
要存取的文件很多,而且多是不太大的文件(比如工作文档、照片、mp3音乐文件等)。这种情况我们称之为随机读写。
想象一下磁头跑到文件分配表去检索目录,然后再跑到相应的磁道去读写某一簇(及其中的扇区);而且对每一个小文件,都要重复上述过程。
虽然盘片旋转速度不变,但磁头要辛辛苦苦地频繁在各个磁道之间切换。毕竟磁头的机械运动,速度远远比不上内存/SSD的电子运动。
磁盘的碎片化也会降低硬盘的性能。一个刚格式化的新硬盘,最初写入文件时,都是连续存放的,这时的访问速度最理想。但随着使用时间的增长,会有各种拷贝、删除、修改操作,一个文件可能就会分散到不连续的簇中存放。
通常,缓存对随机读写的优化最有效,但对顺序读写则不那么明显。所以在群晖NAS中,有跳过顺序I/O的选项,遇到顺序读写时,直接访问硬盘,而不经过缓存。
对这一点,我的个人看法是:如果你安装的都是SMR叠瓦盘,由于它在大量写入时可能会降低性能,所以即使是顺序读写,我认为最好还是经过缓存吧。
缓存的机制
缓存处在机械硬盘和处理器/内存之间,在什么情况下,缓存能带来效率的明显提升呢?
一、读缓存
若将经常被使用的文件或程序放在缓存中,下次再访问时,直接从缓存调用,传输至处理器或内存,必然带来速度上的飞跃。
且慢,这里有几个关键字:
下次再访问:也就是说,缓存中的数据只有被多次读取时,才能实现一次缓存、多次使用的效益。若缓存中的数据不再被读取,则没有带来任何好处。例如缓存中有一张图片,被团队中多个成员打开查看,则从第二次访问开始,都不再从机械硬盘读取,而是直接从缓存来提供;若该图片只被打开一次,一定时间内再也没人访问了,则没有任何性能提升。
经常被使用:访问频率高的数据被我们称为热数据,那么孰冷孰热呢?这就涉及到了缓存的算法。因为缓存容量有限(通常比机械硬盘容量小得多),所以根据缓存的算法,必然要将冷数据淘汰,热数据保留。这是一个动态的过程,具体算法有很多,比如先进先出,或最久未用等等。
二、写缓存
遇到写入数据的操作时,系统先将数据写入到缓存中,然后处理器就可以进行其他运算任务。剩下的事情就是在系统调度下,缓存与硬盘之间的事情了,硬盘可以从容不迫地将数据写入到簇中,而不必拖累处理器苦苦等待。当有很多磁盘操作任务排队时,缓存的效果就更加明显。
三、命中率
缓存的效益可以用命中率来量化。
命中:可以直接通过缓存获取到需要的数据。
不命中:无法直接通过缓存获取到想要的数据,需要到硬盘上去访问。原因可能是由于缓存中根本不存在,或者缓存已经过期。
命中率=命中数/(命中数+不命中数)
简单地说,命中率=被加速的随机读写次数/所有随机读写数*100%。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。
为你的群晖添加缓存
群晖NAS型号众多,实现缓存的方法在硬件上是有一定差别的。所以事先要查看自己NAS的具体型号来选购SSD。
有些如DS918+、DS920+等型号,带两个M.2插槽,支持使用NVMe SSD固态盘来作为高速缓存,且不占用宝贵的盘位;而其他一些型号则没有这两个插槽,在多盘位情况下(比如6盘位),我们也可以利用SATA接口的SSD来建立缓存,代价就是被缓存占用的盘位(参见上图);更高端一些的型号,则是有PCIe 扩充插槽,我们可以选购群晖的扩展卡。
例如这款Synology E10M20-T1,就同时提供了一个万兆网口,和两个NVMe的SSD插槽,我们可以用来扩充缓存。
而这款M2D20则只有两个NVMe的SSD插槽,我们可以用来扩充缓存。以上两个扩展卡,均不含SSD(需另购)。
Synology SNV3000 系列专为系统缓存而构建,可在要求苛刻的全天候环境中提高随机 I/O 性能并减少延迟。可提供耐用缓存,具有 205,000/40,000 次以上的 4K 随机读/写 IOPS 和 500 TBW 耐用性评级,适用于多媒体后期制作和数据库应用程序。
群晖原厂的SSD价格不菲,大家也可以根据自己的预算和偏好,选择WD等大厂固态盘来扩充缓存。
两种接口都推荐一下吧。
关于在群晖中添加缓存的教程,参见上面卡片。
扩充缓存之后,随机读写、多用户访问、高并发任务等情况下,群晖NAS的响应和表现会更好更稳定。如今大容量SSD的价格逐渐下降,赶快为你的群晖NAS插上翅膀吧。
更进一步的,若对缓存的效果还不满意,能不能彻底抛弃机械硬盘,打造全固态的NAS呢?
参考资料
【注1】限于篇幅,文中的一些硬盘操作的概念和过程都做了简化处理,以方便读者理解。关于文件分配表、簇和扇区等概念,摘录一段更严谨的资料供参考:
扇区分簇管理
操作系统或应用程序在将数据写入一个磁盘文件时,必须在磁盘上找到可以使用的未用扇区。反过来要将数据从磁盘文件中读出时,也要在磁盘上找到已经储存了相应数据的有关扇区。要查找扇区必须知道扇区的地址,文件分配表FAT就是记录扇区地址的。
因为硬盘的扇区非常多,如果将每个扇区的地址都记录在文件分配表里,势必造成文件分配表体积庞大,查找时效率将会很低。为解决这个问题,采用了将扇区分组管理的方法。分组的过程称作扇区分簇,是由高级格式化程序在格式化磁盘时完成的。
扇区分簇以后,将每个簇的地址记录到文件分配表FAT里去。由于一个簇能包含很多扇区,所以文件分配表的体积减小了,查找的速度就提高了。
关于《群晖NAS非官方入门手册》达人专栏
《群晖NAS非官方入门手册》是作者Lifeisgood在张大妈首发的写作计划,以知识卡片的形式,在每篇教程分享群晖的关键技能。2018年至今,已坚持三年。Life君是本站黑群晖配置最高、白群晖闲置最多的NAS小白。从今年八月起,作者Life君在张大妈创建专属达人专栏----群晖NAS非官方入门手册。
若觉得本文对您有参考价值,请以关注、点赞、收藏、打赏、评论来支持作者,谢谢!
龙龙七
校验提示文案
呆萌的呆呆
校验提示文案
风吹小衩衩
校验提示文案
打遍天下奥特曼
校验提示文案
FreakGeek
校验提示文案
部川内酷
校验提示文案
每天游泳的鱼
校验提示文案
CooperPro
校验提示文案
24k双花红棍
校验提示文案
深渊猎手
校验提示文案
topsteve
校验提示文案
郭雨是只小白鼠
校验提示文案
MarshalEric
校验提示文案
augustin
校验提示文案
玲玲静静买
校验提示文案
glb1031
校验提示文案
109109109lf
校验提示文案
井苔君
校验提示文案
小众好物
校验提示文案
藏经阁扫地大叔
校验提示文案
WeizSun
校验提示文案
值友8819336584
校验提示文案
值友2672328649
校验提示文案
蒙古国海军上将
校验提示文案
金钰良缘
1、装系统前就可以把所有盘都插上去吗?还是先插3/4个HDD,等系统安装完毕在插固态盘?
2、装系统是不是先安装到SSD上,在插入HDD,这样的话SSD还能当缓存盘吗??
校验提示文案
msnadsl
校验提示文案
-胡胡胡-
校验提示文案
无敌炒饭
校验提示文案
深渊猎手
校验提示文案
verspofo
校验提示文案
PRCMEM
校验提示文案
Lifeisgood
校验提示文案
rainred
校验提示文案
关灯不打游戏机
校验提示文案
Lifeisgood
校验提示文案
兵临息下
校验提示文案
Lifeisgood
校验提示文案
Lifeisgood
校验提示文案
adzzchao
校验提示文案
嗯pauper懂的多
校验提示文案