手把手教學linux上擴容和縮減swap分割槽。

小蘿蔔112發表於2020-11-17

一.swap簡單介紹

​ swap交換記憶體主要是指當實體記憶體不夠用時,系統會啟用硬碟的一部分空間來充當伺服器記憶體,而預設情況下swap記憶體會有一些設定標準,它與實體記憶體的大小也是有關係的:

Ram大小 	Swap大小 	啟用Swap後合計大小
256MB 	256MB 	512MB
512MB 	512MB 	1GB
1GB 	1GB 	2GB
3GB 	2GB 	5GB
4GB 	2GB 	6GB
6GB 	2GB 	8GB
8GB 	3GB 	11GB
12GB 	3GB 	15GB
16GB 	4GB 	20GB
32GB 	6GB 	38GB
64GB 	8GB 	72GB
128GB 	11GB 	139GB

官方官方建議在RAM是2到4.5G時,swap是RAM的2倍;如果RAM大於等於4G則swap等於RAM即可

當預先設定的Swap分割槽空間不足,這個時候需要增加其大小,今天總結兩種增減swap大小的方法。

  1. 通過swap分割槽檔案增加swap空間
  2. 通過LVM擴容縮減swap空間

話不多說,直接開始。實驗用centos7機器。

目標增減swap2G。

二.通過swap分割槽檔案增加減少swap空間

1.擴充套件

  1. 先檢視一下當前swap大小
[root@fei-7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        164M        1.3G        7.6M        491M        1.7G
Swap:          2.0G          0B        2.0G
#當前swap2G
  1. 建立一個2G的檔案
[root@fei-7 mnt]# dd if=/dev/zero of=/mnt/swap bs=1M count=2048
2048+0 records in
2048+0 records out
2147483648 bytes (2.1 GB) copied, 19.3321 s, 111 MB/s

[root@fei-7 mnt]# du -h /mnt/swap                #檢視一下建立的檔案
2.0G	/mnt/swap

  1. 將檔案格式化為swap
[root@fei-7 mt]# mkswap /mnt/swap 
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=c44df16e-2eb3-4132-9363-b0d32324c6a8
  1. 掛載並檢視swap分割槽
[root@fei-7 mnt]# swapon /mnt/swap         #將swap分割槽檔案
swapon: /mnt/swap: insecure permissions 0644, 0600 suggested.

[root@fei-7 mnt]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        163M         17M        7.5M        1.8G        1.7G
Swap:          4.0G          0B        4.0G
#此時swap增加為2G
  1. 將分割槽資訊寫入/etc/fstab,如果不寫入檔案,則在下次啟動後恢復原樣。
[root@fei-7 mnt]# vim /etc/fstab 

[root@fei-7 mnt]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat Feb 15 17:41:54 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=0362beab-af6c-4573-8907-b3eb62e36a81 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sr0                /media                  iso9660 defaults        0 0
/mnt/swap               swap                    swap    defaults        0 0 #寫在了最後一行

  • 完成之後重新啟動檢查,看是否依然是4G
  1. 重啟後檢查一下swap組成
[root@fei-7 ~]# swapon -s
Filename				Type		Size	Used	Priority
/mnt/swap                              	file	2097148	0	-2
/dev/dm-1                              	partition	2097148	0	-3
#現在看來很成功

所以以上是通過swap分割槽檔案增加swap空間的具體操作步驟。

2.縮減(刪除)

  1. 解除安裝剛才掛載的swap檔案。
[root@fei-7 ~]# swapoff /mnt/swap 
[root@fei-7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        128M        1.5G        9.4M        203M        1.5G
Swap:          2.0G          0B        2.0G
 #解除安裝後swap分割槽恢復2G
  1. 刪除/etc/fstab下新增的掛載資訊
[root@fei-7 ~]# vim /etc/fstab 

[root@fei-7 ~]# cat /etc/fstab 

#
# /etc/fstab
# Created by anaconda on Sat Feb 15 17:41:54 2020
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=0362beab-af6c-4573-8907-b3eb62e36a81 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sr0                /media                  iso9660 defaults        0 0

  1. 最後將swap檔案刪除
[root@fei-7 ~# rm -rf /mnt/swap 

通過swap分割槽檔案增加或者縮減swap空間這種方法較為簡單,建議使用這種方法。

三.通過LVM擴容縮減swap空間

檢視一下當前系統swap分割槽情況

[root@fei-7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        138M        1.4G        9.4M        229M        1.4G
Swap:          2.0G          0B        2.0G
#確認是2G大。

1.擴容

如果對LVM還不熟悉,可以在此先了解一下:linux LVM邏輯卷相關命令及建立,修改過程

  1. 先檢視一下邏輯卷(lvm)和邏輯卷(vg)組詳細情況
[root@fei-7 ~]# lvdisplay /dev/centos/swap        #swap檔案可以在/etc/fstab或lsblk命令看到
  --- Logical volume ---
  LV Path                /dev/centos/swap
  LV Name                swap                     #當前邏輯卷名稱
  VG Name                centos                   #找到所屬卷組名:centos
  LV UUID                m4d0ur-Iz58-UAfd-tIPd-N5gM-Eqf8-NQvbvv
  LV Write Access        read/write
  LV Creation host, time xiaoagiao, 2020-02-15 17:41:53 +0800
  LV Status              available
  # open                 2
  LV Size                2.00 GiB                 #大小
  Current LE             512
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     8192
  Block device           253:1

[root@fei-7 ~]# vgdisplay centos
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        2
  Metadata Sequence No  5
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                2
  Act PV                2
  VG Size               108.99 GiB
  PE Size               4.00 MiB
  Total PE              27902
  Alloc PE / Size       27902 / 108.99 GiB
  Free  PE / Size       0 / 0                        #可以看到centos這個邏輯卷組並沒有剩餘空間了,如果有剩餘空間可以直接新增到lv中。此時沒有剩餘則採取新增硬碟方式擴容。
  VG UUID               VWTn40-zXfH-77PH-riAc-HC1U-5lqQ-1juay8

  1. 此時新增一塊硬碟,並檢視。

在這裡插入圖片描述

[root@fei-7 ~]# fdisk -l |grep sd
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200    41943039    19921920   8e  Linux LVM
Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
/dev/sdb1            2048   188745727    94371840   83  Linux
Disk /dev/sdc: 5368 MB, 5368709120 bytes, 10485760 sectors          #新新增的磁碟/dev/sdc
  1. 將這個硬碟空間建立為物理卷
[root@fei-7 ~]# pvcreate /dev/sdc
  Physical volume "/dev/sdc" successfully created.
  
  [root@fei-7 ~]# pvs                      #檢視一下當前物理卷
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  <19.00g    0 
  /dev/sdb1  centos lvm2 a--  <90.00g    0 
  /dev/sdc          lvm2 ---    5.00g 5.00g     #這就是新建的

  1. 接下來擴充套件centos這個卷組
[root@fei-7 ~]# vgextend centos /dev/sdc    
  Volume group "centos" successfully extended
  
[root@fei-7 ~]# vgdisplay centos
  --- Volume group ---
  VG Name               centos
  System ID             
  Format                lvm2
  Metadata Areas        3
  Metadata Sequence No  6
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                3
  Act PV                3
  VG Size               <113.99 GiB
  PE Size               4.00 MiB
  Total PE              29181
  Alloc PE / Size       27902 / 108.99 GiB
  Free  PE / Size       1279 / <5.00 GiB                   #剛才剩餘0.現在剩餘5G
  VG UUID               VWTn40-zXfH-77PH-riAc-HC1U-5lqQ-1juay8

到這一步之前分為兩種情況:

  • 如果在第一步檢視centos這個卷組時,發現有剩餘空間,則直接進行橫線下操作。
  • 若沒有剩餘,和演示的一樣,則按照步驟依次進行。

接下來真正進行擴容,分為四步(解除安裝,擴充套件,格式化,掛載)

  1. 解除安裝swap分割槽
[root@fei-7 ~]# swapoff /dev/mapper/centos-swap
  1. 擴充套件swap邏輯卷
[root@fei-7 ~]# vgs                                          #先看一下centos這個卷組為5G
  VG     #PV #LV #SN Attr   VSize    VFree 
  centos   3   2   0 wz--n- <113.99g <5.00g
  
[root@fei-7 ~]#  lvextend -L +2G /dev/mapper/centos-swap         #給swap這個邏輯卷新增2G
  Size of logical volume centos/swap changed from 2.00 GiB (512 extents) to 4.00 GiB (1024 extents).
  Logical volume centos/swap successfully resized.
  
[root@fei-7 ~]# vgs                                                #現在剩餘3G
  VG     #PV #LV #SN Attr   VSize    VFree 
  centos   3   2   0 wz--n- <113.99g <3.00g
  
[root@fei-7 ~]# lvs 
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 106.99g                                                    
  swap centos -wi-a-----   4.00g             #此時邏輯卷swap共4G
  1. 格式化新swap分割槽
[root@fei-7 ~]# mkswap /dev/mapper/centos-swap     
mkswap: /dev/mapper/centos-swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 4194300 KiB
no label, UUID=4be30881-944a-42c2-8d3e-d8fbd183b698
 
  1. 重新掛在swap分割槽
[root@fei-7 ~]# swapon /dev/mapper/centos-swap           #掛載
[root@fei-7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        130M        1.5G        9.4M        168M        1.5G
Swap:          4.0G          0B        4.0G                    

到此處,LVM擴容swap完成

2.縮減

其實就是縮減這個名為swap的邏輯卷

  1. 解除安裝swap分割槽
  2. 縮減邏輯卷
[root@fei-7 ~]# lvreduce -L 2G /dev/mapper/centos-swap 
  WARNING: Reducing active logical volume to 2.00 GiB.
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce centos/swap? [y/n]: y
  Size of logical volume centos/swap changed from 4.00 GiB (1024 extents) to 2.00 GiB (512 extents).
  Logical volume centos/swap successfully resized.
  
  
[root@fei-7 ~]# lvs
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 106.99g                                                    
  swap centos -wi-a-----   2.00g  #此時已經變回2G
  
[root@fei-7 ~]# pvs
  PV         VG     Fmt  Attr PSize   PFree 
  /dev/sda2  centos lvm2 a--  <19.00g     0 
  /dev/sdb1  centos lvm2 a--  <90.00g     0 
  /dev/sdc   centos lvm2 a--   <5.00g <5.00g   #centos卷組變回5G

  1. 格式化swap分割槽
[root@fei-7 ~]# mkswap /dev/mapper/centos-swap 
mkswap: /dev/mapper/centos-swap: warning: wiping old swap signature.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=e6c3f988-8125-4574-8242-e7f3efcff1f5
  1. 重新掛載
[root@fei-7 ~]# swapon /dev/mapper/centos-swap 
[root@fei-7 ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G        128M        1.5G        9.4M        169M        1.5G
Swap:          2.0G          0B        2.0G    #重新變回2G

以上是通過LVM擴容縮減swap空間全過程

相關文章