群晖nas存储系统原理_今夜来谈群晖—-缓存、NAS和SSD那些事

群晖NAS非官方入门手册 篇十二:今夜不谈群晖—关于NAS、硬盘和数据的学习笔记_NAS存储_什么值得买​post.smzdm.com

566d3667fa443f9730373a114a15cf0d.png

上文我曾说过准备写一篇群晖NAS缓存方面的教程。在讨论群晖NAS的缓存特性之前,先来看一些说法,大家能识别出其中的常见谬误吗?

  • SSD就是缓存。
  • 增加了缓存,NAS的速度立马就会提高。
  • 只有带M.2插槽的NAS型号才支持缓存。
  • 不带万兆网卡的型号,加了缓存都是浪费。
  • 群晖的缓存是为存储空间加速的,而不是对硬盘加速。
  • 缓存是NAS独有的技术。
  • 缓存能够降低群晖NAS读写硬盘的噪音。

缓存(Cache)浅谈

缓存的英文名为Cache,所以也有音译为快取,不能不说,这个翻译更加完美,把音和意都传达出来了。缓存是一种经典(古老)而有效的技术,它的基本思想是以空间换时间。

简单地说,就是分析系统中的瓶颈,然后把最常用的数据(此处称为较热的数据)放在速度最高的存储介质中,不常用的数据则留在速度较慢的存储介质中。当下次要访问较热的数据时,则直接从高速存储介质中存取,这样就达到了牺牲部分高速存储空间,来换取提高速度的目的。

应用广泛的缓存

在计算机、NAS系统中,机械硬盘相对于内存、处理器等属于慢速存储设备,所以每当读写硬盘时,内存和CPU实际上处于等待硬盘完成任务的停工待料状态。此时硬盘就是系统的瓶颈。

改善的办法就是为硬盘增加缓存,比如用速度远比硬盘快的内存来作为缓存,把一些经常用到的数据或应用程序放在缓存中,下次需要访问或打开时,直接从缓存中调用,避免了去访问较低速的硬盘,自然就提高了系统的整体性能。

所以操作系统都是有缓存机制的,使用的就是速度极快的内存。当内存容量宽裕,且缓存机制有效的话,能直接观察到硬盘灯闪烁次数大大降低(表示对硬盘访问减少)。可惜,由于现在的某些操作系统越来越臃肿,一般用户可能因标配内存不大等原因,不一定能明显感受到缓存的作用。

从上面的例子中,可以看出,凡是存在较大速度差异的设备之间,都有可能使用缓存来解决瓶颈。所以,硬盘不一定总是充当被缓存的低速角色,它也能够作为其他设备的缓存。例如,打印机的速度是更慢的,那么就可以用硬盘为打印机做缓存,把打印任务队列存放在硬盘上,然后处理器就可以去继续其他的运算任务。不然的话,处理器就必须等待打印机返回一个打印完成的参数后,才能继续下一步任务,整个系统的效率都会被打印机拖累。

既然缓存能提升整体效率,那是不是缓存越大越好呢?不计成本的话,当然可以这样说。可惜,凡是速度高的设备,价格也会水涨船高,比如以单位容量计算,价格从高到低:内存>SSD>机械硬盘。所以,我们总是以适当容量的缓存(成本)来得到最大的效益(性能提升)。

硬盘的工作原理

b6135026a93ecfe319fa6b519a1059f8.png

简单分析一下,由于机械硬盘是盘片高速旋转,然后磁头沿径向移动,从而达到磁头能够访问到整个盘片的所有磁道、每条磁道的所有扇区中的数据。

例如,当我们要打开一个影视文件时,系统要通过文件名在硬盘的文件分配表中找到该文件的目录项,在目录项中查到该文件数据保存在硬盘的起始簇号(根据文件的大小,可能会分布在硬盘上多个不同簇中),然后将磁头移动到该簇的第一个扇区,来连续读取其中的数据;若文件大小超过了该簇的容量(即,一个文件必须有多个簇才能存得下),则会从文件分配表中找到下一个簇,然后重复以上的过程。

簇是操作系统为文件分配存储空间的最小单位,一个簇由多个扇区构成【1】。

对每一个存取文件的任务,操作系统都要经历:

  1. 在文件分配表中,查找该文件的目录记录;
  2. 根据目录,依次找到该文件的每一个簇;
  3. 存取该簇中每个扇区的数据;
  4. 重复第2步。直到遇到文件结束的标志。

对照上图想象一下,在这个过程中,盘片一直在高速旋转,磁头由悬臂带动也在不同的磁道之间来回穿梭(寻道)。

NAS中的瓶颈

先看几个常见的NAS应用情景吧:

  • 团队利用群晖NAS进行协同办公,同一项目组的多位用户,在同一时间段,访问相对集中的一些文档、表格和数据库。
  • 大量的家庭照片存放在群晖NAS中,家人用各自的手机或平板电脑来分享和欣赏。
  • 你的NAS上存放了海量的影视、音乐等媒体内容,亲朋好友各自观看自己喜爱的节目,同时还有几个下载任务正在运行。

当同时访问NAS的用户、任务增加时,随着系统负载的上升,部分用户感觉到打开/保存文件的速度下降,甚至播放影片出现卡顿。

当NAS的用户较少、任务较轻时,硬盘能够快速地读取或者写入数据,给用户带来优良的体验。

而一旦对硬盘的读写请求任务超过了硬盘的最大传输速率,那么势必会有一部分任务必须排队等待了。对了,硬盘自己不也是有缓存吗?不过,区区64MB、256MB的缓存,面对当今以数TB计的大容量硬盘,显得有点捉襟见肘了。解决的办法就是在NAS中扩充SSD缓存了。

缓存的适用

由前述机械硬盘的工作原理可知,能让硬盘发挥最大读写速度的理想状况是:

  • 磁头不动,在盘片高速旋转下,对同一磁道上的连续簇(扇区)进行读写。
  • 日常使用中,大文件(比如电影、电视剧等内容)的存取就属于这种情况,我们称之为顺序读写。

反之,对硬盘读写速度最不利的状况是:

  • 要存取的文件很多,而且多是不太大的文件(比如工作文档、照片、mp3音乐文件等)。这种情况我们称之为随机读写。
  • 想象一下磁头跑到文件分配表去检索目录,然后再跑到相应的磁道去读写某一簇(及其中的扇区);而且对每一个小文件,都要重复上述过程。
  • 虽然盘片旋转速度不变,但磁头要辛辛苦苦地频繁在各个磁道之间切换。毕竟磁头的机械运动,速度远远比不上内存/SSD的电子运动。

磁盘的碎片化也会降低硬盘的性能。一个刚格式化的新硬盘,最初写入文件时,都是连续存放的,这时的访问速度最理想。但随着使用时间的增长,会有各种拷贝、删除、修改操作,一个文件可能就会分散到不连续的簇中存放。

通常,缓存对随机读写的优化最有效,但对顺序读写则不那么明显。所以在群晖NAS中,有跳过顺序I/O的选项,遇到顺序读写时,直接访问硬盘,而不经过缓存。

对这一点,我的个人看法是:如果你安装的都是SMR叠瓦盘,由于它在大量写入时可能会降低性能,所以即使是顺序读写,我认为最好还是经过缓存吧。

缓存的机制

缓存处在机械硬盘和处理器/内存之间,在什么情况下,缓存能带来效率的明显提升呢?

一、读缓存

若将经常被使用的文件或程序放在缓存中,下次再访问时,直接从缓存调用,传输至处理器或内存,必然带来速度上的飞跃。

且慢,这里有几个关键字:

  • 下次再访问:也就是说,缓存中的数据只有被多次读取时,才能实现一次缓存、多次使用的效益。若缓存中的数据不再被读取,则没有带来任何好处。例如缓存中有一张图片,被团队中多个成员打开查看,则从第二次访问开始,都不再从机械硬盘读取,而是直接从缓存来提供;若该图片只被打开一次,一定时间内再也没人访问了,则没有任何性能提升。
  • 经常被使用:访问频率高的数据被我们称为热数据,那么孰冷孰热呢?这就涉及到了缓存的算法。因为缓存容量有限(通常比机械硬盘容量小得多),所以根据缓存的算法,必然要将冷数据淘汰,热数据保留。这是一个动态的过程,具体算法有很多,比如先进先出,或最久未用等等。

二、写缓存

遇到写入数据的操作时,系统先将数据写入到缓存中,然后处理器就可以进行其他运算任务。剩下的事情就是在系统调度下,缓存与硬盘之间的事情了,硬盘可以从容不迫地将数据写入到簇中,而不必拖累处理器苦苦等待。当有很多磁盘操作任务排队时,缓存的效果就更加明显。

三、命中率

缓存的效益可以用命中率来量化。

  • 命中:可以直接通过缓存获取到需要的数据。
  • 不命中:无法直接通过缓存获取到想要的数据,需要到硬盘上去访问。原因可能是由于缓存中根本不存在,或者缓存已经过期。
  • 命中率=命中数/(命中数+不命中数)

简单地说,命中率=被加速的随机读写次数/所有随机读写数*100%。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。

为你的群晖添加缓存

927702f4116ab12745eeb4a2d70b74ae.png

群晖NAS型号众多,实现缓存的方法在硬件上是有一定差别的。所以事先要查看自己NAS的具体型号来选购SSD。

有些如DS918+、DS920+等型号,带两个M.2插槽,支持使用NVMe SSD固态盘来作为高速缓存,且不占用宝贵的盘位;而其他一些型号则没有这两个插槽,在多盘位情况下(比如6盘位),我们也可以利用SATA接口的SSD来建立缓存,代价就是被缓存占用的盘位(参见上图);更高端一些的型号,则是有PCIe 扩充插槽,我们可以选购群晖的扩展卡。

6a83a9c67c8232de0fe2711b5bc97ac7.png

例如这款Synology E10M20-T1,就同时提供了一个万兆网口,和两个NVMe的SSD插槽,我们可以用来扩充缓存。

d65ecb923404673b61dd4335146f85bc.png

而这款M2D20则只有两个NVMe的SSD插槽,我们可以用来扩充缓存。以上两个扩展卡,均不含SSD(需另购)。

2f1816616dac9625b96ac43a5d530bf5.png

Synology SNV3000 系列专为系统缓存而构建,可在要求苛刻的全天候环境中提高随机 I/O 性能并减少延迟。可提供耐用缓存,具有 205,000/40,000 次以上的 4K 随机读/写 IOPS 和 500 TBW 耐用性评级,适用于多媒体后期制作和数据库应用程序。

群晖原厂的SSD价格不菲,大家也可以根据自己的预算和偏好,选择WD等大厂固态盘来扩充缓存。

两种接口都推荐一下吧。

男人的生产力工具 篇二百五十三:买了叠瓦盘天也不会塌,群晖NAS对纯SMR硬盘系统的改造优化_NAS存储_什么值得买​post.smzdm.com

bcaad3289b27a63cba0768d0bef62e02.png

关于在群晖中添加缓存的教程,参见上面卡片。男人的生产力工具 篇二百五十三:买了叠瓦盘天也不会塌,群晖NAS对纯SMR硬盘系统的改造优化_NAS存储_什么值得买关于在群晖中添加缓存的教程,参见上面卡片。

扩充缓存之后,随机读写、多用户访问、高并发任务等情况下,群晖NAS的响应和表现会更好更稳定。如今大容量SSD的价格逐渐下降,赶快为你的群晖NAS插上翅膀吧。

参考资料

【注1】限于篇幅,文中的一些硬盘操作的概念和过程都做了简化处理,以方便读者理解。关于文件分配表、簇和扇区等概念,摘录一段更严谨的资料供参考:

扇区分簇管理

操作系统或应用程序在将数据写入一个磁盘文件时,必须在磁盘上找到可以使用的未用扇区。反过来要将数据从磁盘文件中读出时,也要在磁盘上找到已经储存了相应数据的有关扇区。要查找扇区必须知道扇区的地址,文件分配表FAT就是记录扇区地址的。

因为硬盘的扇区非常多,如果将每个扇区的地址都记录在文件分配表里,势必造成文件分配表体积庞大,查找时效率将会很低。为解决这个问题,采用了将扇区分组管理的方法。分组的过程称作扇区分簇,是由高级格式化程序在格式化磁盘时完成的。

扇区分簇以后,将每个簇的地址记录到文件分配表FAT里去。由于一个簇能包含很多扇区,所以文件分配表的体积减小了,查找的速度就提高了。

关于《群晖NAS非官方入门手册》达人专栏

Life君的数码生活馆 篇十三:群晖NAS非官方入门手册-2020寒假特别版_NAS存储_什么值得买​post.smzdm.com

8ad8a8ba15cf5c9d7d286a76d73440a0.png

群晖NAS非官方入门手册 篇四:群晖NAS非官方入门手册(2020暑假特别版)_NAS存储_什么值得买​post.smzdm.com

7cf51ace49e5ab68a17fdc6e2927a276.png

《群晖NAS非官方入门手册》是作者Lifeisgood在张大妈首发的写作计划,以知识卡片的形式,在每篇教程分享群晖的关键技能。2018年至今,已坚持三年。Life君是本站黑群晖配置最高、白群晖闲置最多的NAS小白。从今年八月起,作者Life君在张大妈创建专属达人专栏—-群晖NAS非官方入门手册。

若觉得本文对您有参考价值,请以关注、点赞、收藏、打赏、评论来支持作者,谢谢!

© 版权声明
THE END
喜欢就支持一下吧
点赞15 分享