应该交换和RAID-1混合?

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

今天我读到了这个问题 ,这让我想知道:“有没有理想/可取的RAID-1交换?”。

你应该(可能)不要把你的掉掉掉掉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上。

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

有关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. 如果您hibernate计算机(即挂起到磁盘), RAM的内容将被复制到交换分区 。 因此,如果在发生磁盘故障时您的计算机处于hibernate状态,您实际上可能会因丢失交换分区而丢失数据。

Ubuntu Server文档中的高级安装部分介绍了在软件RAID 1arrays上的安装。 从我所看到的,他们也在RAID上创建了一个交换分区,所以它几乎是一个“推荐”的布局。

然而,从纯粹的理论角度来看,与“普通”分区相比,使用RAID 1进行交换分区可能会带来更少的好处 – 交换分区上的数据或多或少具有波动性,因此不太可能丢失大量数据如果磁盘发生故障,虽然进程可能会崩溃,但如果交换分区突然失败,系统可能会重新启动。

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

此外,所有这些都可能仅在系统严重受RAM限制且交换频繁使用的情况下才会影响性能。 从性能和可靠性的角度来看,添加更多RAM并完全删除交换将是一个终极解决方案:)