问:我是一个Ubuntu 14.04 LTS版本的新手。我需要一块额外的swap文件来提高我Ubuntu服务器的性能。我怎样才能通过SSH连接用相关命令为我的Ubuntu 14.04 LTS 增加一块swap分区。
Swap文件除了作为一块磁盘存储以提高Ubuntu系统的内纯使用效率意外,什么都不是,在本教程,你将会学到如何在Ubuntu系统上去创建以及使用Swap文件。
在Ubuntu服务器版或者桌面版,什么是Swap文件?
作为系统管理员是很有必要在系统安装完成后为其添加额外的swap文件,而swap文件也可以让Ubuntu 去使用硬盘去提高虚拟内存。
Virtual Memory = RAM + Swap space/file Virtual Memory (1GB) = Actual RAM (512MB) + Swap space/file (512MB)
当Ubuntu服务器运行时内存不足,它交换一段RAM(比如foo空闲程序)到硬盘(交换空间)释放内存的其他程序。然后当你需要这个程序(比如foo再次),内核将会交换Foo程序,它会通过RAM里的里一个程序改变位置。
在Ubuntu添加swap分区的步骤
- 切换到root账户,通过
$ su -
命令登陆为root用户(注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用乎的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)
-
创建swap分区命令
- 在Ubuntu上输入下面命令创建2GB swap分区
# dd if=/dev/zero of=/swapfile bs=1G count=2
返回结果
records in 2+0 records out 2147483648 bytes (2.1 GB) copied, 20.2256 s, 106 MB/s
- 验证在服务器上以创建的分区
# ls -lh /swapfile
返回结果
-rw-r--r-- 1 root root 2.0G Apr 14 01:00 /swapfile
-
用fallocate命令创建swap分区
- 除了dd命令,还可以更快的fallocate命令创建swap分区。如下:
# fallocate -l 1G /swapfile-1 # ls -lh /swapfile-1
返回结果
-rw-r--r-- 1 root root 1.0G Apr 14 01:07 /swapfile-1
保护swap分区
处于安全角度,输入下面的chmod和chown命令保护以及设置正确文件权限
# chown root:root /swapfile-1 # chmod 0600 /swapfile-1 # ls -lh /swapfile-1 -rw------- 1 root root 1.0G Apr 14 01:07 /swapfile-1
< 一个所有人可读的swap分区是一个重大的本地漏洞。上面的命令确保只有root用户有可读可写权限。 >
- 启动swap分区
# mkswap /swapfile-1
返回结果
Setting up swapspace version 1, size = 1048572 KiB no label, UUID=8ad873e3-165e-4a78-9bf5-f4acbcbbd46d
- 最终激活swap分区
# swapon /swapfile-1
- 在Ubuntu上验证并设置
输入以下命令
# swapon –s
返回结果
Filename Type Size Used Priority /swapfile-1 file 1048572 0 -1
怎么在Ubuntu上禁用swap分区?
你可以使用以下命令
# swapoff /swapfile-1 # swapon –s
更新/etc/fstab 文件
你需要在重启后确保swap分区在服务器在线后启用,编辑/etc/fstab文件。输入:
# vi /etc/fstab
增加一行,如下:
/swapfile-1 none swap sw 0 0
保存并退出
调整swap分区,即调整虚拟分区
怎样在Ubuntu上设置swapiness
语法如下:
# sysctl vm.swappiness=VALUE # sysctl vm.swappiness=20
或者
# echo VALUE > /proc/sys/vm/swappiness # echo 30 > /proc/sys/vm/swappiness
在/proc/sys/vm/swapiness的值控制着内核怎样强制的交换内存空间,更高的值对应着增加强制性强度,相反更低的值对应着减小强制性强度。默认的值是60。为了永久生效在/etc/sysctl.conf文件里加入一行命令,如下:
echo 'vm.swappiness=30' >> /etc/sysctl.conf
如果针对数据库,,如Oracle或者MySQL,小编建议你设置swapiness的值为10。
更多详情参照英文原文: Ubuntu Linux Create and Add Swap File Tutorial