将交换文件放在SSD还是HDD上?

新的安装即将开始。120GB的固态硬盘用于操作系统和主目录,1TB的机械硬盘用于存储。如果我没记错的话,16GB的内存意味着也需要16GB的交换空间。固态硬盘的空间对于交换分区来说太宝贵了,对吗?如果我的想法正确的话,有人能指导我或者告诉我如何在第二个硬盘上设置交换分区吗?在安装Ubuntu时,我一直选择自动设置。谢谢!
4个回答

在SSD上设置交换分区将使您从休眠(也称为“挂起到磁盘”)中更快地唤醒,相比于在硬盘上进行交换。但是考虑到Ubuntu从SSD引导的极快启动时间,从休眠中唤醒可能比重新启动要慢。
如果您不使用休眠功能,您可能永远不需要进行交换。
只有在您频繁同时运行多个占用大量内存的应用程序时,您的系统才可能会使用交换。此时,在SSD上的交换速度会比在硬盘上稍快一些。但是,无需担心通过大量交换而造成SSD的磨损。
如果不用于休眠,您随时可以添加一个交换分区或者在文件中进行交换:

谢谢您的回复。如果开机时间真的像我所读到的那样快,我觉得我不会进入休眠状态。再次感谢! - user197088
4嗯,冬眠不是指快速启动,而是关于保持状态的。 - thebugfinder

除了其他很棒的回答之外,我想问一下,你可以有多个交换分区。因此,你可以在SSD上放置4GiB的交换空间,其余的放在HDD上,这样在计算机使用过程中如果需要交换某些内容,它会进入快速交换空间。如果你要休眠,可能SSD上的交换空间不够,你还需要HDD上的交换空间。
要做到这一点,你需要在每个磁盘上创建一个交换分区,并且安装完成后,你需要打开/etc/fstab文件,以便系统优先使用快速交换空间。所以打开终端并执行sudo gedit /etc/fstab命令。你需要找到引用你的交换分区的一对行,并编辑它们以添加pri设置(在最快的磁盘上设置更高的数字)。
# before
UUID=some-large-number  none  swap    sw   0 0
UUID=another-large-number  none   swap  sw  0 0

#after
UUID=some-large-number  none  swap    sw,pri=10   0 0
UUID=another-large-number  none   swap  sw,pri=20  0 0

你需要知道哪个在快速磁盘上,哪个在慢速磁盘上。在终端执行blkid命令将帮助你识别每一个。

SSD的速度更快(尽管速度也会随时间减慢),但寿命较短。在做出选择之前,请考虑您的发行版的交换习惯。

如果我说错了,请纠正我,但这个设置是您的家用电脑,对吗?有16GB的内存,我真的怀疑您会进行太多的交换,特别是因为例如休眠很少能正常工作,并且在Ubuntu中默认禁用。

作为交换分区的替代方案,您可以使用交换文件。第二种方法的巨大优势在于它可以根据您的需求增长和缩小,而分区通常更难处理,特别是如果它位于其他两个分区之间并且没有剩余空间。

请阅读以下链接以获取有关将SSD用作交换空间的更多信息:

有关交换大小,请参阅:

  • 我需要多少交换空间?

  • 我个人认为,如果你有16GB的内存,根本不需要去麻烦地创建交换分区。只要确保在/etc/sysctl.conf文件的末尾添加以下一行代码,系统就能正常运行:
    vm.swappiness = 0
    保存并重新启动,就不再需要交换分区了。我自己用这种方法在我的2GB内存机器上从来没有出现过问题或者速度变慢的情况。

    我会建议同样的事情。我的ThinkPad上有8GB的RAM,到目前为止,唯一一次交换分区被激活是在同时运行两个虚拟机和Eclipse时...那时候大约使用了>100MB的交换分区(而仍然有约2GB的可用RAM)。 - Daniel W.
    3然而,如果您打算休眠,那么您将需要交换空间。 - Paddy Landau
    我不打算休眠,因为我看到的启动时间并不长。这台电脑配置了16GB的内存,主要是用于轻度视频编辑。还不确定是否会将内存用满。 - user197088
    1为了安全起见,我强烈建议永远不要没有交换空间。如果你的内存不足,运行一些占用内存的程序可能会导致整个系统崩溃,如果你没有交换空间。对于轻量级家庭使用来说,这不应该是太麻烦的事情,但如果你做任何更高级的操作——请准备一些交换空间,这不会伤害你,但可以避免一些意外重启。 - unfa
    12018年,16GB的容量很快就能用完了... 就像2013年一样。 - jave.web