Unraid性能

2020-02-23 11:23:04    Unraid官网-tmtony翻译    6509

性能

本部分仍在建设中

仍然需要添加更多细节

阵列写入模式

Unraid保持实时奇偶校验,并且用于更新奇偶校验的方法极大地影响了Unraid中写入奇偶校验受保护数组的性能。

基本上支持2种方法:

  • 读/修改/写
  • Turbo模式(也称为 重构写入

下面将对这些进行更详细的讨论,以帮助用户确定哪种模式适合于他们当前希望其阵列如何工作。

设定写入模式

通过进入 Settings-> Disk Settings来设置写模式,然后查找 Tunable(md_write_method)设置。这三个选项是:

  • 自动:目前,此功能的运行方式与设置读/修改/写选项相同,但保留以供将来增强
  • 读/修改/写
  • 重建写入(akaTurbo写入)

要更改它,请单击所需的选项,然后单击“应用”按钮。效果应立即生效,您可以随时更改

下面将详细讨论不同的模式及其含义。

读/修改/写模式

从历史上看,Unraid一直使用“读取/修改/写入”方法来更新奇偶校验并保持所有数据驱动器的奇偶校验正确。

假设您有一个数据块要写入阵列中的驱动器,当然您也希望更新奇偶校验。为了知道如何更新该块的奇偶校验,您必须知道此新数据块与驱动器上当前的现有数据块之间的区别是什么。因此,您首先需要读取现有块,并将其与新块进行比较。这样一来,您就可以找出不同之处,因此现在您知道需要对奇偶校验块进行哪些更改,但是首先您需要阅读现有的奇偶校验块。因此,您将您发现的更改应用于奇偶校验块,从而将新的奇偶校验块写出。现在您要写出新的数据块和奇偶校验块,但是驱动器磁头刚好超出了块的末尾,因为您刚刚读取了它们。因此,您必须等待很长时间(以计算机时间为单位),磁盘磁盘才能一直旋转,直到它们定位到写入同一块为止。盘片旋转时间是使此方法花费很长时间的部分。这是奇偶校验写入比常规写入慢得多的主要原因。

总而言之,对于“读取/修改/写入”方法,您需要:

  • 读取奇偶校验块并读取现有数据块(可以同时完成)
  • 比较数据块,然后使用差值更改奇偶校验块以生成新的奇偶校验块(很短)
  • 等待盘片旋转(很长!)
  • 写出奇偶校验块和写出数据块(可以同时完成)

那是2次读取,一次计算,长时间的等待和2次写入。

这种方法的优点是:

  • 仅需要旋转奇偶校验驱动器和要更新的驱动器。
  • 最小化功耗,因为在不访问阵列驱动器时可以将其停转
  • 不需要所有其他阵列驱动器都能正常工作

Turbo写模式

最近,Unraid引入了Turbo写模式(通常称为“重构写”)

我们从要保存的相同新数据块开始,但是这次我们不在乎现有数据或现有奇偶校验块。这样我们就可以立即写出数据块,但是我们如何知道奇偶校验块应该是什么呢?我们在所有* other *数据驱动器上发出同一块的读取,一旦有了它们,就将所有它们与新的数据块结合在一起,得到新的奇偶校验块,然后将其写出!做完了!

总而言之,对于“重构写入”方法,您需要:

  • 写入数据块,同时读取所有其他数据驱动器的数据块
  • 从所有数据块(包括新数据块)计算出新的奇偶校验块(非常短)
  • 写出奇偶校验块

那是一次写入和一堆同时读取,一次计算和一次写入,但是没有盘片旋转等待!好处是可以更快。

缺点是:

  • 所有阵列驱动器都必须旋转,因为它们都与每次写入有关。
  • 由于需要保持所有驱动器旋转,从而增加了功耗
  • 所有驱动器必须读取无误。

分枝

那么,这有什么后果呢?

  • 对于某些操作,例如奇偶校验和奇偶校验生成以及驱动器重建,这没有关系,因为所有驱动器都在旋转。
  • 对于大型写入操作,例如对阵列的大量传输,它可以在速度上产生很大的不同!
  • 对于小写操作,尤其是在驱动器正常休眠的奇数时间,必须先旋转所有驱动器,然后才能进行小写操作。
  • 那么,那些在后台进行的小写操作(例如文件系统内务操作)又如何呢?随时进行每次写入都会强制每个阵列驱动器旋转。因此,在检查阵列时,您可能会在奇怪的时间感到惊讶,并期望所有驱动器都被旋转下来,并且发现其中的每个驱动器都被旋转,而没有明显的原因。
  • 因此,要面对的问题之一是,您希望如何处理各种写入操作。于凌晨4点对您的手机进行一次小的预定备份。备份工具确定有要备份的新图片,因此尝试将其写入您的unRAID服务器。如果使用旧方法,则数据驱动器和奇偶校验驱动器必须旋转,然后写入少量数据,可能需要比Turbo写入花费几秒钟的时间。现在是凌晨4点,您在乎吗?如果您使用的是Turbo写入,则所有驱动器都将旋转,旋转它们所需的时间可能比使用Turbo写入保存该图片所节省的时间要长一些(但保存速度要快几秒钟)。另外,所有驱动器现在都在无用地旋转。
  • 另一个可能的问题是,如果您处于Turbo模式,并且正在观看流传输到播放器的电影,则写入会进入服务器并开始旋转所有驱动器,从而导致电影中众所周知的暂停和停顿。谁想应对从那时开始的抱怨?

当前,您只能选择使用旧方法或新方法(当前,“自动”选项表示旧方法)。计划是添加true的Auto选项,默认情况下将使用旧方法,除非所有驱动器当前都在旋转。如果驱动器全部旋转,则滑入Turbo。对于许多用户来说,这应该足够了。它通常会使用旧的方法,但是如果您计划进行大型传输或执行大量写入操作,则将启动所有驱动器-并享受更快的写入速度。

auto方法用于系统根据当前阵列活动自动切换模式的潜力,但到目前为止尚未发生。问题在于知道驱动器何时旋转,并且能够在不明显影响写入性能的情况下对其进行检测,从而破坏了我们试图实现的优势。如果在每次写入时都必须查询每个驱动器的状态,那么将会明显影响I / O性能。因此,要保持良好的性能,您需要另一个在后台运行的功能,以保持对旋转状态的近乎瞬时的跟踪,并为编写器提供一个标志,以检查编写器是否被旋转,以了解使用哪种方法。

许多用户希望对使用哪种写模式进行更严格,更智能的控制。目前尚无官方方法,但是您可以尝试在“应用程序”选项卡上搜索“ Turbo Write”,以获取获得更好控制的非官方方法。

使用缓存驱动器

可以使用缓存驱动器/池来提高 感知到的写入阵列的速度。可以通过单击GUI中“共享”选项卡上的共享名称,使用每个共享可用的“使用缓存”设置,在逐个共享的基础上完成此操作。重要的是要认识到使用缓存并没有真正加快将文件写入阵列的速度-只是当用户不注意它们时才发生这种写入

注意事项:

  • “  使用缓存 ”的“  是”设置会导致共享的新文件最初写入缓存,然后在 移动器运行时移动到受奇偶校验保护的阵列中
  • 以高速缓存能够全速运行的方式将其写入高速缓存。
  • 在高速缓存中使用SSD以获得最佳性能的情况并不少见。
  • 从缓存到阵列的移动仍然相对较慢,但是由于通常计划在系统处于空闲状态时使mover处于有趣状态,因此最终用户看不到它。
  • “设置”->“全局共享”设置有一个“  最小可用空间”  设置,如果高速缓存上的可用空间低于此值,Unraid将停止尝试将新文件写入高速缓存。由于Unraid首次创建文件时并不知道最终大小,因此建议此设置的值应与您希望停止时要写入共享的最大文件的大小一样大(或更大),以阻止Unraid选择缓存不适合可用空间的文件。当可用空间用完时,这将停止写入失败,并显示“空间不足”错误。
  • 如果高速缓存上没有足够的可用空间,则写操作将绕过高速缓存开始,并恢复为不使用高速缓存时获得的速度。

读取模式

通常,读取性能取决于可以从驱动器读取文件的最大速度。与其他形式的RAID不同,Unraid系统不会利用条带化技术来提高性能,因为每个文件都被限制在一个驱动器中。

如果将磁盘标记为已禁用并正在仿真,则Unraid需要通过读取所有正常驱动器和奇偶校验驱动器的相应扇区来即时重建其内容。在这种情况下,读取性能将主要由系统中最慢的驱动器确定。

还需要强调的是,如果正在进行任何阵列操作(例如奇偶校验或磁盘重建),则由于两个操作之间的磁盘争用导致驱动器磁头移动,读取性能将大大降低。