Linux中國

三種在 Linux 上創建或擴展交換分區的簡單方法

用戶可以在任何 Linux 操作系統的安裝過程中或者是其它必要的時候創建交換空間。如果你在安裝 Linux 的時候忘記了創建或是你想要再增加交換分區的空間,你隨時都可以再創建或增加。

有時候在你安裝後搖升級 RAM 的時候需要增加一點交換分區的空間,比如你要將你的系統的 RAM 從 1GB 升級到 2GB 你,那麼你就不得不將你的交換分區空間也升級一下(從 2GB 到 4GB),這是因為它使用的容量是物理 RAM 的雙倍容量。(LCTT 譯註:其實這裡是個誤區,交換分區不一定非得是雙倍的物理內存容量,只是慣例如此。事實上,如果你的物理內存足夠的話,你完全可以不用交換分區——在這裡的情形下,或許你增加了物理內存,就沒必要增加交換分區大小了。)

交換空間是當物理內存(RAM 隨機存取存儲器)的用量已滿時,被保留用作虛擬內存的磁碟上的空間。 如果系統在 RAM 滿載時需要更多的內存資源,內存中的非活動頁面將被移動到交換空間,這樣可以幫助系統運行應用程序更多的時間,但不應該把它當做 RAM 的擴展。

建議你創建一個專用的交換分區,但是如果你沒有可用的分區,那麼可以使用交換文件,或交換分區和交換文件的組合。 交換空間通常建議用戶至少 4 GB,用戶也可以根據自己的要求和環境創建交換空間。

我發現大部分 VM 和 雲伺服器都沒有交換分區,所以在這種情況下,我們可以使用以下三種方法創建,擴展或增加交換空間。

如何檢測當前交換分區大小

通過 free & swapon 命令來檢測當前的交換分區空間的大小。

$ free -h
              total        used        free      shared  buff/cache   available
Mem:           2.0G        1.3G        139M         45M        483M        426M
Swap:          2.0G        655M        1.4G

$ swapon --show
NAME      TYPE      SIZE   USED PRIO
/dev/sda5 partition   2G 655.2M   -1

上面的輸出顯示了當前的交換分區空間是 2GB

方法 1 : 通過 fallocate 命令創建交換文件

fallocate 程序是立即創建預分配大小的文件的最佳方法。

下面這個命令會創建一個 1GB 大小 的 /swapfile

$ sudo fallocate -l 1G /swapfile

檢查一下創建的文件的大小是否正確。

$ ls -lh /swapfile
-rw-r--r-- 1 root root 1.0G Jun  7 09:49 /swapfile

將該文件的許可權設置為 600 這樣只有 root 用戶可以訪問這個文件。

$ sudo chmod 600 /swapfile

通過運行以下的命令來將此文件轉換為交換文件。

$ sudo mkswap /swapfile
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=cda50e0e-41f3-49c7-af61-b8cb4a33a464

通過運行以下的命令來使交換文件生效。

$ sudo swapon /swapfile

將新創建的交換文件添加到 fstab 文件中,這樣交換分區空間的修改即使在重啟後也可以生效。

$ vi /etc/fstab

/swapfile  swap  swap  defaults  0 0

檢查一下新創建的交換文件。

$ swapon --show
NAME      TYPE       SIZE   USED PRIO
/dev/sda5 partition    2G 657.8M   -1
/swapfile file      1024M     0B   -2

現在我可以看到一個新的 1GB 的 /swapfile1 文件了。重啟系統以使新的交換文件生效。

方法 2 : 通過 dd 命令來創建交換文件

dd 命令是另一個實用程序,可以幫助我們立即創建預分配大小的文件。

以下 dd 命令將創建 1GB 的 /swapfile1

$ sudo dd if=/dev/zero of=/swapfile1 bs=1G count=1
1+0 records in
1+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 16.6154 s, 64.6 MB/s

詳解:

  • if=/dev/zero 是輸入文件,/dev/zero 是類 Unix 操作系統中的一個特殊文件,它提供從它讀取的儘可能多的空字元(ASCII NUL,0x00)。
  • of=/swapfile1 設置輸出文件。
  • bs=1G 一次性讀寫的大小為 1GB
  • count=1 僅複製一個輸入塊

檢查一下創建的文件的大小是否正確。

$ ls -lh /swapfile1
-rw-r--r-- 1 root root 1.0G Jun  7 09:58 /swapfile1

將該文件的許可權設置為 600 這樣只有 root 用戶可以訪問這個文件。

$ sudo chmod 600 /swapfile1

通過運行以下的命令來將此文件轉換為交換文件。

$ sudo mkswap /swapfile1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=96def6d7-b2da-4954-aa72-aa32316ec993

通過運行以下的命令來使交換文件生效。

$ sudo swapon /swapfile1

將新創建的交換文件添加到 fstab 文件中,這樣交換分區空間的修改即使在重啟後也可以生效。

$ vi /etc/fstab

/swapfile1  swap  swap  defaults  0 0

檢查新創建的交換文件。

$ swapon --show
NAME       TYPE       SIZE USED PRIO
/dev/sda5  partition    2G 1.3G   -1
/swapfile  file      1024M   0B   -2
/swapfile1 file      1024M   0B   -3

現在我可以看到一個新的 1GB 的 /swapfile1 了。重啟系統以使新的交換文件生效。

方法 3 : 通過硬碟分區來創建交換文件

我們也推薦使用通過硬碟分區的方式來創建交換分區。

如果你已經在你的另一個硬碟上通過 fdisk 命令創建了一個新的分區,假設我們已經創建了一個叫做 /dev/sda4 的分區。

使用 mkswap 命令來將這個分區轉換成交換分區。

$ sudo mkswap /dev/sda4

通過運行以下命令來使交換文件生效。

$ sudo swapon /dev/sda4

把新增的交換文件添加到 fstab 文件中,這樣即使是重啟了系統交換分區的修改也能生效。

$ vi /etc/fstab

/dev/sda4  swap  swap  defaults  0 0

檢查新創建的交換文件。

$ swapon --show
NAME       TYPE       SIZE USED PRIO
/dev/sda5  partition    2G 1.3G   -1
/swapfile  file      1024M   0B   -2
/swapfile1 file      1024M   0B   -3
/dev/sda4  partition    1G   0B   -4

我可以看到新的交換分區 1GB 的 /dev/sda4。重啟系統就可以使用新的交換分區了。

(題圖:Pixabay,CC0)

via: http://www.2daygeek.com/add-extend-increase-swap-space-memory-file-partition-linux/

作者:2DAYGEEK 譯者:chenxinlong 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國