如何在Ubuntu12.04上添加交换

来自菜鸟教程
跳转至:导航、​搜索


状态: 已弃用

本文介绍了不再受支持的 Ubuntu 版本。 如果您当前正在运行运行 Ubuntu 12.04 的服务器,我们强烈建议您升级或迁移到受支持的 Ubuntu 版本:

原因: Ubuntu 12.04 已于 2017 年 4 月 28 日终止生命周期 (EOL) and no longer receives security patches or updates. This guide is no longer maintained.

请参阅:
本指南可能仍可用作参考,但可能不适用于其他 Ubuntu 版本。 如果可用,我们强烈建议使用为您正在使用的 Ubuntu 版本编写的指南。 您可以使用页面顶部的搜索功能来查找更新的版本。


关于 Linux 交换

Linux RAM 由称为页面的内存块组成。 为了释放 RAM 页面,可以进行“linux 交换”,并将内存页面从 RAM 复制到硬盘上的预配置空间。 Linux 交换允许系统利用比最初物理可用更多的内存。

但是,交换确实有缺点。 由于硬盘的内存比 RAM 慢得多,因此虚拟专用服务器的性能可能会大大降低。 此外,如果系统因太多文件被换入和换出而被淹没,则可能会开始发生交换抖动。

笔记

尽管对于使用传统旋转硬盘的系统通常建议使用交换,但使用 SSD 交换可能会导致硬件随着时间的推移而退化。 出于这一考虑,我们不建议在 DigitalOcean 或任何其他使用 SSD 存储的提供商上启用交换。 这样做会影响您和您的邻居的底层硬件的可靠性。

如果您需要提高服务器的性能,我们建议升级您的 Droplet。 这通常会带来更好的结果,并且会降低导致可能影响服务的硬件问题的可能性。


检查交换空间

在我们继续设置交换文件之前,我们需要通过查看交换使用摘要来检查 VPS 上是否已启用任何交换文件。

sudo swapon -s

一个空列表将确认您没有启用任何交换文件:

Filename               Type        Size    Used    Priority

检查文件系统

在我们知道我们没有在虚拟服务器上启用交换文件后,我们可以使用 df 命令检查服务器上有多少空间。 交换文件将占用 256MB——因为我们只使用了大约 8% of /dev/sda,我们可以继续。

df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/sda        20907056 1437188  18421292   8% /
udev              121588       4    121584   1% /dev
tmpfs              49752     208     49544   1% /run
none                5120       0      5120   0% /run/lock
none              124372       0    124372   0% /run/shm

创建并启用交换文件

现在是时候使用 dd 命令创建交换文件本身了:

sudo dd if=/dev/zero of=/swapfile bs=1024 count=256k

“of=/swapfile”指定文件名。 在这种情况下,名称是交换文件。

随后我们将通过创建一个 linux 交换区来准备交换文件:

sudo mkswap /swapfile

结果显示:

Setting up swapspace version 1, size = 262140 KiB
no label, UUID=103c4545-5fc5-47f3-a8b3-dfbdb64fd7eb

通过激活交换文件完成:

sudo swapon /swapfile

然后,当您查看交换摘要时,您将能够看到新的交换文件。

swapon -s
Filename                Type        Size    Used    Priority
/swapfile                               file        262140  0   -1

此文件将在虚拟专用服务器上持续存在,直到机器重新启动。 您可以通过将交换添加到 fstab 文件来确保交换是永久性的。

打开文件:

sudo nano /etc/fstab

粘贴到以下行:

 /swapfile       none    swap    sw      0       0 

文件中的 Swappiness 应设置为 10。 跳过这一步可能会导致性能下降,而将其设置为 10 将导致交换充当紧急缓冲区,防止内存不足崩溃。

您可以使用以下命令执行此操作:

echo 10 | sudo tee /proc/sys/vm/swappiness
echo vm.swappiness = 10 | sudo tee -a /etc/sysctl.conf

为防止文件被全世界读取,您应该在交换文件上设置正确的权限:

sudo chown root:root /swapfile 
sudo chmod 0600 /swapfile

埃特尔·斯维尔德洛夫