在Linux上手動增加Swap分區

Linux Swap交換分區


需求背景

在我的個人低配ECS CentOS上,由於在使用composer update-vvv升級項目使用的第三方庫時出現下面的提示,根據資料顯示,大都是缺少Linux Swap引起的。

錯誤顯示如下:

關於LINUX交換分區

LinuxRAM由內存頁組成的塊組成的。為了釋放RAM,就可能產生「linux交換分區」,並將部分內存從RAM複製到硬碟上的預配置空間。Linux交換分區就是為了允許系統利用比原來可用的內存更多的內存。

但是,交換分區也有一些缺點。由於硬碟的讀寫速度比RAM慢得多,因此伺服器性能可能會大大減慢。另外,如果系統有太多文件從交換分區寫入和讀出,那麼swapthrashing可能發生(這會導致效率低下,因為大部分時間消耗在訪問磁碟上)。

Advertisements

增加交換空間步驟:

  1. 檢查交換分區空間

    在我們繼續交換分區文件之前,我們需要查看交換分區使用情況,檢查是否已經啟用了交換分區文件。

    命令:swapon -s

    如果沒有返回,則摘要為空,不存在交換分區文件。

  2. 檢查文件系統

    在知道我們沒有啟用交換分區文件后,我們可以使用df命令檢查伺服器上有多少剩餘空間。交換分區文件需要512MB,以下結果顯示我們只使用了大約7%的/dev/hda磁碟空間。

    df

    顯示:

  3. 創建並啟用交換分區文件

    現在是使用dd命令創建交換分區文件本身的時候了:

    sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k

    "of=/swapfile" 指定文件的名稱,這裡我們取的名稱是swapfile。

    Advertisements

  4. 為交換文件創建一個linux交換分區區域:

    sudo mkswap /swapfile

    結果顯示:

    Setting up swapspace version 1, size = 536866 kB

  5. 通過激活交換分區文件完成工作:

    sudo swapon /swapfile

  6. 查看交換分區摘要,將可以看到新的交換分區文件:

    swapon -s

    顯示:

  7. 做完這些工作后,如果伺服器重啟,那麼這個交換分區會消失。可以通過將交換分區配置添加到fstab文件來確保交換分區一直存在。

    打開文件:

    sudo vim /etc/fstab

    在fstab文件最下面粘貼以下內容就可以:

    /swapfile swap swap defaults 0 0
  8. 這個交換分區文件只應該有讀的許可權,所以我們要給它設置正確的許可權:

    chown root:root /swapfile

    chmod 0600 /swapfile

如何配置SWAPPINESS

操作系統內核可以通過稱為swappiness的配置參數來調整依賴交換分區的使用頻率。

  • 要查看當前的swappiness設置,使用命令:

    cat /proc/sys/vm/swappiness

    結果顯示為:

    60

Swapiness是0到100之間的值。接近100的Swappiness意味著操作系統會頻繁的使用交換分區。雖然交換分區給系統提供額外的資源,但RAM比交換分區空間讀寫速度快得多。不管什麼時候,程序從RAM移動到交換分區的話,它的運行速度都會減慢。

當Swappiness值為0時意味著操作只會在必須需要依靠交換分區時才會使用到它,比如,不使用交換分區,內存會溢出。

  • 我們可以使用sysctl命令調整swappiness:

    sysctl vm.swappiness=10

    顯示:

    vm.swappiness = 10

  • 如果我們再次檢查系統的swappiness值,可以看到已經修改了:

    cat /proc/sys/vm/swappiness

    顯示:

    10

  • 要使您的伺服器每次啟動時自動應用此設置,您可以將該設置添加到/etc/sysctl.conf文件中:

    sudo vim /etc/sysctl.conf

    增加內容:

    vm.swappiness = 10

到此大功告成!

Advertisements

你可能會喜歡