首頁 > 軟體

三種在 Linux 上建立或擴充套件交換分割區的簡單方法

2020-06-16 17:10:03

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

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

交換空間是當實體記憶體(RAM 隨機存取記憶體)的用量已滿時,被保留用作虛擬記憶體的磁碟上的空間。 如果系統在 RAM 滿載時需要更多的記憶體資源,記憶體中的非活動頁面將被移動到交換空間,這樣可以幫助系統執行應用程式更多的時間,但不應該把它當做 RAM 的擴充套件。

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

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

 

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

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

  1. $ free -h
  2. total used free shared buff/cache available
  3. Mem:2.0G1.3G139M45M483M426M
  4. Swap:2.0G655M1.4G
  5. $ swapon--show
  6. NAME TYPE SIZE USED PRIO
  7. /dev/sda5 partition 2G655.2M-1

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

 

方法 1 : 通過 fallocate 命令建立交換檔案

fallocate 程式是立即建立預分配大小的檔案的最佳方法。

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

  1. $ sudo fallocate -l 1G/swapfile

檢查一下建立的檔案的大小是否正確。

  1. $ ls-lh /swapfile
  2. -rw-r--r--1 root root 1.0GJun709:49/swapfile

將該檔案的許可權設定為 600 這樣只有 root 使用者可以存取這個檔案。

  1. $ sudochmod600/swapfile

通過執行以下的命令來將此檔案轉換為交換檔案。

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

通過執行以下的命令來使交換檔案生效。

  1. $ sudoswapon/swapfile

將新建立的交換檔案新增到 fstab 檔案中,這樣交換分割區空間的修改即使在重新啟動後也可以生效。

  1. $ vi/etc/fstab
  2. /swapfile swap swap defaults 00

檢查一下新建立的交換檔案。

  1. $ swapon--show
  2. NAME TYPE SIZE USED PRIO
  3. /dev/sda5 partition 2G657.8M-1
  4. /swapfile file1024M0B-2

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

 

方法 2 : 通過 dd 命令來建立交換檔案

dd 命令是另一個實用程式,可以幫助我們立即建立預分配大小的檔案。

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

  1. $ sudoddif=/dev/zero of=/swapfile1 bs=1G count=1
  2. 1+0 records in
  3. 1+0 records out
  4. 1073741824 bytes (1.1 GB,1.0GiB) copied,16.6154 s,64.6 MB/s

詳解:

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

檢查一下建立的檔案的大小是否正確。

  1. $ ls-lh /swapfile1
  2. -rw-r--r--1 root root 1.0GJun709:58/swapfile1

將該檔案的許可權設定為 600 這樣只有 root 使用者可以存取這個檔案。

  1. $ sudochmod600/swapfile1

通過執行以下的命令來將此檔案轉換為交換檔案。

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

通過執行以下的命令來使交換檔案生效。

  1. $ sudoswapon/swapfile1

將新建立的交換檔案新增到 fstab 檔案中,這樣交換分割區空間的修改即使在重新啟動後也可以生效。

  1. $ vi/etc/fstab
  2. /swapfile1 swap swap defaults 00

檢查新建立的交換檔案。

  1. $ swapon--show
  2. NAME TYPE SIZE USED PRIO
  3. /dev/sda5 partition 2G1.3G-1
  4. /swapfile file1024M0B-2
  5. /swapfile1 file1024M0B-3

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

 

方法 3 : 通過硬碟分割區來建立交換檔案

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

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

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

  1. $ sudomkswap/dev/sda4

通過執行以下命令來使交換檔案生效。

  1. $ sudoswapon/dev/sda4

把新增的交換檔案新增到 fstab 檔案中,這樣即使是重新啟動了系統交換分割區的修改也能生效。

  1. $ vi/etc/fstab
  2. /dev/sda4 swap swap defaults 00

檢查新建立的交換檔案。

  1. $ swapon--show
  2. NAME TYPE SIZE USED PRIO
  3. /dev/sda5 partition 2G1.3G-1
  4. /swapfile file1024M0B-2
  5. /swapfile1 file1024M0B-3
  6. /dev/sda4 partition 1G0B-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中國 榮譽推出

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-07/145750.htm


IT145.com E-mail:sddin#qq.com