在Linux下,swap的作用類似Windows系統下的“虛擬內存”。當物理內存不足時,拿出部分硬盤空間當SWAP分區(虛擬成內存)使用,從而解決內存容量不足的情況。Linux下的swap有兩種實現形式,一種是通過某個物理磁盤分區來實現swap,另一種是通過虛擬內存文件來實現swap。
一、物理磁盤分區來實現swap
1、通過分區軟件創建一個分區,分區類型fdisk下為82,gdisk下為8200,partep分區標記沒有定義swap,其實分區后不更改分區類型也行測試也可以用,但為了在分區工具下方便查看最好還是把分區類型改成swap對應的分區類型,本人理解分區類型就是分區軟件下用來描述分區所要承載的文件系統的類型,比如分區類型為83表示為linxu分區,用於格式化成ext3 ext4等linux文件系統,分區創建的方法這里就不寫了前面有分區創建的方法。
2、使用mkswap命令把分區格式化為swap分區
-------------------------------------------------------------------
root@debian:~# mkswap /dev/sdb1
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes) #交換分區的容量為1G
no label, UUID=47fe2c83-c4b9-4ee5-ad91-4a9642f66df5
root@debian:~#
-------------------------------------------------------------------
3、使用swapon命令使交換分區/dev/sdb1生效
-------------------------------------------------------------------
root@debian:~# free -h #查看沒加前swap容量
total used free shared buff/cache available
Mem: 2.0G 250M 1.4G 8.5M 311M 1.6G
Swap: 2.0G 0B 2.0G #沒加前容量為2G
root@debian:~# swapon /dev/sdb1 #使新添加的swap生效
root@debian:~# free -h #查看添加完后的容量
total used free shared buff/cache available
Mem: 2.0G 250M 1.4G 8.5M 311M 1.6G
Swap: 3.0G 0B 3.0G #添加完容量變成了3G
root@debian:~#
-------------------------------------------------------------------
4、Linux swapon命令參數及用法
swapon 是開啟swap,相對的便有一個關閉swap的指令,swapoff
swapon [選項] [設備]
-h 顯示幫助信息
-V 顯示版本信息
-v 顯示詳細模式
-s 顯示swap的使用情況,可以查看所有激活的swap
-a 將/etc/fstab文件中所有設置為swap的設備啟用
-p 設定優先權,你可以在0到32767中間選一個數字給他。或是在 /etc/fstab 里面加上 pri=[value] ([value]就是0~32767中間一個數字),然后你就可以很方便的直接使用 swapon -a 來啟動他們,而且有優先權設定。
舉例:顯示swap的使用情況
---------------------------------------------------------------------
root@debian:~# swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2095100 0 -1 #隨系統安裝一起創建的swap優先級為1
/dev/sdb1 partition 1048572 0 -2 #后創建的swap優先級為2,類型為分區,大小為1G
root@debian:~#
---------------------------------------------------------------------
5、Linux swapoff命令參數及用法
swapon [選項] [設備]
-a 將/etc/fstab文件中所有設置為swap的設備關閉
舉例:
---------------------------------------------------------------------
root@debian:~# swapoff /dev/sdb1 # 關閉swap分區/dev/sdb1
root@debian:~# swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2095100 0 -1
root@debian:~#
---------------------------------------------------------------------
6、將新添加的交換分區添加到/etc/fstab文件中使之開機啟動
根據不同的發行版將下面的內容添加到/etc/fstab中,添加完后最好用swapon -a命令查看添加的是否有問題
UUID=47fe2c83-c4b9-4ee5-ad91-4a9642f66df5 none swap sw 0 0 #Debian9.5默認的格式,UUID為對應的交換分區UUID
UUID=47fe2c83-c4b9-4ee5-ad91-4a9642f66df5 swap swap defaults 0 0 #CentOS7-1810與openSUSE15默認的格式,UUID為對應的交換分區UUID
二、使用文件來實現swap
當系統內沒有剩余可用的分區時我們可以用在Linux的某個目錄下創建一個空白文件,通過把這個文件格式化成swap從而實現創建swap的過程。
1、通過dd命令在/tmp/目錄下新增加一個1G大小的空文件。
---------------------------------------------------------------------
root@debian:~# dd if=/dev/zero of=/tmp/swap bs=1G count=1 #增加一個1G大小的空文件
記錄了1+0 的讀入
記錄了1+0 的寫出
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 5.46136 s, 197 MB/s
root@debian:~# chmod 600 /tmp/swap #修改文件權限,只有root讀寫
root@debian:~# ls -lh /tmp/swap #查看創建的文件大小和權限
-rw------- 1 root root 1.0G 8月 26 14:25 /tmp/swap
root@debian:~#
---------------------------------------------------------------------
2、使用mkswap命令把創建的文件格式化為swap
---------------------------------------------------------------------
root@debian:~# mkswap /tmp/swap
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=a0aa03d4-406d-4ecd-af04-12998e408192
root@debian:~#
---------------------------------------------------------------------
3、使用swapon命令使swap生效
---------------------------------------------------------------------
root@debian:~# swapon /tmp/swap
root@debian:~# swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2095100 0 -1
/tmp/swap file 1048572 0 -2 #創建成功
root@debian:~#
---------------------------------------------------------------------
4、將新添加的交換分區添加到/etc/fstab文件中使之開機啟動
根據不同的發行版將下面的內容添加到/etc/fstab中,添加完后最好用swapon -a命令查看添加的是否有問題
---------------------------------------------------------------------
/tmp/swap none swap sw 0 0 #Debian9.5默認的格式,這里不要用UUID,這是因為系統只會查詢塊設備,不會查詢文件
/tmp/swap swap swap defaults 0 0 #CentOS7-1810與openSUSE15默認的格式
---------------------------------------------------------------------
