UNIX交换空间简介
1. 简介
在本教程中,我们将介绍 Unix 交换空间、它的优点以及一些管理它的简单命令。
2. Unix 交换空间
** 交换或分页空间基本上是硬盘的一部分,操作系统可以将其用作可用 RAM 的扩展。这个空间可以用一个分区或一个简单的文件来分配。**
由于内存分页技术,特别是虚拟内存管理技术,我们的操作系统能够加载比我们计算机中物理内存需要更多内存的应用程序。
*当 RAM 已满时,活动应用程序的部分数据将被传输到*swap 空间,从而释放 RAM 以供其他立即需要的数据使用。
实施这项技术的原因是历史性的:第一台具有 虚拟内存 的机器是 1960 年代在剑桥建造的 Atlas 超级计算机,当时物理内存非常昂贵。
节省、额外的安全性和更高的可靠性为将所有系统切换到虚拟内存提供了强大的动力。
第一台 Atlas 安装在曼彻斯特大学并于 1962 年正式投入使用,是世界上第一台超级计算机之一,被认为是当时世界上最强大的计算机。
有关更多信息,请参阅原始Wikipedia 文章 。作者:Iain MacCallum – 来自我父亲 Iain MacCallum 的电子邮件,CC BY 3.0
3. 创建交换空间
如前所述,swap是为内存管理保留的空间。
**我们有两种方法可以告诉操作系统这个空间要分配到哪里。**我们可以在现有分区中创建一个新文件,或者我们可以分配一个swap类型的整个分区。
3.1.创建交换文件
首先,我们需要创建一个具有所需大小的空文件。
为此,我们使用 *dd *命令,适当地配置大小选项:
- bs - 控制一次写入的字节数作为一个块
- count – 指要写入的块数
让我们创建一个包含 4,096 个块的 4 GB 交换文件,每个块 1 MB:
sudo dd if=/dev/zero of=/myswapfile bs=1M count=4096
# Output
4096+0 records in
4096+0 records out
4294967296 bytes (4.3 GB, 4.0 GiB) copied, 20.0082 s, 215 MB/s
现在,让我们使用chmod 设置正确的权限:
sudo chmod 600 /myswapfile
下一步是使用命令mkswap 将文件设置为swap空间:
sudo mkswap /myswapfile
# Output
Setting up swapspace version 1, size = 4 GiB (4294963200 bytes)
no label, UUID=20721910-090f-4c2a-8442-0e6f50c9c1d6
并使用swapon 启用它:
sudo swapon /myswapfile
最后,我们将通过修改fstab 文件使我们的更改永久化,以防我们需要重新启动机器。
要将配置附加到文件末尾,我们将其*echo *到标准输出并将其通过管道传输到tee ,它可以逐行解析输入:
echo "/myswapfile swap swap defaults 0 0" | sudo tee -a /etc/fstab
3.2. 创建交换分区
分区情况与前一种情况的不同之处仅在于使用的格式——而不是文件,我们可以分配磁盘的整个部分。
为此,我们需要修改分区表以腾出空间并创建一个类型为swap的新分区。
有很多 GUI 工具(例如GParted )只需单击几下鼠标即可轻松安全且直观地更改分区表。
保存新分区后,让我们将其定义为swap:
mkswap /dev/sdXX
mkswap: /dev/sdXX: warning: wiping old swap signature.
Setting up swapspace version 1, size = 4.0 GiB (5266130944 bytes)
no label, UUID=a0a2d61c-bc3a-442a-acf1-120ecb041f9d
其中 sdXX应替换为新的分区名称。
然后,我们激活它:
sudo swapon /dev/sdXX
最后,就像在文件场景中一样,我们必须将新分区添加到我们的fstab文件中,以便下次重新启动时加载它:
echo "/dev/sdXX swap swap defaults 0 0" | sudo tee -a /etc/fstab
4. 监控交换空间
现在我们的swap空间是活动的,我们可能需要监控操作系统是如何使用它的。为此,我们有各种可用的命令可以为我们提供有关剩余自由swap的信息,其中一些比其他命令更图形化。
让我们探索一些基于文本的解决方案的简单示例。
4.1. swapon –show
swapon命令通常会激活一个swap空间,但如果我们指定*–show选项,它将返回有关活动交换*空间的数据:
sudo swapon --show
# Output
NAME TYPE SIZE USED PRIO
/myswapfile file 4024M 0B -2
/dev/sdXX partition 4G 0B -3
4.2. free -h
free 命令显示系统中可用和已用内存的数量,包括交换空间:
free -h
# Output
total used free shared buff/cache available
Mem: 4.9Gi 2.2Gi 193Mi 13Mi 2.6Gi 2.7Gi
Swap: 8.0Gi 2.0Mi 8.0Gi
4.3. cat/proc/swaps
Unix proc 文件系统包含有关各种内核数据结构的信息,包括swap:
cat /proc/swaps
# Output
Filename Type Size Used Priority
/myswapfile file 4194300 2272 -2
/dev/sdXX partition 4194300 0 -3
4.4. top
通常用于监视进程和资源,top 有一个有用的标题,其中包含各种统计信息,包括有关swap的统计信息:
top
# Output
top - 17:40:08 up 54 min, 1 user, load average: 0.29, 0.22, 0.12
Tasks: 188 total, 1 running, 187 sleeping, 0 stopped, 0 zombie
%Cpu(s): 17.5 us, 0.7 sy, 0.0 ni, 81.6 id, 0.0 wa, 0.0 hi, 0.2 si, 0.0 st
MiB Mem : 5050.7 total, 840.9 free, 1555.4 used, 2654.3 buff/cache
MiB Swap: 8192.0 total, 8189.8 free, 2.2 used. 3407.1 avail Mem
5. 删除交换空间
为了删除swap空间,我们必须遵循几个简单的步骤:
- 使用swapoff 停用要移除的空间:
sudo swapoff /myswapfile
- 从*/etc/fstab中删除swap*条目
- 删除文件或分区
这就是我们将机器重置为原始状态所需的全部内容。