使用fdisk和fallocate命令創(chuàng)建交換分區(qū)
交換分區(qū)在物理內(nèi)存(RAM)被填滿時用來保持內(nèi)存中的內(nèi)容。當(dāng) RAM 被耗盡,Linux 會將內(nèi)存中不活動的頁移動到交換空間中,從而空出內(nèi)存給系統(tǒng)使用。雖然如此,但交換空間不應(yīng)被認(rèn)為是物理內(nèi)存的替代品。
大多數(shù)情況下,建議交換內(nèi)存的大小為物理內(nèi)存的 1 到 2 倍。也就是說如果你有 8GB 內(nèi)存, 那么交換空間大小應(yīng)該介于8-16 GB。
若系統(tǒng)中沒有配置交換分區(qū),當(dāng)內(nèi)存耗盡后,系統(tǒng)可能會殺掉正在運行中的進(jìn)程/應(yīng)用,從而導(dǎo)致系統(tǒng)崩潰。在本文中,我們將學(xué)會如何為 Linux 系統(tǒng)添加交換分區(qū),我們有兩個辦法:
- 使用 fdisk 命令
- 使用 fallocate 命令
***個方法(使用 fdisk 命令)
通常,系統(tǒng)的***塊硬盤會被命名為 /dev/sda
,而其中的分區(qū)會命名為 /dev/sda1
、 /dev/sda2
。 本文我們使用的是一塊有兩個主分區(qū)的硬盤,兩個分區(qū)分別為 /dev/sda1
、 /dev/sda2
,而我們使用 /dev/sda3
來做交換分區(qū)。
首先創(chuàng)建一個新分區(qū),
$ fdisk /dev/sda
按 n
來創(chuàng)建新分區(qū)。系統(tǒng)會詢問你從哪個柱面開始,直接按回車鍵使用默認(rèn)值即可。然后系統(tǒng)詢問你到哪個柱面結(jié)束, 這里我們輸入交換分區(qū)的大?。ū热?1000MB)。這里我們輸入 +1000M
。
swap
現(xiàn)在我們創(chuàng)建了一個大小為 1000MB 的磁盤了。但是我們并沒有設(shè)置該分區(qū)的類型,我們按下 t
然后回車,來設(shè)置分區(qū)類型。
現(xiàn)在我們要輸入分區(qū)編號,這里我們輸入 3
,然后輸入磁盤分類號,交換分區(qū)的分區(qū)類型為 82
(要顯示所有可用的分區(qū)類型,按下 l
) ,然后再按下 w
保存磁盤分區(qū)表。
swap
再下一步使用 mkswap
命令來格式化交換分區(qū):
$ mkswap /dev/sda3
然后激活新建的交換分區(qū):
$ swapon /dev/sda3
然而我們的交換分區(qū)在重啟后并不會自動掛載。要做到***掛載,我們需要添加內(nèi)容到 /etc/fstab
文件中。打開 /etc/fstab
文件并輸入下面行:
$ vi /etc/fstab
/dev/sda3 swap swap default 0 0
保存并關(guān)閉文件?,F(xiàn)在每次重啟后都能使用我們的交換分區(qū)了。
第二種方法(使用 fallocate 命令)
我推薦用這種方法因為這個是最簡單、最快速的創(chuàng)建交換空間的方法了。fallocate
是最被低估和使用最少的命令之一了。 fallocate
命令用于為文件預(yù)分配塊/大小。
使用 fallocate
創(chuàng)建交換空間,我們首先在 /
目錄下創(chuàng)建一個名為 swap_space
的文件。然后分配 2GB 到 swap_space
文件:
$ fallocate -l 2G /swap_space
我們運行下面命令來驗證文件大?。?/p>
$ ls -lh /swap_space
然后更改文件權(quán)限,讓 /swap_space
更安全:
$ chmod 600 /swap_space
這樣只有 root 可以讀寫該文件了。我們再來格式化交換分區(qū)(LCTT 譯注:雖然這個 swap_space
是個文件,但是我們把它當(dāng)成是分區(qū)來掛載):
$ mkswap /swap_space
然后啟用交換空間:
$ swapon -s
每次重啟后都要重新掛載磁盤分區(qū)。因此為了使之持久化,就像上面一樣,我們編輯 /etc/fstab
并輸入下面行:
/swap_space swap swap sw 0 0
保存并退出文件?,F(xiàn)在我們的交換分區(qū)會一直被掛載了。我們重啟后可以在終端運行 free -m
來檢查交換分區(qū)是否生效。