Home » Uncategorized » 在CentOS 7上添加swap交换空间

在CentOS 7上添加swap交换空间

在CentOS 7上添加swap交换空间

 Linux sxdgy   283℃

如何避免服务器应用出现内存不足的错误?最简单的方法就是增加交换空间。Swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西。这从某种程度上相当于增加了服务器的可用内存。虽然从swap读写比内存慢,但总比没有好,算是内存不够时的安全网。如果没有swap,则服务器一旦内存不足,就会开始终止应用以释放内存,甚至会崩溃,这会丢失一些还没来得及保存的数据,或者造成宕机。

注:swap通常在传统机械硬盘上表现更好,在SSD上使用swap可能会造成问题,尤其是硬件老化之后。所以,对于DigitalOcean以及其他使用基于SSD的云主机服务的用户,我们不推荐启用swap。这甚至会影响到跟你的虚拟机共用宿主机的其他用户。

1.检查Swap信息

首先我们需要检查系统的存储,看看是否已经配置过swap。一个系统可以设置多个swap文件或分区,不过一般来说一个就够了。使用swapon命令可以检查系统是否已经配置过swap,这是一个通用的swap工具。使用-s标签可列出当前存储设备上的swap使用情况:

  1. swapon s
  2. #如果该命令没有返回出结果,则代表该系统尚未配置过swap
  3. #或者使用free工具来查看系统的整体内存使用情况:
  4. free m
  5. #如果显示swap空间为0,即没有配置过swap

2.检查可用空间

通常,我们建立一个单独的分区作为swap。然而有时候由于硬件或软件的限制,无法新建分区,这种情况下就可以建立一个swap文件来实现同样的功能。开始之前,先检查一下磁盘的可用空间:

  1. df h
  2. #-h标记是为了告诉dh将信息输出为对人类友好的格式,比如以MB或GB为单位输出空间。
  3. #从第一行的Avail 可以看到存储分区的剩余空间。

3.创建Swap文件

合适的swap空间是多大?关于这个问题有很多种选择,这取决于你的应用需求和你个人的偏好。一般来说,内存容量的两倍就是个不错的起点。我的系统内存有1GB,所以我决定只设置2GB就好。接下来我们将在文件系统上创建swap文件。我们要在根目录(/)下创建一个名叫swap的文件,当然也可以设置成其他文件名。该文件分配的空间将等于我们需要的swap空间。最快捷的创建方式是fallocate命令,该命令能够创建一个预分配指定大小空间的文件。输入如下指令创建一个4GB的文件:

  1. fallocate l 2G /swap
  2. #有的云主机会报如下错误:
  3. fallocate: /swap: fallocate failed: Operation not supported
  4. #可以试下这个命令:
  5. truncate -s 2G /swap
  6. #如果后面启用swap文件时又报如下错误:
  7. swapon: /swap: skipping – it appears to have holes
  8. 可以再试试这个命令:
  9. dd if=/dev/zero of=/swap bs=4096 count=512k

4.启用Swap文件

现在虽然有了swap文件,但还需要将该文件格式化为swap格式并启用。

  1. #首先设置该swap文件的权限,确保只有root才可读,否则会有很大的安全隐患:
  2. chmod 600 /swap
  3. #然后设置该文件为swap格式
  4. mkswap /swap
  5. #最后设置系统启用该swap
  6. swapon /swap

4.检查Swap

确认一下设置是否已经生效:

  1. swapon s
  2. #或者使用free工具确认一下:
  3. free m

5.设置Swap开机自启

至此,系统已经启用了swap文件,然而一旦系统重启后,服务器还不能自动启用该文件。要让系统在重启后自动生效swap,我们可以通过修改fstab文件来实现:

  1. sudo nano /etc/fstab
  2. #在文件末尾加入下面这行内容,告诉操作系统自动使用刚才创建的swap文件:
  3. /swap swap swap sw 0 0

 

 

—————————————-

如何避免服务器应用出现内存不足的错误?最简单的方法就是增加交换空间。Swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西。这从某种程度上相当于增加了服务器的可用内存。虽然从swap读写比内存慢,但总比没有好,算是内存不够时的安全网。如果没有swap,则服务器一旦内存不足,就会开始终止应用以释放内存,甚至会崩溃,这会丢失一些还没来得及保存的数据,或者造成宕机。

注:swap通常在传统机械硬盘上表现更好,在SSD上使用swap可能会造成问题,尤其是硬件老化之后。所以,对于DigitalOcean以及其他使用基于SSD的云主机服务的用户,我们不推荐启用swap。这甚至会影响到跟你的虚拟机共用宿主机的其他用户。

1.检查Swap信息

首先我们需要检查系统的存储,看看是否已经配置过swap。一个系统可以设置多个swap文件或分区,不过一般来说一个就够了。使用swapon命令可以检查系统是否已经配置过swap,这是一个通用的swap工具。使用-s标签可列出当前存储设备上的swap使用情况:

  1. swapon s
  2. #如果该命令没有返回出结果,则代表该系统尚未配置过swap
  3. #或者使用free工具来查看系统的整体内存使用情况:
  4. free m
  5. #如果显示swap空间为0,即没有配置过swap

2.检查可用空间

通常,我们建立一个单独的分区作为swap。然而有时候由于硬件或软件的限制,无法新建分区,这种情况下就可以建立一个swap文件来实现同样的功能。开始之前,先检查一下磁盘的可用空间:

  1. df h
  2. #-h标记是为了告诉dh将信息输出为对人类友好的格式,比如以MB或GB为单位输出空间。
  3. #从第一行的Avail 可以看到存储分区的剩余空间。

3.创建Swap文件

合适的swap空间是多大?关于这个问题有很多种选择,这取决于你的应用需求和你个人的偏好。一般来说,内存容量的两倍就是个不错的起点。我的系统内存有1GB,所以我决定只设置2GB就好。接下来我们将在文件系统上创建swap文件。我们要在根目录(/)下创建一个名叫swap的文件,当然也可以设置成其他文件名。该文件分配的空间将等于我们需要的swap空间。最快捷的创建方式是fallocate命令,该命令能够创建一个预分配指定大小空间的文件。输入如下指令创建一个4GB的文件:

  1. fallocate l 2G /swap
  2. #有的云主机会报如下错误:
  3. fallocate: /swap: fallocate failed: Operation not supported
  4. #可以试下这个命令:
  5. truncate -s 2G /swap
  6. #如果后面启用swap文件时又报如下错误:
  7. swapon: /swap: skipping – it appears to have holes
  8. 可以再试试这个命令:
  9. dd if=/dev/zero of=/swap bs=4096 count=512k

4.启用Swap文件

现在虽然有了swap文件,但还需要将该文件格式化为swap格式并启用。

  1. #首先设置该swap文件的权限,确保只有root才可读,否则会有很大的安全隐患:
  2. chmod 600 /swap
  3. #然后设置该文件为swap格式
  4. mkswap /swap
  5. #最后设置系统启用该swap
  6. swapon /swap

4.检查Swap

确认一下设置是否已经生效:

  1. swapon s
  2. #或者使用free工具确认一下:
  3. free m

5.设置Swap开机自启

至此,系统已经启用了swap文件,然而一旦系统重启后,服务器还不能自动启用该文件。要让系统在重启后自动生效swap,我们可以通过修改fstab文件来实现:

  1. sudo nano /etc/fstab
  2. #在文件末尾加入下面这行内容,告诉操作系统自动使用刚才创建的swap文件:
  3. /swap swap swap sw 0 0