在Linux上手動增加Swap分區
Linux Swap交換分區
需求背景
在我的個人低配ECS CentOS上,由於在使用composer update-vvv
升級項目使用的第三方庫時出現下面的提示,根據資料顯示,大都是缺少Linux Swap引起的。
錯誤顯示如下:
關於LINUX交換分區
LinuxRAM由內存頁組成的塊組成的。為了釋放RAM,就可能產生「linux交換分區」,並將部分內存從RAM複製到硬碟上的預配置空間。Linux交換分區就是為了允許系統利用比原來可用的內存更多的內存。
但是,交換分區也有一些缺點。由於硬碟的讀寫速度比RAM慢得多,因此伺服器性能可能會大大減慢。另外,如果系統有太多文件從交換分區寫入和讀出,那麼swapthrashing可能發生(這會導致效率低下,因為大部分時間消耗在訪問磁碟上)。
Advertisements
增加交換空間步驟:
檢查交換分區空間
在我們繼續交換分區文件之前,我們需要查看交換分區使用情況,檢查是否已經啟用了交換分區文件。
命令:
swapon -s
如果沒有返回,則摘要為空,不存在交換分區文件。
檢查文件系統
在知道我們沒有啟用交換分區文件后,我們可以使用df命令檢查伺服器上有多少剩餘空間。交換分區文件需要512MB,以下結果顯示我們只使用了大約7%的
/dev/hda
磁碟空間。df
顯示:
創建並啟用交換分區文件
現在是使用dd命令創建交換分區文件本身的時候了:
sudo dd if=/dev/zero of=/swapfile bs=1024 count=512k
"of=/swapfile" 指定文件的名稱,這裡我們取的名稱是swapfile。
Advertisements
為交換文件創建一個linux交換分區區域:
sudo mkswap /swapfile
結果顯示:
Setting up swapspace version 1, size = 536866 kB
通過激活交換分區文件完成工作:
sudo swapon /swapfile
查看交換分區摘要,將可以看到新的交換分區文件:
swapon -s
顯示:
做完這些工作后,如果伺服器重啟,那麼這個交換分區會消失。可以通過將交換分區配置添加到fstab文件來確保交換分區一直存在。
打開文件:
sudo vim /etc/fstab
在fstab文件最下面粘貼以下內容就可以:
/swapfile swap swap defaults 0 0
這個交換分區文件只應該有讀的許可權,所以我們要給它設置正確的許可權:
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
到此大功告成!