如何创建交换文件?

Lin*_*eak 12 linux swap

我知道如何创建和使用交换分区,但我也可以使用文件代替吗?

如何在 Linux 系统上创建交换文件?

Lin*_*eak 19

我自己在几台机器上mdadm有一个 RAID交换文件,因此有一些开销。但无论如何,如果您vm.swappiness明智地调整为比默认值 60 更容易接受的值,您应该没有问题。

例如,我在 RAID6 上有 32GB RAM 服务器和 32GB 交换文件,vm.swappiness= 1。引用维基百科:

vm.swappiness = 1:内核版本 3.5 及更高版本,以及 Red Hat 内核版本 2.6.32-303 及更高版本:最小交换量而不完全禁用它。

在这个例子中,我们创建了一个交换文件:

  • 8GB大小

  • 位于 /raid1/

根据您的需要更改这两件事。

  1. 打开终端,变成root( su); 如果您已sudo启用,您也可以这样做sudo -i;查看man sudo所有选项):

    sudo -i
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为交换文件分配空间:

    dd if=/dev/zero of=/raid1/swapfile bs=1G count=8
    
    Run Code Online (Sandbox Code Playgroud)

或者,如果您的系统支持它,您可以添加status=progress到该命令行。

请注意,此处指定的大小G以 GiB(1024 的倍数)为单位。

  1. 更改交换文件的权限,以便只能root访问它:

    chmod 600 /raid1/swapfile
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将此文件设为交换文件:

    mkswap /raid1/swapfile
    
    Run Code Online (Sandbox Code Playgroud)
  3. 启用交换文件:

    swapon /raid1/swapfile
    
    Run Code Online (Sandbox Code Playgroud)
  4. 验证交换文件是否正在使用中:

    cat /proc/swaps
    
    Run Code Online (Sandbox Code Playgroud)
  5. 打开您熟悉此文件的文本编辑器,例如,nano如果不确定:

    nano /etc/fstab
    
    Run Code Online (Sandbox Code Playgroud)
  6. 要在重新启动后使此交换文件可用,请添加以下行:

    /raid1/swapfile        none        swap        sw        0        0
    
    Run Code Online (Sandbox Code Playgroud)