交换:创建专用交换分区还是创建交换文件更好?


9

创建专用交换分区与创建交换文件(例如/ tmp / swap之类)时,有什么理由吗?

在我特定的情况下,内存有点低(1GB),SSD上的磁盘空间却非常大(256GB)。因此,交换将非常定期地发生。

任何意见表示赞赏!

卡斯滕


4
请注意,通过将其用于交换,可能会缩短SSD的使用寿命。askubuntu.com/questions/652337/…–
史蒂夫

Answers:


3

我看到的使用交换文件而不是交换分区的主要缺点是,不可能使交换分区碎片化,而在创建时,扩展文件系统上的交换文件可能会在磁盘上拆分。磁盘,导致较慢的顺序访问。


2
由于SSD没有随机读取的代价,因此碎片文件的危害很小。
大卫·金

老实说,从那时起,我一直支持交换分区,但是,正如我们在德国在这里所说的那样,“问
价不菲

1
如果我预见到一个大型项目可能会耗尽配置的RAM和交换分区,但我经常将交换文件临时使用,但是我希望将其保持分区状态。这样,我可以在Linux发行版之间重用交换分区,就像重用家庭分区一样。
DopeGhoti 2015年

1
关于“在写入文件系统上的文件时要遍历更多层内核代码”的部分是不正确的:“ 内核在交换时生成交换偏移量映射->磁盘块,然后使用该映射执行交换直接针对基础磁盘队列的I / O,绕过所有缓存,元数据和文件系统代码。” – Linux内核存档:回复:交换分区与交换文件
Anthony Geoghegan

1

对文件的I / O操作必须经过更多层的内核代码(例如VFS),因此与交换文件相关的开销更大。另一方面,它是一种更灵活的设置,可能足以满足您的情况。


也许我应该使自己对Swap I / O盛况,鸭子和情况更加熟悉……关于Linux,仅仅是好,慢和简单吗?^^:D PS:好吧,忘了“慢”的事... ^^
CarstenP

实际上,这不是真的:“ 内核在交换时生成交换偏移量->磁盘块的映射,从那时起,使用该映射直接针对基础磁盘队列执行交换I / O,绕过所有缓存,元数据和文件系统代码。” – Linux内核存档:回复:交换分区与交换文件
Anthony Geoghegan

1

对交换文件的访问不会通过文件系统...内核知道要交换的磁盘块并直接访问它们1。但是不连续的文件可能在磁盘的不同区域中都有碎片,并且根据特定的用法,额外的查找可能会使它比专用分区慢。

OTOH,如果您要处理的云服务器没有交换分区,并且无法创建分区,则交换文件可能会保存您的应用程序。


[1]内核在交换时生成交换偏移量->磁盘块的映射,此后使用该映射直接针对基础磁盘队列执行交换I / O,绕过所有缓存,元数据和文件系统代码。” – Linux内核存档:Re:交换分区与交换文件


如果fs移动/调整文件块大小会怎样?我认为在交换文件的情况下,至少应该存在一些fs驱动程序交互。
peterh-恢复莫妮卡

已投票。这应该是公认的答案,因为它是唯一表明内核直接访问用于交换的磁盘块的答案。
Anthony Geoghegan
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.