安裝系統時,咱們每每會在磁盤分區時,爲交換分區單獨分出一起位置,但當系統安裝完成後,咱們經過固定的文件位置在配置交換分區。git
在配置交換分區前,請肯定你放置交換分區的磁盤有足夠的空間。shell
本篇文章將交換分區文件放在 /var
下,/var
在 /
掛載點下,因此咱們檢查 /
掛載磁盤的空間:app
[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
必定要確保 /
掛載點下有足夠的空間(剩餘的空間遠大於你要設置的交換空間大小)才能夠配置交換空間。gitlab
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
會獲得下面的輸出:spa
[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)。code
也能夠經過 fallocate
命令建立分區文件:內存
sudo fallocate -l 8G /var/swapfile
最後檢查分區文件大小:input
[dingdayu@gitlab-repo var]$ ls -lh /var/swapfile -rw------- 1 root root 8.0G Oct 10 19:59 /var/swapfile
mkswap /var/swapfile
會獲得如下輸出:it
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
須要先解除分區掛載:
swapoff /var/swapfile
而後刪除分區文件便可
rm -rf /var/swapfile
最後記得將
/etc/fstab
文件裏的交換分區掛載移除掉