启用交换功能后 LUbuntu 上无交换

启用交换功能后 LUbuntu 上无交换

我有一台配备 4 GiB RAM 和 128 GiB SSD 的平板电脑,搭载的是 LUbuntu 18.04。

当内存使用率达到约3.9G时,系统挂了,只有鼠标指针移动,很卡,Ctrl+Alt+Fx无反应。

swapon据报道为8 GiB:

$ sudo swapon --show
NAME      TYPE      SIZE USED PRIO
/dev/sda2 partition   8G   0B   -2
$ sudo sysctl vm.swappiness 
vm.swappiness = 60
$ uname -r
4.15.0-55-generic

为什么内存实际上没有交换?如何启用交换?

答案1

根据个人经验,在较新版本的 Ubuntu 中,交换文件可能比交换分区更实用。您可以尝试创建交换文件并禁用交换分区,看看效果如何。为此,请按照以下步骤操作:

  1. 创建交换文件(8 Gib):

    sudo fallocate -l 8G /swapfile
    
  2. 授予文件正确的权限以限制不必要的访问:

    sudo chmod 600 /swapfile
    
  3. 准备文件作为交换区域:

    sudo mkswap /swapfile
    
  4. 激活交换文件:

    sudo swapon /swapfile
    
  5. 停用交换分区:

    sudo swapoff /dev/sda2
    

测试你的系统交换现在如何运作。


注意:(除了创建/swapfile),对交换卷所做的这些更改是临时的,将在重启后清除。如果您希望使更改永久生效,

  • 请编辑您的/etc/fstab文件

    sudo nano /etc/fstab
    
  • 将此行添加到文件末尾/swapfile swap swap defaults 0 0

    例子:

    /dev/sda2 none            swap    sw              0       0
    /swapfile swap swap defaults 0 0
    
  • 注释掉包含交换分区的行(/dev/sda2#) 在其前面添加

    例子:

    # /dev/sda2 none            swap    sw              0       0
    /swapfile swap swap defaults 0 0
    
  • Ctrl按+X然后Y保存更改Enter


fallocate或者dd

谢谢至@heynnema在下面的评论部分提出这一担忧:

不,不要使用fallocate创建 /swapfile,而要使用dd。在 AU 上搜索有关此内容的信息。

我认为人们担心的fallocate文件孔这些内容基本上是文件的一部分,其中包含空字符,并且未存储在磁盘上的任何数据块中。如果存在,则会导致交换文件无法使用。

为了解决这个担忧,让我们来看看fallocate创建文件洞的概率及其后果。

事实证明:

  • fallocate通常不会创建洞,除非操作已存在的文件并且--punch-hole指定了选项。请阅读Ubuntu 手册页 - fallocate

  • fallocate --length 8GiB swapfile建议在 Ubuntu 手册页上创建交换文件,请阅读Ubuntu 手册页 - mkswap

  • 毕竟,如果创建的文件中有漏洞,sudo swapon就会抛出错误skipping - it appears to have holes.,在这种我还没有遇到或听说过的罕见情况下,解决方案很简单。只需使用dd上面步骤 1 中的创建文件并继续即可。请按如下方式操作:

    sudo dd if=/dev/zero of=/swapfile bs=1024 count=8388608
    

    @v_mil做到了:

    sudo dd if=/dev/zero of=/swapfile bs=1048576 count=8192
    

简而言之,这种担心还不足以让人放弃使用所获得的速度fallocate

相关内容