問:我是一個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分區的步驟
打開一個Terminal應用程序或者使用SSH客戶端遠程連接服務器,通過sudo命令登陸為root用戶
# sudo –s
創建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 Oct 29 14:07 /swapfile
用fallocate命令創建swap分區
除了dd命令,還可以更快的fallocate命令創建swap分區。如下:
# fallocate -l 1G /swapfile-1
# ls -lh /swapfile-1
返回結果
-rw-r--r-- 1 root root 1.0G Oct 29 14:11 /swapfile-1
保護swap分區
處於安全角度,輸入下面的chmod和chown命令保護以及設置正確文件權限
# chown root:root /swapfile
# chmod 0600 /swapfile
# ls -lh /swapfile
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=10231c61-6e55-4dd3-8324-9e2a892e7137
返回結果
-rw------- 1 root root 2.0G Oct 29 14:07 /swapfile
一個所有人可讀的swap分區是一個重大的本地漏洞。上面的命令確保只有root用戶有可讀可寫權限。
啟動swap分區
# mkswap /swapfile
返回結果
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=10231c61-6e55-4dd3-8324-9e2a892e7137
最終激活swap分區
# swapon /swapfile
在Ubuntu上驗證並設置
輸入以下命令
# swapon –s
返回結果
Filename Type Size Used Priority
/dev/sda5 partition 3998716 704 -1
/swapfile file 2097148 0 -2
你也可以運行下面命令去驗證創建的交換分區以及它的用法
怎麼在Ubuntu上禁用swap分區?
你可以使用以下命令
# swapoff /swapfile
# swapon –s
更新/etc/fstab 文件
你需要在重啟後確保swap分區在服務器在線後啟用,編輯/etc/fstab文件。輸入:
# vi /etc/fstab
增加一行,如下:
/swapfile 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。需要更多的信息請訪問the official Linux kernel virtual memory
如何在Ubuntu 14.04中創建SWAP交換分區文件 http://www.linuxidc.com/Linux/2014-08/105223.htm
如何擴展/刪除SWAP分區 http://www.linuxidc.com/Linux/2014-03/98311.htm
在OpenStack虛擬機實例中創建SWAP分區的一種方法 http://www.linuxidc.com/Linux/2013-07/87380.htm
Linux 中交換空間 (SWAP)應該分多大才好? http://www.linuxidc.com/Linux/2013-05/84252.htm
Linux SWAP 分區建立及釋放內存 http://www.linuxidc.com/Linux/2013-03/81890.htm
Linux SWAP 交換分區配置說明 http://www.linuxidc.com/Linux/2013-03/82008.htm
Ubuntu 12.04的SWAP設置 http://www.linuxidc.com/Linux/2013-03/80208.htm
更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2
英文原文:Ubuntu Linux Create and Add Swap File Tutorial
譯者:又耳寧
本文由 Linux公社翻譯組 原創翻譯 Linux公社推出