linux增加swap空間的方法小結

起因及背景

近期編譯AOSP(android 10.0)是總是遇到內存溢出,查了半天,無果。猜測增加下swap空間大小是否能解決,隨即嘗試下,果然是如此。 當然,還有其他作法,比如直接增加主機的內存(硬件方案)。

我的系統是Ubuntu 18.04。

Linux下swap空間大小通常在安裝系統時設置swap分區時預設的,不過系統提供了添加或改動swap分區的命令。

涉及的命令

  • free:查看內存狀態命令,可以顯示memory、swap、buffer/cache等的大小及使用狀況;
  • dd:讀取,轉換並輸出數據命令;
  • mkswap:設置交換區
  • swapon:啓用交換區,相當於mount
  • swapoff:關閉交換區,相當於umount

查看swap空間大小

通過查看內存狀態命令free可以獲得swap空間大小,正常狀況下可使用以下三個命令之一:

free free -m free -h

比如下面是free -h在我主機上的輸出:

$ free -h
                     total        used        free      shared  buff/cache   available
Mem:            13G        3.5G        2.7G        367M        7.4G        9.4G
Swap:           11G        126M         11G

關閉所有交換分區

命令如下:

swapoff -a

通過swap分區文件增加swap空間

1. 創建swap分區的文件

dd if=/dev/zero of=swapfile bs=1M count=1024 其中bs是每塊的大小,count是塊的數量;bs*count,就是swap文件的大小:這裏1M*1024=1G。可以根據需要自行調整。

此外,swapfile是swap文件的路徑,可以根據需求修改。

2. 格式化交換分區文件

mkswap swapfile 這裏的路徑和之前的路徑要對應起來。

3. 啓用swap分區文件

swapon swapfile

4. 添加開機啓動

修改/etc/fstab這個文件,添加或者修改這一行: swapfile swap swap defaults 0 0 注意,路徑還是要對應,而且必須是全路徑。最後兩個是零,不是大寫字母O。 此項不是必須的。如果不修改開機啓動配置,重啓之後的swap空間會重置,之前配置丟失。

通過新建分區來擴展原有swap空間

這個是Linode的默認做法,這裏也介紹一下。此方法與swap文件類似,只是使用了一個獨立分區,而不是文件。

  1. 使用fdisk創建交換分區(假設是 /dev/sdb2
  2. 使用mkswap設置交換分區: mkswap /dev/sdb2
  3. 啓用交換分區 swapon /dev/sdb2
  4. 修改/etc/fstab添加到開啓啓動項: /dev/sdb2 swap swap defaults 0 0

小結

本文簡單介紹了在Linux如何實現swap空間的增大,主要使用了swapon/swapoff/free等命令,僅供後續參考。

參考資料

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