![当交换分区出现故障时,是否存在我没有考虑到的风险?](https://linux22.com/image/681335/%E5%BD%93%E4%BA%A4%E6%8D%A2%E5%88%86%E5%8C%BA%E5%87%BA%E7%8E%B0%E6%95%85%E9%9A%9C%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E6%88%91%E6%B2%A1%E2%80%8B%E2%80%8B%E6%9C%89%E8%80%83%E8%99%91%E5%88%B0%E7%9A%84%E9%A3%8E%E9%99%A9%EF%BC%9F.png)
我计划在 raid10 配置中设置 4 个驱动器,但在每个驱动器上放置单独的交换分区(无 raid),并让内核执行类似于 raid0 的操作。当/如果其中一个驱动器发生故障并且其上有交换数据:
- 内核可能会崩溃。
- 当前正在运行的进程的内存中存储的任何数据都可能会丢失。
到目前为止,这似乎是一个可以接受的失败案例。还有其他的失败案例吗?坏事有没有可能发生我还没有考虑到的事情?
答案1
还可能发生另一件事:如果必须将部分或全部交换的进程(即:由于不活动)重新加载到 RAM 中(即:由于外部因素,如用户迭代)并且交换分区死机,则换入进程无法完成,并且该进程将崩溃或变得疯狂。
出于所有这些原因,我强烈建议不要在服务器上使用 RAID-0 交换分区。在工作站/客户端上,这可能是合理的,但实际情况是,即使是 RAID-0 形式的大规模磁盘阵列与 RAM 相比也非常慢,因此在功能上与使用 RAID-10 没有什么不同
答案2
抱歉,我从来没有勇气涉足非冗余交换领域。所以除了“不要这样做”之外,这不是对你问题的直接回答。
我想分享我的观点:一般来说,如果你依赖 swap 的性能,那么你可能做错了什么。如果你不关心 swap 的性能,那么就让它变得多余吧。
更多的 RAM 总是比更多的交换性能更便宜!