我有一堆 16gb 正常速度 sdhc 卡,所以如果我使用它们,我并不担心它们会损坏,但我想知道:在 7200rpm 320 gb 硬盘上进行交换,也就是安装 ubuntu 的驱动器,比仅用作交换的 sd 卡更好还是更差?
答案1
如果你不担心 SD 卡损坏,那么这实际上完全取决于速度。你的 7200rpm 内部速度可能比 SD 卡的内部读/写速度慢,但实际上获取数据到驱动器可能是最大的瓶颈。除非您的 SD 读卡器很新,否则连接到 SATA 的 7200rpm HDD 应该会快得多。
您的 SD 卡不太可能具有合适的微控制器来非常有效地解决消耗/损坏的内存(SSD 如何解决增加的内存故障),因此您很可能不会注意到任何故障,直到 SD 卡出现灾难性故障。
如果您在此系统上使用任何“关键任务”设备,那么您绝对不应该使用 SD 卡。
答案2
SD 卡将执行显著地对交换来说更糟,并且可能会缩短它们的寿命。
闪存介质的访问速度是异步的。执行许多单独的读取操作非常快,比硬盘驱动器上通常的速度要快。但是,执行许多单独的小写入操作非常慢,通常比硬盘驱动器慢一个数量级。
当您交换到磁盘时,您的工作负载将由许多小型写入操作组成 - 这是性能最差的工作负载。
(如果您好奇的话,现代 SSD 通过非常复杂的固件技巧解决了这个问题,而 SD 卡等更简单的闪存驱动器则没有)。
闪存介质的写入次数是有限的。这个限制足够高,普通消费者无需担心——通常写入次数为数万次。但是,如果你要更换,那么驱动器的磨损会大大增加。 大概不足以在短时间内观察到任何问题。
答案3
当你能使用 SD 卡进行交换(例如 Raspberry Pi 就是这样做的)并不理想。使用硬盘,因为它比 SD 卡快得多。此外,由于写入次数有限,SD 卡最终会因频繁使用而磨损。
答案4
根据我的评论这里
首先要考虑的是交换驱动器的使用情况。由于系统内存较少,并且用于同时运行许多不同的应用程序,因此这个交换驱动器是否会经常使用?
如果是,那么最好在主驱动器上使用交换,因为对 SD 的多次写入会降低性能,并且如果系统将交换页面写入损坏的 SD,系统将崩溃并需要使用新的 SD 重新启动。
如果没有,那么您需要考虑 SD 卡控制器的速度(以及 SD 卡本身支持的速度,即 SD 卡的类别)。对于这种情况,@thomasrutter 的回答是你应该遵循的。
要考虑的第二种情况(我添加了这一点,这不是 OP 问题的一部分,但与当今的笔记本电脑有关)是主驱动器是 SSD 驱动器还是旋转驱动器。
对于 SSD 驱动器,我始终建议使用 SD 卡进行交换(或者根本不交换),因为 SSD 仍然非常昂贵,并且这是财务上合理的建议(降级便宜的 SD 而不是昂贵很多倍的 SSD)。
最后,让我们考虑具有足够大 RAM 和 SSD 驱动器的机器的情况。对于这些机器(笔记本电脑/台式机),主内存足以满足几乎所有工作负载。因此,我建议将 swapiness 调整为 0。(交换仅用于主内存已完全用完或启用混合挂起/休眠的情况)。对于这些系统,我绝对建议将 swapiness 设置为 0,并使用 SD 卡作为交换驱动器。原因是每次挂起时,都会对交换进行多次写入,而降级 SD 卡比降级 SSD 驱动器便宜得多。