简介
在计算机系统中,随机存取存储器(RAM)是存储运行中应用程序数据的关键组件。当物理 RAM 被完全占用时,操作系统可以使用硬盘的一部分作为「虚拟内存」来防止系统崩溃。这种虚拟内存通常被称为交换空间(swap space)。
本实验将指导你通过创建和启用交换文件来增加系统的虚拟内存。这是系统管理员在物理 RAM 有限的系统上提升性能的常用操作。你将学习如何检查内存使用情况、创建交换文件、激活它并监控其使用状态。
查看虚拟机的内存设置
在这一步中,你将检查 Linux 环境当前的内存和交换空间配置。这为我们后续的操作提供了一个基准。我们将使用 free 命令,它会显示系统中物理内存和交换内存的总量、已用量和空闲量。
首先,打开终端。为了获得人类可读的输出(例如以 MB 或 GB 为单位),我们使用 -h 标志。
执行以下命令:
free -h
你将看到类似以下的输出。具体数值可能会根据系统的当前状态而有所不同。
total used free shared buff/cache available
Mem: 3.5Gi 502Mi 1.2Gi 3.0Mi 1.8Gi 2.8Gi
Swap: 0B 0B 0B
在上述输出中:
Mem:这一行显示的是物理内存(RAM)。Swap:这一行显示的是虚拟内存(交换空间)。如你所见,目前没有配置任何交换空间。
我们的目标是添加一个交换文件,以增加总的可用虚拟内存。
将 RAM 分配增加到 4GB
在这一步中,你将创建一个 2GB 的文件作为交换空间,使其充当虚拟 RAM。我们将分几个子步骤完成:创建文件、设置权限、将其格式化为交换空间,最后启用它。
首先,我们将使用 fallocate 命令立即创建一个指定大小的文件。我们将在你的项目目录中创建一个名为 swapfile 的 2GB 文件。
sudo fallocate -l 2G ~/project/swapfile
接下来,出于安全考虑,我们必须确保只有 root 用户可以读写该交换文件。我们将使用 chmod 来设置正确的权限。
sudo chmod 600 ~/project/swapfile
现在,我们需要使用 mkswap 命令将此文件格式化为交换区域。
sudo mkswap ~/project/swapfile
你应该会看到确认设置的输出,其中包括新交换区域的 UUID。
Setting up swapspace version 1, size = 2 GiB (2147479552 bytes)
no label, UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
最后,使用 swapon 命令启用交换文件。这会使新的虚拟内存立即对系统生效。
sudo swapon ~/project/swapfile
系统现在正在使用刚刚创建的交换文件。
使用 free -h 命令验证 RAM 检测
在这一步中,你将验证新的交换文件是否已成功激活并被系统识别。我们将再次使用 free -h 命令,就像在第一步中所做的那样。
在终端中运行该命令:
free -h
现在,输出应该有所不同。注意 Swap 行现在显示了我们分配的 2GB 空间。
total used free shared buff/cache available
Mem: 3.5Gi 543Mi 1.2Gi 3.0Mi 1.8Gi 2.7Gi
Swap: 2.0Gi 0B 2.0Gi
这证实了你已成功为系统添加了 2GB 的虚拟内存。如果物理 RAM 不足,操作系统现在可以使用这部分空间。
使用 htop 命令监控 RAM 使用情况
在这一步中,你将学习使用 htop,这是一个流行的交互式进程查看器和系统监视器。与 top 命令相比,它提供了更详细且用户友好的系统资源视图。
你可以通过在终端中输入其名称来运行 htop。
htop
你的终端界面将被 htop 界面取代。在顶部,你将看到 CPU、内存(Mem)和交换空间(Swp)的仪表。观察 Swp 仪表,它现在显示了你配置的 2.00G 总交换空间。
CPU[|| 1.3%] Tasks: 31, 0 thr; 1 running
Mem[||||||||| 78/1985MB] Load average: 0.00 0.01 0.00
Swp[ 0/2048MB] Uptime: 00:05:10
该界面允许你实时监控物理内存和虚拟内存的使用情况。要退出 htop,只需按下键盘上的 q 键。
退出 htop 后,在点击「检查」之前,请运行一个简单的命令(例如 ls)。这可以确保你最近执行的 htop 命令被写入 shell 历史记录,以便验证器能够检测到。
还原更改并重启虚拟机
在最后一步中,你将学习如何禁用并移除交换文件。当你不再需要额外的虚拟内存或想要调整其大小时,此操作非常有用。
首先,你必须使用 swapoff 命令禁用交换文件。这会通知操作系统停止使用该文件进行交换。
sudo swapoff ~/project/swapfile
一旦交换文件被禁用,它就只是一个普通文件,你可以使用 rm 命令安全地删除它。
sudo rm ~/project/swapfile
为了确认更改已还原,最后再运行一次 free -h 命令。
free -h
输出现在应该与你在步骤 1 中看到的一致,Swap 行显示容量为零。
total used free shared buff/cache available
Mem: 3.5Gi 536Mi 1.1Gi 3.0Mi 1.9Gi 2.7Gi
Swap: 0B 0B 0B
你已成功将环境还原到初始状态。
总结
恭喜你完成了本实验!你已经成功学习了如何通过使用交换文件来管理 Linux 系统上的虚拟内存。
在本实验中,你练习了几项关键的系统管理技能:
- 使用
free -h检查系统内存。 - 使用
fallocate立即创建大文件。 - 使用
mkswap设置交换区域。 - 使用
swapon和swapoff启用及禁用交换空间。 - 使用
htop监控系统资源。
这些技能对于管理 Linux 服务器并确保其平稳运行至关重要,特别是在资源受限的环境中。



