将Ubuntu的交换区扩大

上下文环境

我在大学生时在DOSPARA购买了一台台式电脑(i5(2400)/8GB内存),并安装了Ubuntu20.04,将其作为我在家使用的主要电脑。然而,由于使用了8年多,最近内存坏了。严格来说,并不是内存坏了,而是主板上的内存插槽坏了。所以,问题不能仅仅通过更换内存来解决,需要更换整个主板(如果要更换主板,那还不如买一台新电脑更好)。

幸运的是,4个内存插槽中仍有2个是正常的,我用2个2GB的内存插入,总共4GB内存可以启动。所以,我决定用冬季奖金来购买一台新电脑,在那之前,我决定继续忍耐。然而,由于只有4GB内存,当我启动Chrome并同时运行Docker容器时,会占用到交换空间并导致冻结。因此,我决定暂时扩展交换空间来应对。

出于这个原因,我决定将关于在操作系统安装后扩展Swap空间的方法记录在这篇文章中,也可以当作备忘录。

创建专门用于Swap领域的特殊文件。

据说在Windows中也是如此,可以通过专用的系统文件来实现Swap区域。在Ubuntu 20.04中,可以使用swapon命令来确认。在我的环境中,/swapfile已经存在,并且似乎被识别为Swap区域。

$ swapon -s
ファイル名 タイプ       サイズ   使用済み    優先順位
/swapfile   file    2097148 1851152 -2

由于/swapfile已经存在,创建/swapfile2并将其识别为Swap文件。

$ sudo fallocate -l 2G /swapfile2   # 2GBのファイルをアロケーション
$ sudo chmod 600 /swapfile2         # rootのみ読み書き可能に設定
$ sudo mkswap /swapfile2            # swap領域として設定
$ sudo swapon /swapfile2            # swap領域としてマウント
$ swapon -s
$ sudo vim /etc/fstab
$ grep swapfile /etc/fstab 
/swapfile                                none            swap    sw              0       0
/swapfile2                                none            swap    sw              0       0
$ reboot
$ swapon --show

成功地擴大了Swap空間,現在我能夠繼續使用而不會出現凍結的問題了。

多此一举

我记起以前关于Swap区域大小应为实际内存大小的两倍的说法,但现在随着内存价格大幅下降,通过在云服务器上调整设置,可以很容易地增加内存,所以我已经不再关注Swap区域的大小了。但是遇到这种情况,也许还是应该自定义而不是使用默认值。顺便说一句,最近的浏览器真是吃掉太多内存了。只有4GB内存和2GB的Swap区域能满足使用浏览器而不冻结的条件,而在Windows XP时代,我认为2GB内存已经足够奢侈了,现在看来真是通胀过头了。