如何在 Linux Ubuntu 上增加交换空间?
在本文中,我们将学习如何增加交换空间,这将解决应用程序中的内存错误。这将涵盖如何在 Ubuntu Linux 中添加交换文件。
无论如何,建议将旋转硬盘驱动器用于交换,因为固态硬盘随着时间的推移可能会导致硬件退化问题。由于这个原因,不要在提供固态硬盘存储的云环境中启用交换。
什么是交换文件?
交换空间是操作系统可以存储临时数据的地方,因为 RAM 无法再容纳这些数据。基本上,这将增加服务器在工作内存中可以容纳的数据量的能力。硬盘驱动器上的交换空间主要在 RAM 中有足够空间容纳数据时使用。
写入磁盘的数据比 RAM 慢,但操作系统会优先将正在运行的应用程序和数据保存在内存中,并将旧数据保存在交换空间中。
检查系统以获取交换信息
我们首先检查系统中已经存在的交换空间。我们可以有多个交换文件或分区。
请注意,我们可以使用以下命令查看系统中可用的交换空间:
# sudo swapon --show [sudo] password for ubuntu: NAME TYPE SIZE USED PRIO /dev/dm-1 partition 1020M 0B -1
或者我们可以使用 free **-h** 命令来显示交换空间。
$ free -h total used free shared buffers cached Mem: 975M 254M 720M 4.8M 12M 133M -/+ buffers/cache: 109M 866M Swap: 1.0G 0B 1.0G
我们可以在机器输出中看到交换行。在这台机器上,我们分配了 1.0G 的交换空间。
检查硬盘分区上的可用空间
在 Linux 上分配交换空间最常见的方法是使用为交换分配的单独分区。我们无法更改分区方案(这是不可能的),但我们可以轻松创建驻留在现有分区上的交换文件。
在执行此操作之前,我们将使用以下命令检查当前磁盘空间。
$ df -h Filesystem Size Used Avail Use% Mounted on udev 473M 0 473M 0% /dev tmpfs 98M 4.9M 93M 5% /run /dev/dm-0 19G 3.1G 15G 18% / tmpfs 488M 0 488M 0% /dev/shm tmpfs 5.0M 0 5.0M 0% /run/lock tmpfs 488M 0 488M 0% /sys/fs/cgroup /dev/sda1 236M 51M 173M 23% /boot tmpfs 98M 0 98M 0% /run/user/1000
** /dev ** 下的设备是硬盘驱动器,这里我们有 15G 的可用空间。
通常,建议将机器上 RAM 的数量或两倍数量作为良好的起始值。
创建交换文件
由于我们知道可用的硬盘空间,因此我们可以通过在文件系统中创建交换文件来继续。另外,请注意,我们称为“swapfile”的交换大小的文件位于我们的根分区 / 目录中。
创建交换文件的最佳方法是使用名为“fallocate”的程序,此命令将立即创建预分配大小的文件。
由于我们的机器分配了 1GB 的 RAM,因此我们将创建 2GB 的文件以满足 Linux 的最低要求。
$ sudo fallocate -l 2G /swapfile
我们可以使用以下命令进行验证。
$ ls -lh /swapfile -rw-r--r-- 1 root root 2.0G May 16 12:52 /swapfile
启用交换文件
我们已经创建了所需大小的交换文件,但需要在此交换空间中将其打开。在打开交换文件之前,我们需要将文件的权限锁定为仅限 root 用户权限,这些用户可以读取文件内容,从而防止普通用户访问该文件。
我们可以使用以下命令执行此操作
$ sudo chmod 600 /swapfile
要验证权限,我们可以使用以下命令查看
$ ls -lh /swapfile -rw------- 1 root root 2.0G May 16 12:52 /swapfile
我们可以使用以下命令打开“swapfile”以用作交换空间
$ sudo mkswap /swapfile Setting up swapspace version 1, size = 2 GiB (2147479552 bytes) no label, UUID=049218ad-50b4-4c78-98e4-7a1ea21ca77e
我们必须验证交换空间是否可用以及分配的空间大小。为此,我们可以使用以下命令:
$ sudo swapon --show NAME TYPE SIZE USED PRIO /dev/dm-1 partition 3068M 0B -1
或者使用以下命令:
$ free -h total used free shared buffers cached Mem: 975M 255M 720M 4.8M 12M 133M -/+ buffers/cache: 108M 867M Swap: 3.0G 0B 3.0G
使交换文件永久化
由于我们在当前会话中更改了交换文件,因此我们还需要重新引导服务器,这样才能将交换设置保留为永久设置。此外,我们可以自动将此交换文件设置添加到“/etc/fstab”文件中。
$ sudo vi /etc/fstab # /etc/fstab: static file system information. # # Use 'blkid' to print the universally unique identifier for a # device; this may be used with UUID= as a more robust way to name devices # that works even if disks are added and removed. See fstab(5). # # <file system> <mount point> <type> <options> <dump> <pass> /dev/mapper/server--vg-root / ext4 errors=remount-ro 0 1 # /boot was on /dev/sda1 during installation UUID=40f8b7fe-3195-414a-a0e4-a4443cceb78c /boot ext2 defaults 0 2 /dev/mapper/server--vg-swap_1 none swap sw 0 0 /dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0 /swapfile none swap sw 0 0
我们可以使用以上步骤使用交换文件来增加交换空间,从而解决与内存异常相关的问题。如果我们在任何 Linux 服务器上内存不足,那么以上内容将特别有用。