何时创建专用交换分区与创建交换文件是否有理由,例如/tmp/swap
?
在我的特定情况下,内存有点低(1GB),SSD 上的磁盘空间相当大(256GB)。因此,交换会经常发生。
任何意见表示赞赏!
卡斯滕
答案1
我发现使用交换文件而不是交换分区的主要缺点是交换分区不可能被碎片化,而在创建时,扩展文件系统上的交换文件可能会在分区上被分割。磁盘,导致顺序访问速度变慢。
答案2
对交换文件的访问不通过文件系统...内核知道哪些磁盘块是交换并直接访问它们1。但不连续的文件可能在磁盘的不同区域中存在碎片,并且根据具体使用情况,额外的查找可能会使其比专用分区慢。
OTOH,如果您正在处理没有交换分区并且无法创建交换分区的云服务器,则交换文件可能会保存您的应用程序。
[1] “内核在交换时生成交换偏移 -> 磁盘块的映射,从那时起,使用该映射直接针对底层磁盘队列执行交换 I/O,绕过所有缓存、元数据和文件系统代码。”——Linux 内核存档:回复:交换分区与交换文件
答案3
文件上的 I/O 操作必须经过更多层内核代码(例如 VFS),因此与交换到文件相关的开销更多。另一方面,它是一种更灵活的设置,可能足以满足您的情况。
答案4
在 Linux 上,交换文件相对高效,如果交换文件被分配为一组连续的块(在开始时创建它或在创建之前对文件系统进行碎片整理以实现这一点很重要),那么它几乎与分区一样高效。
即使将其与临时加密(对于安全性非常重要)结合使用也不会增加太多开销(请参阅crypttab
手册页)。