CentOS7 上配置 Swap 交换空间
前言
swap 通常在传统机械硬盘上表现更好, 在 SSD 上使用 swap 可能会造成问题, 尤其是硬件老化之后. 所以, 对于 DigitalOcean 以及其他使用基于 SSD 的云主机服务的用户, 我们不推荐启用 swap. 这甚至会影响到跟你的虚拟机共用宿主机的其他用户.
对于 DigitalOcean 用户, 提升性能的最佳方法就是更新 Droplet. 通常来说, 升级后的主机表现都会有所提升, 并且更不容易受到硬件问题的影响.
配置 Swap
检查系统的 Swap 信息, 查看是否已经配置过 swap. 一个系统可以设置多个 swap, 不过一般来说一个就够了.
执行 swapon -s, 如果该命令没有返回出结果, 则代表该系统尚未配置过 swap.
或者, 我们也可以使用 free -m 来查看系统的整体内存使用情况, 这里可以看到内存和 swap 的使用状态(显示单位为 MB):
这里可以看到我们这个系统的 total swap 空间为 0, 即没有配置过 swap. 这与我们在 swapon 里看到的结果相符合.free-m
total used free shared buffers cached
Mem:39533153637811107
-/+ buffers/cache:1963756
Swap:004095
检查可用的存储空间. 通常, 我们建立一个单独的分区作为 swap. 然而有时候由于硬件或软件的限制, 新建分区的方式无法实现, 这种情况下就可以建立一个 swap 文件来实现同样的功能.df-h
FilesystemSizeUsedAvailUse%Mountedon
/dev/vda159G1.5G55G3%/
devtmpfs2.0G02.0G0%/dev
tmpfs2.0G02.0G0%/dev/shm
tmpfs2.0G8.3M2.0G1%/run
tmpfs2.0G02.0G0%/sys/fs/cgroup
创建 Swap 文件
合适的 swap 空间是多大? 一般来说, 内存容量的两倍就是个不错的起点.
接下来我们要在根目录下创建一个名叫 swapfile 的文件, 当然你也可以选择你喜欢的文件名. 该文件分配的空间将等于我们需要的 swap 空间.
最快捷的创建方式是 fallocate 命令, 该命令能够创建一个预分配指定大小空间的文件. 输入如下指令创建一个 4GB 的文件:
sudo fallocate -l 4G /swapfile
该 swap 文件将立即创建完毕. 我们可以用 ls 命令检查文件大小: ls -lh /swapfile
至此, 我们的 swap 文件就创建完毕了.
启用 Swap 文件
现在我们已经有了 swap 文件, 但系统还不知道应该使用该文件作为 swap, 这就需要我们告知系统将该文件格式化为 swap 并启用起来.
首先我们需要更改 swap 文件的权限, 确保只有 root 才可读, 否则会有很大的安全隐患. 使用 chmod 命令进行权限操作:
sudo chmod 600 /swapfile
如此, 该文件的读写都只有 root 才能操作. 使用 ls -lh 命令检查一下:ls-lh/swapfile
-rw-------1root root4.0GOct3011:00/swapfile
然后, 使用如下命令告知系统将该文件用于 swap:sudo mkswap /swapfile
现在, 这个 swap 文件就可以作为 swap 空间使用了. 输入如下命令开始使用该 swap:sudo swapon /swapfile
我们可以输入如下命令来确认一下设置是否已经生效:swapon-s
FilenameTypeSizeUsedPriority
/swapfile file41943000-1
可以看到返回的结果中已经有我们刚才设置的 swap. 再使用 free 工具确认一下:free-m
total used free shared buffers cached
Mem:39533153637811107
-/+ buffers/cache:1963756
Swap:409504095
至此, 我们的 swap 已经设置完毕, 操作系统会在需要的时候使用它.
使 Swap 文件永久生效
至此我们已经在系统中启用了 swap 文件, 然而一旦系统重启后, 服务器还不能自动启用该文件. 要让系统在重启后自动生效 swap, 我们可以通过修改 fstab 文件来实现(这是一个管理文件系统和分区的表).
来源: https://www.qcloud.com/developer/article/1348110