安裝系統時,我們往往會在磁盤分區時,爲交換分區單獨分出一塊兒位置,但當系統安裝完成後,我們通過固定的文件位置在配置交換分區。
在配置交換分區前,請確定你放置交換分區的磁盤有足夠的空間。
本篇文章將交換分區文件放在 /var
下,/var
在 /
掛載點下,所以我們檢查 /
掛載磁盤的空間:
[dingdayu@gitlab-repo var]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/vda1 40G 17G 21G 46% /
devtmpfs 3.9G 0 3.9G 0% /dev
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 3.9G 556K 3.9G 1% /run
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
一定要確保 /
掛載點下有足夠的空間(剩餘的空間遠大於你要設置的交換空間大小)纔可以配置交換空間。
查看交換分區
free –h 或 swapon –s
會得到下面的輸出:
[dingdayu@gitlab-repo var]$ free -h
total used free shared buff/cache available
Mem: 7.6G 4.4G 132M 17M 3.1G 2.9G
Swap: 8.0G 0B 8.0G
設置交換分區
生成交換分區文件
dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
會得到下面的輸出:
[dingdayu@gitlab-repo var]$ sudo dd if=/dev/zero of=/var/swapfile bs=1024 count=8192k
8388608+0 records in
8388608+0 records out
8589934592 bytes (8.6 GB) copied, 71.1132 s, 121 MB/s
if(即輸入文件,input file),of(即輸出文件,output file)。dev/zero是Linux的一種特殊字符設備(輸入設備),可以用來創建一個指定長度用於初始化的空文件,如臨時交換文件,該設備無窮盡地提供0,可以提供任何你需要的數目。 bs=1024 :單位數據塊(block)同時讀入/輸出的塊字節大小爲1024 個字節即1KB,bs(即block size)。count=2048000 :數據塊(block)數量爲2048000 ,即2048000個1KB。可以計算swap分區的容量爲:1KB 2097152=1KB 1024(k)10242=2097152=2G。(dd命令裏的單位M表示1024*1024,k表示1024)。
也可以通過 fallocate
命令創建分區文件:
sudo fallocate -l 8G /var/swapfile
最後檢查分區文件大小:
[dingdayu@gitlab-repo var]$ ls -lh /var/swapfile
-rw------- 1 root root 8.0G Oct 10 19:59 /var/swapfile
轉換分區格式
mkswap /var/swapfile
會得到以下輸出:
sudo mkswap /var/swapfile
Setting up swapspace version 1, size = 8388604 KiB
no label, UUID=abfe4e6c-4474-4a6b-bd96-80292e0e676c
修改分區文件權限
sudo chmod -R 0600 /var/swapfile
掛載交換分區
swapon /var/swapfile
上面的掛載會在系統重啓後失效,可通過編輯 /etc/fstab
避免。
將下面的內容,添加到 /etc/fstab
文件中;
/var/swapfile swap swap defaults 0 0
或:
sudo sh -c "echo '/var/swapfile swap swap defaults 0 0' >> /etc/fstab"
設置交換分區使用比例
通過下面的命令,查看 swappiness
值:
cat /proc/sys/vm/swappiness
swappiness值(0-100),系統對swap分區的依賴程度,越高則越傾向於使用swap分區。 當然,高度依賴swap會造成物理內存遠未使用完,就使用swap分區,我們知道swap分區性能遠不如物理內存,這反而降低了系統性能,違背了我們創建swap分區的初衷。 我們希望在物理內存即將滿荷時再使用swap,這就決定了swappiness值一般爲10-60爲宜,固態硬盤可以偏高些。
修改 swappiness
可以通過 sysctl
命令直接修改 vm.swappiness
的值:
sysctl vm.swappiness=50
但是在系統重啓後,依然會丟失設置,所以可以通過編輯 /etc/sysctl.conf
文件實現:
sudo sh -c "echo 'vm.swappiness = 50' >> /etc/sysctl.conf"
擴縮容分區大小
擴大或縮小分區大小,採用創建新的分區文件,後掛載到新的分區位置的方式設置,參考
設置交換分區
章節即可。
# 生成新的分區文件
dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152
# 格式化分區文件
mkswap /var/swapfile1
# 掛載新的分區文件
swapon /var/swapfile1
刪除SWAP分區
需要先解除分區掛載:
swapoff /var/swapfile
然後刪除分區文件即可
rm -rf /var/swapfile
最後記得將
/etc/fstab
文件裏的交換分區掛載移除掉