Answers:
在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(RAID 0除外)的一个好处是,如果驱动器发生故障,您的计算机将继续运行(速度稍慢)。如果您正在运行的程序已将页面交换到磁盘(启用交换功能实际上就是这种情况),则包含交换分区(无论是否是唯一的交换分区)的驱动器将发生故障,并且没有冗余备份后,您的系统将立即停止正常运行(并且在重新启动之前可能完全无法使用,具体取决于交换的使用方式)。如果您将机器用作生产服务器或执行任何其他重要任务,则将导致停机。
如果您可以容忍一次常见的不良事件(一个驱动器发生故障)而导致的总交换故障,那么您应该问自己为什么要使用RAID 1。您可能有一个很好的答案……但您可能没有。RAID(RAID 0除外)可防止磁盘故障,但RAID并非备份解决方案。如果更改或删除RAID上的文件,或者恶意软件感染RAID上的系统,则更改会立即在所有位置进行-RAID将使您无法从中恢复。
如果您需要的是备份而不是冗余,并且您还没有高度可靠且易于访问的备份,那么您应该将其中一个驱动器完全从RAID中取出,并用于备份。(当然,有时还需要进行异地备份。)
如果您使计算机休眠(即,挂起至磁盘),则RAM的内容将被复制到交换分区。因此,如果发生磁盘故障时计算机处于休眠状态,则实际上可能会丢失交换分区,从而丢失数据。
Ubuntu Server文档中的“ 高级安装”部分介绍了在软件RAID 1阵列上的安装。从我的角度看,他们也在RAID上创建了交换分区,因此它几乎是“推荐”的布局。
但是,仅从理论上讲,与“普通”分区相比,将RAID 1用于交换分区可能会带来较少的好处-交换分区上的数据或多或少是易失的,因此您丢失丢失大量数据的可能性较小。磁盘故障的情况下,尽管交换分区突然失败,但进程可能崩溃或系统可能会重新引导。
从性能的角度来看,使用RAID-0或2个单独的非RAID分区可能(或可能没有)更有意义,如果您担心性能,则可能需要进行一些基准测试。
此外,仅当系统严重受RAM限制且大量使用交换时,所有这些因素才可能影响性能。从性能和可靠性的角度来看,添加更多的RAM并完全消除交换将是一个最终的解决方案:)