用戶可以在任何 Linux 操作系統(tǒng)的安裝過程中或者是其它必要的時(shí)候創(chuàng)建交換空間。如果你在安裝 Linux 的時(shí)候忘記了創(chuàng)建或是你想要再增加交換分區(qū)的空間,你隨時(shí)都可以再創(chuàng)建或增加。
有時(shí)候在你安裝后搖升級 RAM 的時(shí)候需要增加一點(diǎn)交換分區(qū)的空間,比如你要將你的系統(tǒng)的 RAM 從 1GB 升級到 2GB 你,那么你就不得不將你的交換分區(qū)空間也升級一下(從 2GB 到 4GB),這是因?yàn)樗褂玫娜萘渴俏锢?RAM 的雙倍容量。(LCTT 譯注:其實(shí)這里是個(gè)誤區(qū),交換分區(qū)不一定非得是雙倍的物理內(nèi)存容量,只是慣例如此。事實(shí)上,如果你的物理內(nèi)存足夠的話,你完全可以不用交換分區(qū)——在這里的情形下,或許你增加了物理內(nèi)存,就沒必要增加交換分區(qū)大小了。)
交換空間是當(dāng)物理內(nèi)存(RAM 隨機(jī)存取存儲(chǔ)器)的用量已滿時(shí),被保留用作虛擬內(nèi)存的磁盤上的空間。 如果系統(tǒng)在 RAM 滿載時(shí)需要更多的內(nèi)存資源,內(nèi)存中的非活動(dòng)頁面將被移動(dòng)到交換空間,這樣可以幫助系統(tǒng)運(yùn)行應(yīng)用程序更多的時(shí)間,但不應(yīng)該把它當(dāng)做 RAM 的擴(kuò)展。
建議你創(chuàng)建一個(gè)專用的交換分區(qū),但是如果你沒有可用的分區(qū),那么可以使用交換文件,或交換分區(qū)和交換文件的組合。 交換空間通常建議用戶至少 4 GB,用戶也可以根據(jù)自己的要求和環(huán)境創(chuàng)建交換空間。
我發(fā)現(xiàn)大部分 VM 和 云服務(wù)器都沒有交換分區(qū),所以在這種情況下,我們可以使用以下三種方法創(chuàng)建,擴(kuò)展或增加交換空間。
如何檢測當(dāng)前交換分區(qū)大小
通過 free & swapon 命令來檢測當(dāng)前的交換分區(qū)空間的大小。
$ free -htotal used free shared buff/cache availableMem: 2.0G 1.3G 139M 45M 483M 426MSwap: 2.0G 655M 1.4G$ swapon --showNAME TYPE SIZE USED PRIO/dev/sda5 partition 2G 655.2M -1
上面的輸出顯示了當(dāng)前的交換分區(qū)空間是 2GB 。
方法 1 : 通過 fallocate 命令創(chuàng)建交換文件
fallocate 程序是立即創(chuàng)建預(yù)分配大小的文件的最佳方法。
下面這個(gè)命令會(huì)創(chuàng)建一個(gè) 1GB 大小 的 /swapfile。
$ sudo fallocate -l 1G /swapfile
檢查一下創(chuàng)建的文件的大小是否正確。
$ ls -lh /swapfile-rw-r--r-- 1 root root 1.0G Jun 7 09:49 /swapfile
將該文件的權(quán)限設(shè)置為 600 這樣只有 root 用戶可以訪問這個(gè)文件。
$ sudo chmod 600 /swapfile
通過運(yùn)行以下的命令來將此文件轉(zhuǎn)換為交換文件。
$ sudo mkswap /swapfileSetting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=cda50e0e-41f3-49c7-af61-b8cb4a33a464
通過運(yùn)行以下的命令來使交換文件生效。
$ sudo swapon /swapfile
將新創(chuàng)建的交換文件添加到 fstab 文件中,這樣交換分區(qū)空間的修改即使在重啟后也可以生效。
$ vi /etc/fstab/swapfile swap swap defaults 0 0
檢查一下新創(chuàng)建的交換文件。
$ swapon --showNAME TYPE SIZE USED PRIO/dev/sda5 partition 2G 657.8M -1/swapfile file 1024M 0B -2
現(xiàn)在我可以看到一個(gè)新的 1GB 的 /swapfile1 文件了。重啟系統(tǒng)以使新的交換文件生效。
方法 2 : 通過 dd 命令來創(chuàng)建交換文件
dd 命令是另一個(gè)實(shí)用程序,可以幫助我們立即創(chuàng)建預(yù)分配大小的文件。
以下 dd 命令將創(chuàng)建 1GB 的 /swapfile1。
$ sudo dd if=/dev/zero of=/swapfile1 bs=1G count=11+0 records in1+0 records out1073741824 bytes (1.1 GB, 1.0 GiB) copied, 16.6154 s, 64.6 MB/s
詳解:
if=/dev/zero 是輸入文件,/dev/zero 是類 Unix 操作系統(tǒng)中的一個(gè)特殊文件,它提供從它讀取的盡可能多的空字符(ASCII NUL,0x00)。
of=/swapfile1 設(shè)置輸出文件。
bs=1G 一次性讀寫的大小為 1GB
count=1 僅復(fù)制一個(gè)輸入塊
檢查一下創(chuàng)建的文件的大小是否正確。
$ ls -lh /swapfile1-rw-r--r-- 1 root root 1.0G Jun 7 09:58 /swapfile1
將該文件的權(quán)限設(shè)置為 600 這樣只有 root 用戶可以訪問這個(gè)文件。
$ sudo chmod 600 /swapfile1
通過運(yùn)行以下的命令來將此文件轉(zhuǎn)換為交換文件。
$ sudo mkswap /swapfile1Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)no label, UUID=96def6d7-b2da-4954-aa72-aa32316ec993
通過運(yùn)行以下的命令來使交換文件生效。
$ sudo swapon /swapfile1
將新創(chuàng)建的交換文件添加到 fstab 文件中,這樣交換分區(qū)空間的修改即使在重啟后也可以生效。
$ vi /etc/fstab/swapfile1 swap swap defaults 0 0
檢查新創(chuàng)建的交換文件。
$ swapon --showNAME TYPE SIZE USED PRIO/dev/sda5 partition 2G 1.3G -1/swapfile file 1024M 0B -2/swapfile1 file 1024M 0B -3
現(xiàn)在我可以看到一個(gè)新的 1GB 的 /swapfile1 了。重啟系統(tǒng)以使新的交換文件生效。
方法 3 : 通過硬盤分區(qū)來創(chuàng)建交換文件
我們也推薦使用通過硬盤分區(qū)的方式來創(chuàng)建交換分區(qū)。
如果你已經(jīng)在你的另一個(gè)硬盤上通過 fdisk 命令創(chuàng)建了一個(gè)新的分區(qū),假設(shè)我們已經(jīng)創(chuàng)建了一個(gè)叫做 /dev/sda4 的分區(qū)。
使用 mkswap 命令來將這個(gè)分區(qū)轉(zhuǎn)換成交換分區(qū)。
$ sudo mkswap /dev/sda4
通過運(yùn)行以下命令來使交換文件生效。
$ sudo swapon /dev/sda4
把新增的交換文件添加到 fstab 文件中,這樣即使是重啟了系統(tǒng)交換分區(qū)的修改也能生效。
$ vi /etc/fstab/dev/sda4 swap swap defaults 0 0檢查新創(chuàng)建的交換文件。
$ swapon --showNAME 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
我可以看到新的交換分區(qū) 1GB 的 /dev/sda4。重啟系統(tǒng)就可以使用新的交換分區(qū)了。
評論