现在创建交换分区对于新安装是否有意义?

对于一台新的、闪亮的笔记本电脑(假设有16GB内存和SSD硬盘)进行桌面安装,是否有必要设置交换分区?

在我的笔记本电脑上,我有8GB的RAM(其中2GB分配给tmpfs)。如果我不启动几个虚拟机或在Chromium中打开数百个选项卡,我是没问题的,我没有启用交换空间。这只会在我粗心大意的情况下发生。你应该使用16GB的RAM而无需交换空间就能正常运行。 - Rob W
我喜欢这个问题的发展。8年过去了,我打开了38个浏览器窗口,每个窗口都有多个标签(平均每个窗口5个标签),其中一些还同时播放着YouTube/Netflix,还有其他几个程序在运行,但我的Linux系统从未超过12G的内存使用量。16G的内存在Linux上真的经得起时间的考验。<3(另一方面,在Windows上......我的机器是双系统,我装了Win10,16G的内存就不够用了 :( ) - msb
5个回答

是的,你需要交换空间,如果你只是用它来挂起和进行小型的交换操作,那么在硬盘上创建一个交换文件可能是可以接受的,而且我已经使用了将近一年的交换文件,从未遇到过任何问题,只是不喜欢分区硬盘。
只需将以下行复制粘贴到终端中,它将创建2 GB的交换空间。首先以超级用户身份登录:
sudo su

然后复制并粘贴以下内容(一如既往,请确保您理解将要粘贴到终端上的内容):
mkdir /swap && \
cd /swap && \
fallocate -l 2g 2GB.swap && \
mkswap 2GB.swap && \
swapon 2GB.swap && \
echo "# # # Swap File # # #" >> /etc/fstab && \
echo "/swap/2GB.swap none swap sw 0 0" >> /etc/fstab && \
mount -a

性能上的交换(分区vs文件)

不利之处

无法将系统休眠到交换文件中,正如@Takkat所提到的,我已经检查过,并且第一次尝试休眠,但它不起作用,所以如果你想要休眠,你需要交换分区,否则,如果使用交换文件也可以。

休眠 vs. 暂停


暂停 - Qasim
我从来没有冬眠过,总是暂停,所以我想我会采纳你的建议,在一个文件中使用交换空间。也许只需要一个脚本,以便在我需要使用所有可用内存的时候使用。 - Frey Olake
我可以在没有交换分区或交换文件的情况下挂起。 - Kris Harper
@KrisHarper 是的,你可以....http://www.howtogeek.com/113923/how-to-re-enable-hibernate-in-ubuntu-12.04/ 在Ubuntu 12.04中重新启用休眠是很好的,有一些东西可以用于交换。 - Qasim
我是说,如果你只使用挂起功能,我认为你不需要交换文件或交换空间。对于休眠功能,你肯定需要它,但是我可以很好地使用挂起功能而不需要它。 - Kris Harper
你能解释一下fallocatemkswapswapon的用法吗?如果我想在以后增加交换空间,这将是有教育意义和有用的。 - Heisenberg
@Heisenberg 请查看以下链接。fallocate: http://man7.org/linux/man-pages/man1/fallocate.1.html,mkswap: http://linux.about.com/library/cmd/blcmdl8_mkswap.htm,swapon: http://linux.about.com/library/cmd/blcmdl8_swapon.htm - Qasim

如果你想要使用休眠功能,那么必须要有一个与你的总内存大小相同或更大的交换分区。

除此之外,如果你有16GB的内存,原则上可能不需要 - 我见过有人说只要1GB就足够在没有交换分区的情况下运行,尽管我想这可能因人而异。在我的情况下,我使用一台配备8GB内存的笔记本,并且有一个相同大小的交换分区用于休眠(它还可以作为缓冲区,以防我的工作变得特别消耗内存,有时确实会发生)


4我总是在我的12GB机器上保留至少一些交换空间。在任何情况下,仅依赖内存运行都是不可取的。当你的内存使用率达到99%并且即将发生内核恐慌时,你会庆幸自己保留了一些交换空间 :p(更严肃地说,这对于将待机程序换出,以换取更多的工作内存而节省硬盘空间是一个很好的交易)。 - Thomas

这是一个理论问题还是实际问题?

在实际应用中,几乎没有理由避免使用交换分区,因为磁盘空间便宜且充足(尤其在崭新的笔记本电脑上)。

从理论上来说,16GB的内存可能永远不会被用完。考虑以下情况:

  • 某些程序(例如视频编辑器、LibreOffice)在启动时进行初始化时会使用大量的页面,然后再也不会使用
  • 无法预料的情况:程序失控、分叉炸弹

现在考虑这些情况同时发生。交换分区将作为缓冲区,在不可预测的事件同时发生时提供一些时间,让系统在崩溃之前保存工作等。

特别是因为有了笔记本电脑,总会有一天需要休眠来保护你的数据。也许你离开电脑去喝咖啡,但突然有事情发生,一个小时后你才回来。如果你的电池在那个时候没电了,休眠模式将保护你尚未保存的工作。


你可以创建一个交换文件,然后也可以使用它来休眠。我在我的笔记本上创建了交换文件,这样我就可以为每个Linux安装进行休眠。否则,如果我只使用一个交换分区,休眠将会覆盖上一次的休眠。这是我的方法。请注意,你必须使用内核方法来休眠:echo disk > /sys/power/state
sudo -s 
fallocate -l 4000m /swap_file  #4000 mb, may want higher than 4000mb
swapoff -a

mkswap /swap_file

nano /etc/fstab
#delete previous swap entry then add
/swap_file   swap    swap    defaults        0       0
#then save and exit

swap-offset /swap_file  #remember the output of this
nano /etc/grub.d/40_custom
add to linux line:    resume=<partition swapfile is on> resume_offset=<swap-offset return data>

swapon -a
nano /home/name/bin/hibernate_shutdown
#!/bin/bash
echo shutdown > /sys/power/disk
echo disk > /sys/power/state

create shortcut. system-settings->keyboard->shortcuts->custom shortcuts  add
gnomesu /home/name/bin/hibernate_shutdown
set to F11
chmod +x /home/name/bin/hibernate_shutdown
restart computer

如果您想在休眠后重新启动而不是关机

echo reboot > /sys/power/disk
echo disk > /sys/power/state

嗯,一年多来我没有对我的SSD进行分区,也没有交换文件。我在两台不同的笔记本电脑上使用同一块SSD(512 GB)。旧的笔记本电脑有8GB的内存,新的有16GB。我将内存用于临时文件和Firefox缓存,而在8GB内存的情况下,当使用grsync同步大文件时,我有时会注意到系统变得很慢。现在有了16GB的内存(也许还有更新的Ubuntu版本13.04),我完全没有遇到任何问题。此外,我认为对SSD进行分区并不好,并且是浪费昂贵存储空间的一种方式。
所以我只能根据我使用SSD/16GB RAM的经验说:在这种配置下,我肯定不会使用SWAP,即使在8GB RAM的情况下也没问题。休眠功能一直存在问题,而待机模式则快得多。