CentOS 7系統增加swap

轉載請註明文章出處:CentOS 7系統增加swap

swap是位於磁盤上的特殊文件(或分區),屬於“虛擬內存”的一部分。通俗點就是內存的備胎,內存充足的情況下,基本上沒swap什麼事(和設置有關);內存不夠用時系統便將內存中的部分數據騰挪到swap中,爲正在運行的程序騰出內存。

使用swap能讓系統運行更多或更大型的程序,但由於swap的讀寫速度遠遜於內存,頻繁使用swap可能讓系統和程序有延遲卡頓。

大內存計算機swap有必要嗎?

對於內存較小的計算機,swap是非常有必要的。swap的存在能讓執行吃內存程序變得可能,執行慢總比不能運行或者奔潰強。但現代計算機動輒8G以上的內存,如非運行大型或專業軟件,內存足夠日常使用。這種情況下,swap有存在的必要嗎?

答案還是看使用場景。個人電腦上運行桌面版Linux並且開啓休眠功能,則應該劃分不小於內存的swap分區;如果是內存足夠大且常年不關機的服務器,沒有swap也毫無問題。

ssd硬盤要不要設置swap?

之前的ssd硬盤有讀寫壽命的問題,因此不建議將swap文件或分區放到ssd硬盤上。

目前的ssd硬盤技術已經升級換代更智能,如果有swap需求,放在ssd硬盤上也沒什麼問題。

swap設置多大好?

如果開啓休眠功能,應該劃分swap分區,並且分區大小不能小於內存,建議的值是“內存大小+2G”。

不用休眠功能的服務器,swap可以爲文件,一種確定swap大小的實用方法是:1G內存及以下,swap大小爲內存的兩倍;2-4G內存,與內存同等大小;5-16G內存,swap可固定爲4G;17-32G內存,8G swap;33 G及以上,固定爲16G swap。

上述方法不絕對,有特殊需求可酌情增減swap大小。

怎樣增加swap?

安裝操作系統時候可以分區(單獨掛載點)形式指定swap,也可以在系統安裝完成後動態添加和刪除。

查看swap

free命令可以查看系統活動的swap信息,例如:

$ free -m
# 輸出如下
#               total        used        free      shared  buff/cache   available
# Mem:           7976        4979         328         124        2669        2703
# Swap:             0           0           0

第二行是swap信息,可以看到沒有活動的swap。

也可以用swapon命令查看活動的swap,例如:

$ swapon -s
# 沒有swap信息,所以無輸出
# 有swap的輸出爲
# Filename              Type        Size    Used    Priority
# /swap                                     file    2097148 281052  -2

增加swap

假設我們打算運行一個非常佔用內存的程序,8G物理內存不夠,便可藉助swap增加系統可用的虛擬內存。操作方法如下:

  1. 選定或創建一個作爲swap的文件(也可以用分區),常用創建指定大小文件的命令有fallocatedd。例如創建一個8G大小的文件:

    <pre># fallocate

sudo fallocate -l 8G /swap

dd

sudo dd bs=1GB count=8 if=/dev/zero of=/swap
</pre>


由於`dd`有複製的過程執行較慢,實踐中建議用`fallocate`;
  1. swap文件會存放內存中的數據,出於安全考慮應限制其它用戶的訪問:sudo chmod 0600 /swap;
  2. 將文件格式化爲swap文件:sudo mkswap /swap
  3. 啓用該swap文件:sudo swapon /swap;如果不想使用swap,可用swapoff命令卸載:sudo swapoff /swap
  4. 如果希望系統啓動後自動加載swap文件,在/etc/fstab文件增加一行:/swap swap swap sw 0 0

增加swap後,可用swapon -sfree -m命令查看swap信息。

swap相關設置

和swap最直接相關,也是影響系統性能的一個設置參數便是vm.swappiness。其值是0-100的整數,指示內存用掉百分之多少時開始使用swap。100表示儘可能使用swap,0則表示只有物理內存不夠時才用上swap備胎。對於服務器,建議10-30之間。

設置和更改swappiness的命令是:sudo sysctl vm.swappiness=10。該命令只對當前系統有效,系統重啓後又恢復默認值。要想設置永久生效,在/etc/sysctl.conf中增加或更改對應的設置行:vm.swappiness = 10

參考

  1. https://www.digitalocean.com/...
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章