【linux】循序漸進學運維-基礎篇-擴展swap分區


大家好,我是高勝寒,本文是Linux運維-循序漸進學運維-基礎篇的第49篇原創文章。

今天我們來聊聊分區當中的sawp分區。

1. swap分區是幹嘛的?

在Linux下,SWAP的作用類似Windows系統下的“虛擬內存”。當物理內存不足時,拿出部分硬盤空間當SWAP分區(虛擬成內存)使用,從而解決內存容量不足的情況。

比如我們的手機內存是2G,當出現看電影比較卡頓的時候,我們可以獲取手機root權限,把硬盤裏的某個文件擴展成swap分區,這樣當手機內存不足的時候,就可以直接使用swap內存。

當然了,我們的swap空間一旦用完,操作系統就會幹掉消耗內存最多的進程來釋放部分內存。就是這麼霸道。

有詩云:
獨坐池塘如虎踞, 綠蔭樹下養精神。
春來我不先開口 ,哪個蟲兒敢作聲。

就是這麼霸道的操作系統!

2. swap的工作機制?

Linux對於內存的回收有兩種情況,一種是分配內存的時候發現沒有足夠的空間內存可以分配,這時候會觸發回收內存
第二種情況是,開啓了一個守護進程,週期性的對系統內存進行檢查,在可用內存降低到一定的閾值之後會主動觸發內存回收。

這就跟我們老家設計的自動上水裝置是一樣的,在大缸裏放上一個懸浮球,懸浮球對應這上水總閘, 當水位持續降低到大缸的1/4的時候,懸浮球牽引的線,達到了最緊狀態,牽動了上水總閘的開關,自動通電上水,當水位達到了大缸的上限閾值之後,自動停止上水。

那麼既然說得到內存回收,Linux的內存回收,究竟回收的是什麼?

其實回收也分兩種情況:

  1. 文件緩存。我們的文件都是要讀取到內存當中的,所以這部分緩存如果只是讀取文件,可以收回,下次讀取再從硬盤讀取即可。
  2. 匿名內存, 這部分內存沒有實際的載體,比如堆,棧數據等。 這部分數據回收的時候不能直接釋放,隨意我們用swap將這類內存換出到硬盤中,需要的時候在加載出來。

我之前的文章中有提到過swappiness, 這個值是用來定義內核使用swap的積極程度。值越高說明內核會積極的使用swappiness. 而Linux也是根據swappiness來決定回收哪類內存的。

3. 如何查看swap 分區

在這裏插入圖片描述
我這裏有個1GB的swap,是我之間建的,你的應該沒有這個。

4. 什麼時候會用到swap擴容

之前有學員買了個阿里雲,在上面安裝了zabbix,但zabbix一直告警: swap空間不足。 事實上現在的雲服務器都沒有swap空間,所以這個時候你需要用到擴容。

當然凡是涉及到環境檢查的時候,發現swap空間檢查不通過,我們就要第一時間對swap分區進行擴容。

5. swap擴展實戰

方案一: 使用硬盤做swap分區
1) 分區

在這裏插入圖片描述

2) 格式化成swap格式

在這裏插入圖片描述

3) 開啓與關閉swap

在這裏插入圖片描述
關閉來測試下:
在這裏插入圖片描述

方法二: 通過文件增加swap空間
1) 使用dd命令生成1G大小的文件
[root@gaosh-1 ~]# dd if=/dev/zero of=swap_file bs=1M count=1000
記錄了1000+0 的讀入
記錄了1000+0 的寫出
1048576000字節(1.0 GB)已複製,22.4257 秒,46.8 MB/秒
[root@gaosh-1 ~]# 

2)查看生成的文件並給權限

在這裏插入圖片描述

[root@gaosh-1 ~]# chmod 0600 /root/swap_file 
[root@gaosh-1 ~]# mkswap -f /root/swap_file    #格式化
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=678f0d13-3105-4930-a89a-21e7a30a5d26
[root@gaosh-1 ~]# swapon /root/swap_file    #加入swap
[root@gaosh-1 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:          3547       2604        943          3         76       2064
-/+ buffers/cache:        462       3084
Swap:         3255          0       3255
[root@gaosh-1 ~]# 

可以看到在方法一的時候,swap是2255, 方法二又加了1G內存,現在是3547

總結

swap分區中,使用分區添加,只要你會使用fdisk添加分區了,就很容易學會。 而使用dd這種方法也比較常見,而且dd 可以做很多事情,比如備份,恢復,銷燬磁盤等,我們後面會單獨拿出時間來說dd的使用。

我是高勝寒,一個在教培行業不忘初心的人,歡迎點贊收藏,我們下篇文章見。

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