头图

在 Ubuntu 系统中,创建并挂载交换分区(Swap)是扩展内存的有效方式。交换分区通过使用硬盘空间来替代物理内存,当 RAM 使用完时,系统会自动切换到交换分区来继续存储数据。以下是创建和挂载交换分区的详细步骤与解释。

一、检查可用磁盘空间

在开始创建交换分区之前,需要确保系统中有足够的磁盘空间。使用 df -h 命令可以查看硬盘的使用情况:

df -h

解释

  • df -h:该命令以人类可读的形式(单位为 KB、MB、GB 等)显示每个文件系统的可用空间。

在查看可用磁盘空间后,可以根据系统的实际情况来决定交换分区的大小。一般建议交换分区的大小为物理内存(RAM)的两倍,但当系统的 RAM 大于 2GB 时,交换分区的大小可以与 RAM 相同。

二、创建交换分区文件

2.1 使用 fallocate 创建交换文件

fallocate 是创建交换文件的最简单方式。以下命令会在 /swapfile 路径下创建一个 2GB 大小的交换文件:

sudo fallocate -l 2G /swapfile

解释

  • sudo:使用超级用户权限执行命令。
  • fallocate -l 2G /swapfile:创建一个大小为 2GB 的文件 /swapfile,该文件将作为交换分区使用。

2.2 使用 dd 命令创建交换文件

如果你的系统不支持 fallocate 命令,可以使用 dd 命令来创建交换文件:

sudo dd if=/dev/zero of=/swapfile bs=1M count=2048

解释

  • dd:用于低级数据复制的命令。
  • if=/dev/zero:输入文件为 /dev/zero,它会产生连续的零。
  • of=/swapfile:输出文件为 /swapfile
  • bs=1M count=2048:创建块大小为 1MB 的文件,共计 2048 个块,因此文件大小为 2048MB(即 2GB)。

三、设置文件权限

为了安全性,必须确保只有 root 用户可以访问并修改交换文件。使用 chmod 命令来设置正确的文件权限:

sudo chmod 600 /swapfile

解释

  • chmod 600:设置文件权限为只有文件拥有者(root)可以读写。
  • /swapfile:指定要设置权限的文件。

四、将文件标记为交换分区

接下来,使用 mkswap 命令将创建的文件设置为交换分区:

sudo mkswap /swapfile

解释

  • mkswap /swapfile:将 /swapfile 文件标记为一个有效的交换分区。

五、启用交换分区

使用 swapon 命令立即启用交换分区,使系统开始使用该分区:

sudo swapon /swapfile

解释

  • swapon /swapfile:启用指定的交换分区,使其开始生效。

六、让交换分区在系统启动时自动挂载

为了在系统重启时自动加载交换分区,需将交换分区的信息添加到 /etc/fstab 文件中。首先,编辑该文件:

sudo nano /etc/fstab

在文件末尾添加以下内容:

/swapfile swap swap defaults 0 0

解释

  • /swapfile:指定交换文件路径。
  • swap swap defaults 0 0:表示该文件作为交换分区,系统默认挂载它。

保存并关闭文件,之后每次系统启动时,交换分区都会自动挂载。

七、验证交换分区

创建和启用交换分区后,可以使用 free -h 命令检查交换分区是否成功挂载:

free -h

解释

  • free -h:该命令以人类可读的格式显示系统的内存使用情况,包括物理内存和交换分区。

如果输出中有类似于以下的内容,说明交换分区已经成功启用:

              total        used        free      shared  buff/cache   available
Mem:            8.0G        1.5G        5.0G         50M        1.5G        6.2G
Swap:           2.0G          0B        2.0G

这里的 Swap 行显示了交换分区的大小和使用情况,表示系统已经正确地启用了交换分区。

八、调整交换分区的优先级(可选)

默认情况下,交换分区的优先级较低,系统只有在物理内存不足时才会使用它。如果你希望调整交换分区的优先级,可以通过修改 sysctl.conf 文件来实现:

sudo nano /etc/sysctl.conf

在文件中添加以下内容:

vm.swappiness=10

解释

  • vm.swappiness:该参数控制系统在多大程度上使用交换分区,值范围是 0 到 100,值越高,系统越倾向于使用交换分区。默认值通常为 60,建议将其设置为 10,以便在物理内存不足时才使用交换分区。

保存文件后,执行以下命令使修改生效:

sudo sysctl -p

解释

  • sysctl -p:重新加载内核参数设置,使新配置生效。

九、总结

创建交换分区可以有效地提高系统的内存管理能力,特别是在物理内存不足时。通过遵循上述步骤,你可以成功地在 Ubuntu 系统中创建、启用并自动挂载交换分区。以下是本次操作的关键步骤总结:

步骤命令或操作原理与说明
检查硬盘空间df -h查看当前硬盘的使用情况,确保有足够的空间来创建交换分区。
创建交换文件sudo fallocate -l 2G /swapfile使用 fallocate 命令创建一个 2GB 大小的交换文件。
设置文件权限sudo chmod 600 /swapfile设置文件权限为只有 root 用户可以读写,确保文件安全性。
设置为交换分区sudo mkswap /swapfile将创建的文件标记为交换分区,使其能够用于系统内存管理。
启用交换分区sudo swapon /swapfile启用交换分区,让系统可以开始使用该分区作为额外的内存资源。
添加自动挂载编辑 /etc/fstab 文件,添加 /swapfile swap swap defaults 0 0使交换分区在系统启动时自动挂载,避免重启后交换分区失效。
查看交换分区状态free -h检查系统内存和交换分区的使用情况,确认交换分区已经成功启用。
调整优先级(可选)编辑 /etc/sysctl.conf,添加 vm.swappiness=10设置系统的 swappiness 参数,使系统在物理内存用尽时才使用交换分区。

至此,你已经成功在 Ubuntu 系统中创建了一个 2GB 的交换分区,并且通过配置文件确保它在系统启动时自动加载。这些操作有助于提高系统在高负荷下的稳定性和性能。


蓝易云
25 声望3 粉丝