Jump to content

关于缓存机制,问题与解决


Recommended Posts

一、否、是、优先、仅,四种缓存模式(机制)的注意事项

1、否,不缓存,直接读写阵列中的文件夹,此时搬运功能无效。

注意:

1)、如果想从是改成否,首先运行转运,保证缓存里没有要转移的文件,才可以改成否,否则,没有转出的文件就常驻缓存了,因为你直接改成否,搬运功能失效,是不会帮你把之前缓存里没来及转运的文件自动回写到阵列的!

2)、如果想从优先、仅改成否,首先要改成是,再运行转运,然后才能改成否,道理和上面一样,直接改了否,转运机制失效,就丢在缓存里了。

当然,丢在缓存里,不影响你对文件的读写调用,就是看着好不舒服,而且对那些appdate domains system isos特殊文件,系统会报错,此时缓存无法清空,等于缓存丢失了一部分空间。

2、是,准确的含义是:文件会最终保存在阵列磁盘,缓存只是中转,如果不手动转运,系统会在设定的时间,对缓存的文件进行回写,回写到指定的阵列硬盘,如果在自动回写前,缓存满了会报错,无法继续工作继续存入,因为此时没有到设置的转运开始时间,缓存满了也不会自动写入磁盘阵列,系统出错将无法工作。

3、优先,优先的含义是,文件只会存在于缓存中,所以你想设置优先,这个文件夹的容量就不能大于缓存盘整体的容量,设置后,这个文件夹就长驻缓存,超过缓存盘容量,多出的部分会存到阵列里。理论上你对这个文件夹的读写都是缓存盘的固态硬盘物理速度上,适合appdate domains system isos,还有一些你要实时编辑的文件。但!此时,除非你是在unraid内部调用(使用内部虚拟机、docker)这些设置了缓存优先的文件,调用速度会好过存在阵列盘上,因为大部分人的阵列盘是普通3.5机械硬盘,内部运行时读写速度没有做缓存的固态快。但是,如果你是通过外部终端共享读写这个文件,那你的速度还是要受限于unraid主机的网卡,交换机,你的终端的网卡。如果是千兆环境的话,那你设置了缓存优先,速度最高也只有120mb的网口实际速度,并不能跑出固态硬盘的读写速度,意义并不大,。结论:没有万兆网卡、光纤连接,对于smb文件共享,这个缓存的优先模式,甚至整个缓存盘机制,都是毫无意义的存在!

4、仅,和优先的含义一样,不同在于存满缓存以后,会停止工作,不会把多出的文件继续写到阵列磁盘里。

注意:选择仅之前,必须先选择成优先,再运行转运,让文件先转运到缓存后,再改成仅;直接从否、是,改成仅,转运机制此时默认关闭了,文件并不会移动到缓存。

 

基于上述四种缓存机制,大家遇到疑难问题时候,一定看看上面的注意事项,这个缓存的是否逻辑和我们的汉语语义逻辑并不一样!

 

二、unraid的缓存盘存在的意义

三种情况

1、如果你的unraid运行环境在万兆环境,缓存盘是有意义的,可以提高smb的文件共享读写速度。

2、如果你的unraid运行环境在千兆环境,对于smb的共享读写速度,没有实际意义,机械硬盘单盘读写速度完全满足千兆网络带宽。

3、如果你需要用unraid运行docker、虚拟机,那缓存盘是有意义的,效果相当于你把自己的主机从机械硬盘换成了固态硬盘,速度会提高不少,但是这样也不全是优点,毕竟缓存盘的容量有限,如果你设置缓存模式是:优先,如果虚拟机的硬盘设置不是raw,虚拟机存储超过缓存容量,超出部分,按照缓存规则,是有可能写到阵列的机械硬盘中的。而且设置缓存后,再更改不使用缓存,很大概率会出错,有些运行文件,将无法回写到阵列,留在缓存里,那真是不上不下,逼死强迫症。缓存盘同时还要作为阵列共享读写时的临时中转,使用频率高,难免崩坏,所以很多大神都是双缓存盘组成raid1,防止缓存崩坏带走虚拟机和docker。

 

三、不使用缓存盘,提高虚拟机、docker运行速度的配置

如果你的unraid运行环境是一个千兆网络,你还想运行虚拟机,不使用缓存盘也是可以的,可以在阵列中加入一个2.5固态硬盘,或有两个m2槽位的情况,直接把2.5固态或者1个m2指定为appdate domains system isos文件夹存储盘。

指定appdate domains system isos四个文件夹存在2.5固态或者m2就可以让虚拟机、docker运行在固态硬盘的速度上,当然实现这个还是离不开先有一个缓存盘(必须是四个文件夹将来存储的目标固态盘以外的固态!)

第一次启动docke、虚拟机组件,产生的四个文件夹不一定会正好生成在固态上,如果她们生成在机械硬盘上。你可以:

1、先停止阵列,设置一个缓存盘。

2、再启动后,把四个文件夹缓存机制改成优先,运行搬运,把四个文件夹先拉到缓存里。

3、更改四个文件夹缓存机制为是,存储位置选择固态硬盘盘符,再运行搬运,等四个文件夹回些到固态硬盘所在的阵列里,再把缓存机制改成否。

4、停止阵列,去掉缓存盘,产生新配置,再启动阵列。

这样操作,可以不使用缓存盘,你的虚拟机和docker也可以运行在固态硬盘里,相当于实现了固态硬盘直通给虚拟机和docer,这个固态硬盘除了存放虚拟机、docker,还可以存放一些需要实时读写的文件,这样设置,就不会被难懂的缓存逻辑整晕,也可以享受固态硬盘运行虚拟机和docker的高速。

 

…………………………………………………………………………………………………………………………

一些设置实例:

1、appdate domains system isos四个文件夹使用缓存,模式为仅,不想使用缓存,直接改成否,文件夹并没有直接写回指定阵列,而是留在了缓存里,并且系统智能的报错,提示四个文件夹不在设定位置,应对方法,就是从仅先改为是,让这些文件先从缓存回到阵列,然后才可以改成否。

截屏2022-12-17 17.39.44.png

 

2、按照先设成是,再设置否,把存在缓存里的appdate domains  isos都回写到了阵列中,但是sysrem还是固执的留在缓存里,没有回写,我想到也许是docker的设置问题,我就把docker、虚拟机都删了,但system还是待在缓存里,最后,我在smb共享里把system文件里的docker和ill文件夹都删了,这时候又尝试设置是移动system,这次终于成功了,system回写到了阵列里。啥原因我不懂,我猜system里的文件夹,看起来只有20多g,但是当时设置的虚拟硬盘是按需分配,实际是很大,而且反复安装,多个设置,系统认为文件大于要回写的阵列磁盘,所以一直回写失败,回写失败也没有提示,只能能看到system固执的留在缓存里,也许要学会看日志了。

 

截屏2022-12-17 18.09.25.png

Edited by 45558744
  • Like 1
Link to comment
  • 45558744 changed the title to 关于缓存机制,问题与解决
  • 6 months later...
  • 4 weeks later...
  • 2 weeks later...
  • 2 months later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...