交换和RAID-1应该混用吗?


9

我有一个带有小的RAID-1阵列的盒子,用于交换空间。我这样做是因为我正在为系统中的每个其他分区设置镜像。

今天,我读了这个问题,这使我感到奇怪:“是否在RAID-1理想/可交换方案上进行了交换?”。

Answers:


17

您(可能)不应从RAID 1中退出交换。

在RAID 1上进行交换有时不那么重要,但这很好,通常有帮助,并且经常是必需的。如果您已经在使用RAID 1,则几乎没有任何理由故意将交换位置放在其他位置。

交换RAID 1可能会更好

可以预期RAID 1上的SWAP的性能比RAID之外的单个交换分区更好,但不如设置为相同优先级的两个交换更好。

由于必须将所有数据都写入两个磁盘,因此写入RAID 1有时比写入单个磁盘要慢。通常情况下,它并不是真的很慢-通常,速度的下降可以忽略不计。如果在同一IDE控制器上有两个磁盘的RAID 1,则速度会变慢。但是,当访问一个磁盘并不会减慢对另一磁盘的访问时,写入RAID 1不会明显变慢。

从RAID 1读取几乎总是比从单个磁盘读取更快,因为当一个磁盘被读取占用时,可以从另一磁盘读取更多数据。从由两个驱动器组成的RAID 1 读取的速度通常几乎是从单个驱动器读取速度的两倍

我不知道有任何测试将两个单独的交换分区与RAID 1(或任何其他RAID)上的单个交换分区进行比较。没有理由认为单个交换分区的性能要优于RAID 1上的交换。如果在单独的磁盘上有两个交换,则情况会更加复杂:

  • 如果在中为交换指定了不同的优先级/etc/fstab,则会将单独的页面交换给它们;同一页不会一次交换到两者。我希望两次交换可以更快地同时访问不相关的交换数据,但是访问单个页面的速度较慢。

  • 如果交换在中具有相同的优先级/etc/fstab,则数据(甚至来自单个页面)将被分割。这类似于RAID 0,最有可能比将交换放置到RAID 1上更好。

    从理论上讲,如果您具有硬件RAID 1,则软件条带化的效率可能会降低,但是除非您有不寻常的应用程序,其中从交换读取的内容比写入数据要普遍得多,否则我希望非RAID软件条带化交换的性能要优于交换分区在RAID 1。

    (由于内核可以在多个交换分区之间对交换的数据进行条带化,因此没有理由只为交换设置软件RAID0。)

有关RAID 1性能的更多信息,请参见Wikipdia文章“标准RAID级别”的这一部分

感谢gertvdijk提供有关带区互换的至关重要的信息。

您可能真的需要交换RAID 1

是否需要交换RAID 1取决于为什么首先需要RAID 1。交换中的数据通常是高度不稳定的,并且丢失通常并不意味着资产的重大损失。然而。:

  1. RAID(RAID 0除外)的一个好处是,如果驱动器发生故障,您的计算机将继续运行(速度稍慢)。如果您正在运行的程序已将页面交换到磁盘(启用交换功能实际上就是这种情况),则包含交换分区(无论是否是唯一的交换分区)的驱动器将发生故障,并且没有冗余备份后,您的系统将立即停止正常运行(并且在重新启动之前可能完全无法使用,具体取决于交换的使用方式)。如果您将机器用作生产服务器或执行任何其他重要任务,则将导致停机

    如果您可以容忍一次常见的不良事件(一个驱动器发生故障)而导致的总交换故障,那么您应该问自己为什么要使用RAID 1。您可能有一个很好的答案……但您可能没有。RAID(RAID 0除外)可防止磁盘故障,但RAID并非备份解决方案。如果更改或删除RAID上的文件,或者恶意软件感染RAID上的系统,则更改会立即在所有位置进行-RAID将使您无法从中恢复。

    如果您需要的是备份而不是冗余,并且您还没有高度可靠且易于访问的备份,那么您应该将其中一个驱动器完全从RAID中取出,并用于备份。(当然,有时还需要进行异地备份。)

  2. 如果您使计算机休眠(即,挂起至磁盘),则RAM的内容将被复制到交换分区。因此,如果发生磁盘故障时计算机处于休眠状态,则实际上可能会丢失交换分区,从而丢失数据。


很好的答案,@ Eliah。我对RAID-1的动机来自过去被磁盘故障​​所困扰-我的备份使我免于数据丢失,但是我仍然必须放入新磁盘并重建计算机,这需要时间。这样,我仍然可以在降级的阵列中具有有效的设置,并放入新磁盘以重建阵列。
LRE

@LRE仅当数据丢失的原因是驱动器故障时,RAID才像备份一样工作。对于RAID,这是一种完全可以接受的用法,但是请确保您有单独的备份,以防止其他所有常见的数据丢失原因
伊利亚·卡根

“在RAID 1上交换可能会执行得更好”并非完全正确。参见此wiki.kernel.org页面“如果在/ etc / fstab文件中给它们相同的优先级,则内核本身可以在多个设备上进行条带化交换。” 据我所知,将交换放在RAID之上纯粹是一种可用性。
gertvdijk

@gertvdijk谢谢,我已经编辑了一些信息。我说RAID 1上的交换可能会执行得更好,是因为它可能比单个交换分区(不在RAID中)执行得更好。我缩小了要求范围,并增加了细节。
伊利亚·卡根

@EliahKagan,是的,我了解这一点,并且我有备份(并且他们过去保存了我的皮)-RAID-1可以补充备份
LRE 2013年

3

Ubuntu Server文档中的“ 高级安装”部分介绍了在软件RAID 1阵列上的安装。从我的角度看,他们也在RAID上创建了交换分区,因此它几乎是“推荐”的布局。

但是,仅从理论上讲,与“普通”分区相比,将RAID 1用于交换分区可能会带来较少的好处-交换分区上的数据或多或少是易失的,因此您丢失丢失大量数据的可能性较小。磁盘故障的情况下,尽管交换分区突然失败,但进程可能崩溃或系统可能会重新引导。

从性能的角度来看,使用RAID-0或2个单独的非RAID分区可能(或可能没有)更有意义,如果您担心性能,则可能需要进行一些基准测试。

此外,仅当系统严重受RAM限制且大量使用交换时,所有这些因素才可能影响性能。从性能和可靠性的角度来看,添加更多的RAM并完全消除交换将是一个最终的解决方案:)


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.