UnRAID手册6
什么是unRAID?unRAID?是一种嵌入式操作系统,旨在为您提供对硬件的最终控制。除了执行功能强大的NAS(网络附加存储)的功能外,unRAID还能够充当应用程序服务器和虚拟机主机。unRAID可以从USB闪存设备安装并从中引导,然后加载到根RAM文件系统中。通过使用具有最新硬件驱动程序的现代Linux内核,unRAID可以在几乎任何6位系统(x86_6)上运行,并且系统内存消耗最少。与操作系统有关的所有配置数据都存储在闪存设备中,并与操作系统本身同时加载。unRAID系统的管理是通过直观的Wb界面完成的,该界面提供了常见任务的基本控制以及为更精明的用户提供的高级调整选项。unRAID会自动选择适合大多数人需求的默认设置,但也允许您根据自己的喜好调整设置。这使unRAID在您需要的地方直观,而在需要的地方可调。通过将硬件和软件不可知论的优势结合到一个OS中,unRAID提供了多种方式来存储,保护,提供和播放您下载或创建的内容。
unRAID的功能分为三个核心部分:软件定义的NAS,应用程序服务器和本地化的虚拟化
网络附加存储unRAID的核心是与硬件无关的解决方案,可以将几乎所有具有6位功能的系统转变为NAS。unRAID可以管理大小,速度,品牌和文件系统各不相同的驱动器阵列(通过IDE,SATA或SAS连接)。另外,通过消除使用传统的基于RAID的技术,我们可以通过添加更多驱动器来按需扩展,而无需重新平衡现有数据。unRAID的NAS功能包括一个受奇偶校验保护的阵列,用户共享和一个可选的缓存池。
奇偶保护阵列unRAID阵列的主要目的是通过添加专用的奇偶校验驱动器来管理和保护任何驱动器组(JBOD)的数据。奇偶校验驱动器提供了一种将所有数据从故障驱动器重构到替换驱动器的方法。令人惊讶的是,单个奇偶校验驱动器可以为所有其他奇偶校验驱动器增加保护!硬盘驱动器的内容可以认为是非常长的位流,每个位只能是零或一。如果对每个驱动器上的第n位的值求和并确定该和是偶数还是奇数,则可以强制将相应的第n个奇偶校验位也设置为偶数或奇数(零或一)。如果数据驱动器发生故障,则现在可以使用该奇偶校验信息来推断出故障驱动器的确切位值,并在替换驱动器上完美地重建它。这是一个例子:
图.显示没有奇偶校验设备的一组磁盘上的位设置。
在上图中,我们有三个驱动器,每个驱动器都有一个比特流,这些比特流的计数根据设备大小而变化。这些设备本身不受保护,如果其中任何一个发生故障,数据将丢失。为了保护自己免于故障,我们必须添加第四个磁盘作为奇偶校验。奇偶校验磁盘的大小必须等于或大于最大数据磁盘的大小。要计算奇偶校验磁盘上每个位的值,我们只需要知道每一列的总和即可。如果一列的总和是偶数,则奇偶校验位应为0。如果一列的总和是奇数,则奇偶校验位应为。这是与以前相同的图像,但是按帧:
图.显示带有奇偶校验设备的一组磁盘上的位设置。
现在,让我们假设示例中的驱动器发生故障,并购买了新驱动器来替换它:
图.使用奇偶校验解决丢失的位。
要在新替换的磁盘上重建数据,我们使用与以前相同的方法,但是不是解决奇偶校验位,而是解决丢失的位。对于第列,总和为0(偶数),因此丢失的位也必须为0。对于第6列,总和为,是奇数,因此丢失的位也必须为。
使用奇偶校验重建磁盘的功能可防止数据丢失。奇偶校验保护还允许系统充分使用,同时保留所有数据的访问权限(即使驱动器发生故障),从而提供了容错能力。
用户共享与大多数RAID系统不同,unRAID将数据保存到单个驱动器。为了简化可管理性,用户可以创建共享允许写入文件的文件分散在多个驱动器上。可以将每个共享视为驱动器上的顶级文件夹。浏览共享时,来自参与该共享的所有驱动器的所有数据将一起显示。用户无需知道文件位于哪个磁盘上就可以通过共享访问文件。可以调整共享以包括/排除特定磁盘,并使用各种方法来确定如何在这些磁盘之间分配文件。除了控制如何在驱动器之间分配数据外,用户还可以控制共享可见的网络协议以及定义用户级别的安全策略。通过网络协议访问unRAID服务器时,通过该协议导出的所有共享都将可见,但您可以切换单个共享以及全局设置级别的协议。如果您希望防止匿名访问系统中的私人数据,则可以创建用户帐户,并定义策略以将访问权限限制为仅信任个人。
图.分发策略定义了将数据写入共享时要使用的磁盘。
图.访问策略定义了用于共享的协议和用户级别的安全性。
快取unRAID的缓存驱动器功能提供了更快的数据捕获。一般来说,通过在三个或三个以上驱动器的阵列上使用高速缓存,可以实现高达倍的写入性能。将数据写入已配置为使用缓存驱动器的用户共享时,所有这些数据最初都会直接写入专用缓存驱动器。因为此驱动器不是阵列的一部分,所以奇偶校验更新不会影响写入速度。然后,一个称为“移动器”的unRAID进程会按您选择的时间和频率(通常在深夜)将数据从缓存复制到阵列。移动器完成后,将释放先前在高速缓存驱动器上消耗的空间。
对于单个缓存驱动器,捕获的数据存在风险,因为奇偶校验驱动器仅保护阵列,而不保护缓存。但是,您可以使用多个驱动器构建缓存,以增加缓存容量并为该数据添加保护。缓存中多个驱动器的分组称为构建缓存池。unRAID缓存池是通过使用BTRFS功能在传统RAID上进行独特的转换而创建的,该功能既提供RAID的数据冗余又提供RAID0的容量扩展。
应用服务器传统的NAS应用程序支持解决方案具有三个主要限制:
它们不能支持为其他操作系统编写的应用程序。
它们可能难以安装,甚至更难以移除。
它们并不总是与同一OS中的其他应用程序“玩得很开心”。
Dockr通过多种关键方式解决了这些问题:
它允许使用任何Linux操作系统来授权给定的应用程序(不再受主机本身的操作系统的限制)。
它通过提供预安装的映像来消除应用程序必须经历的“安装”过程,以确保用户获得一致的运行时体验,并在用户使用完它们后更容易删除它们。
它使通常存在共存问题的应用程序可以在同一操作环境中和谐地生活。
Dockr由三个主要组件组成:引擎,集线器和容器。
引擎DockrEngin代表unRAID6中内置的管理组件。使用该引擎,我们可以控制应用程序对重要系统资源的访问,与DockrHub进行交互,并使应用程序彼此之间或与我们的操作系统之间不发生冲突。
从存储角度来看,该引擎利用了BTRFS文件系统的写时复制功能以及通过集线器提供的Dockr映像。映像本质上是具有层次结构的tar文件,因此依赖于公共层的其他映像不需要为它们共享的层复制存储。共享层处于只读状态,而对共享层所做的更改仅反映在更改了共享层的应用程序的实例中。简而言之,这意味着应用程序可以有效利用系统性能和存储容量。
图.可视化不同的应用程序如何共享对公共基础映像的只读访问权限,并将对它的修改存储在写时复制数据存储中。
集线器相对于传统Linux容器(LXC)和虚拟机(VM)而言,Dockr提供的最大优势之一在于其应用程序存储库:DockrHub。如今,许多传统的Linux操作系统在其框架中均附带一个称为软件包管理器的组件。软件包管理器的任务是让人们轻松地从称为存储库的目录中安装为特定操作系统编写的应用程序。尽管程序包经理的工作做得相当不错,但他们具有前面提到的所有限制。Linux容器和虚拟机虽然能够提供一种控制分配给应用程序的资源的方法,但仍然依靠传统的软件包管理器来进行软件检索并将其安装到运行时环境中。
相比之下,DockrHub提供了所有好处,而没有传统软件包管理器的限制。使用Dockr引擎,可以自动下载预构建的应用程序,并且由于我们已经介绍了写时复制的优点,因此实际下载的唯一数据是系统上不存在的数据。该中心包含,多个Dockr化应用程序,因此查找所需内容不是问题。此外,由于我们的一些忠实社区成员,用户可以通过使用unRAID6中的模板来快速添加许多最受欢迎的容器。这些论坛成员已自行构建和维护这些模板以及可用列表。模板继续增长。
可以从