首頁 > 軟體

Unix系統下對swap分割區大小修改

2020-06-16 17:09:21

隨著科技不斷的進步,記憶體大小在不斷的加大,使得swap分割區的用處越來越小。所以在實際生產環境中有時需要對系統的swap分割區大小來進行調整,不過建議在安裝系統時就定義好是否要swap分割區、swap分割區的大小是多少,如果是條件允許的話建議swap分割區在2GB~4GB間,如果還不夠建議直接加記憶體。使用2GB的swap是因為有一些特殊的軟體可能在平時使用的時候會使用到swap分割區,如高效能的Oracle。當然,如果後期在使用的過程中發現swap分割區過大,磁碟空間又使用緊張,那麼就很有必要對系統的swap分割區大小做相應的縮減,反之亦然。因為有LVM的出現使得swap分割區的調整方式有一點區別,在此就簡單的說一說swap分割區的縮減方法。

在對swap分割區大小調整前還需要注意是否還有資料正在使用swap分割區,如果是有在使用需要先修改下系統的核心變數重新整理下swap分割區查驗下,以免造成資料丟失,系統中預設使用swap時的是依靠/proc/sys/vm/swappiness中的變數來控制的,預設/proc/sys/vm/swappiness中的變數時60,當/proc/sys/vm/swappiness變數設定為0時是表示盡量不使用swap空間,其中值越大表示系統越傾向於使用swap空間,可以通過修改核心變數檔案/etc/sysctl.conf來動態控制
[root@localhost ~]# sysctl -q vm.swappiness#查詢預設vm.swappiness變數大小
vm.swappiness = 60
[root@localhost ~]# vim /etc/sysctl.conf
…略…
vm.swappiness = 0
[root@localhost ~]# sysctl -p
[root@localhost ~]# swapoff -a && swapon -a#重新整理swap,即關了再開

這樣就降低了系統對swap的使用可能性,當然如果記憶體確實夠時此時還是會使用到swap空間的,此時就不能對swap分割區大小做調整,如果沒有那麼才能繼續做swap分割區大小的調整,而對swap分割區做調整時有分成2種情況:1、是使用傳統磁碟分割區 2、使用LVM管理的swap分割區。這兩種情況下對系統的swap分割區做調整是有所不同的。
  先說一下傳統磁碟分割區對swap分割區做調整的方法,總的來說使用傳統磁碟分割區下對swap的增加和減小大致的原理是一致的:
[root@localhost ~]# swapon -s#先確認下是哪一個分割區是作為swap分割區
[root@localhost ~]# dd if=/dev/zero of=/tmp/swap bs=1MB count=2048#建立一個寫滿0的swap檔案用來做swap,大小根據你需要調整的swap分割區來定
[root@localhost ~]# chmod 600 /tmp/swap
[root@localhost ~]# swapoff -a#離線所有swap分割區,相當於umount swap分割區
[root@localhost ~]# mkswap /tmp/swap#建立swap分割區,注意要記錄下下面生成的UUID
mkswap: /tmp/swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 1999996 KiB
no label, UUID=7cc2ddfc-6057-49c8-b7a8-4f6e3807d731
[root@localhost ~]# swapon /tmp/swap#啟用swap分割區

這樣swap的臨時分割區就建立好了,如果是調小或者是磁碟中還有未使用的分割區時還可以在把原來的swap分割區重新做修改後,再格式化調整大小後再建立成swap分割區再把swap寫在獨立分割區內,步驟方法和上面一樣在此就不做過多的贅述了,無論如何把swap分割區修改好後都需要根據實際修改的情況修改下/etc/fstab檔案,注意UUID也要填新的,以確保系統重新啟動後會自動掛載swap分割區。
  第二種是swap分割區使用LVM邏輯卷來建立管理的那麼,只要在swap分割區離線後用LVM的增減來對swap分割區來做變化,至於LVM在以前有提及過所以在這裡就簡單的寫一下減小,LVM中邏輯卷分割區的增減變化可以參看: http://www.linuxidc.com/Linux/2017-08/146254.htm 

[root@localhost ~]# swapon -s
[root@localhost ~]# swapoff -a
[root@localhost ~]# lvreduce -L 2048M /dev/mapper/VolGroup-Lv_swap
[root@localhost ~]# mkswap /dev/mapper/VolGroup-Lv_swap#注意記錄UUID
mkswap: /dev/VolGroup/VolGroup-Lv_swap: warning: don't erase bootbits sectors
        on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=d6210042-9bc0-4e56-bc5a-3ade79eb4791
[root@localhost ~]# swapon /dev/mapper/VolGroup-VolGroup--Lv_swap

總之如果是對swap修改後都要對/etc/fstab檔案做修改,以確保重新啟動後系統能自動掛載swap分割區

本文永久更新連結地址http://www.linuxidc.com/Linux/2017-08/146253.htm 


IT145.com E-mail:sddin#qq.com