Linux學習-11.交換分區管理

1.什麼是交換分區

Linux中交換分區swap,類似於Windows的虛擬內存,就是當內存不足的時候,把一部分硬盤空間虛擬成內存使用,從而解決內存容量不足的情況。並不是所有從物理內存中交換出來的數據都會被放到Swap中,有相當一部分數據被直接交換到文件系統。但是那些用malloc和new函數生成的對象的數據需要Swap空間,因爲它們在文件系統中沒有相應的“儲備”文件,因此被稱作“匿名”(Anonymous)內存數據,這類數據還包括堆棧中的一些狀態和變量數據等。所以說,Swap空間是“匿名”數據的交換空間。
那麼swap一般設置多大呢?這沒有具體的規定,要看實際使用中對swap分區依賴的需求,有的場景可能都不需要swap分區,分區大了只會浪費硬盤的空間資源。

查看swap的大小和使用情況

free -m ,可以加上h參數顯示更直觀,單位是MB。

[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        921       3017          9          0        279
-/+ buffers/cache:        641       3297
Swap:         2047          0       2047

top,類似於windows的任務管理器的程序,ctrl+c退出, 單位是KB。
在這裏插入圖片描述
swapon -s,cat /proc/swaps,單位KB。

[root@linux Desktop]# swapon -s
文件名				類型				大小				已用			權限
/dev/dm-1        	partition		2097148			0			-1
[root@linux Desktop]# cat /proc/swaps 
Filename				Type		Size		Used	Priority
/dev/dm-1               partition	2097148		0		-1

2.關閉和開啓swap

使用swapoff -a命令關閉所有swap分區,或者使用路徑關閉具體swap。

[root@linux Desktop]# swapoff -a
[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        924       3014          9          0        279
-/+ buffers/cache:        644       3295
Swap:            0          0          0

使用swapon -a命令開啓所有swap分區。

[root@linux Desktop]# swapon -a
[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        926       3013          9          0        279
-/+ buffers/cache:        645       3293
Swap:         2047          0       2047

3.縮小swap分區

a.縮小swap分區就是縮小對應swap分區邏輯卷的大小,前文第8章寫過使用lvreduce命令縮小邏輯卷。
查看swap邏輯卷的位置

[root@linux Desktop]# swapon -s
文件名				類型				大小				已用			權限
/dev/dm-1        	partition		2097148			0			-1

b.關閉swap交換分區

[root@linux Desktop]# swapoff /dev/dm-1
[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        924       3014          9          0        279
-/+ buffers/cache:        643       3295
Swap:            0          0          0

c.縮小/dev/dm-1分區,發現報錯了。

[root@linux Desktop]# lvreduce -L 1G /dev/dm-1
  Path required for Logical Volume "dm-1"
  Please provide a volume group name
  Run `lvreduce --help' for more information.

原來lvm會把每個lv連接到一個/dev/dm-x的設備檔,這個設備檔並不是一個真正的磁盤,所以不會有分區表存在,不能把dm設備分區。dm-0, dm-1的實體可以使用dmsetup ls和dmsetup info 命令來查看dm設備(lvm)映射情況,可以看到主設備號,次設備號。

[root@linux Desktop]# dmsetup ls
rhel-swap	(253:1)
rhel-root	(253:0)

dm-0對應的是root目錄,dm-1對應的是swap目錄,所以我們實際需要縮小的是/dev/rhel/swap分區。

[root@linux Desktop]# lvreduce -L 1G /dev/rhel/swap 
  WARNING: Reducing active logical volume to 1.00 GiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce swap? [y/n]: y
  Reducing logical volume swap to 1.00 GiB
  Logical volume swap successfully resized

e.使用mkswap重新格式化swap分區,開啓swap交換分區,看到swap分區只有1G空間了。

[root@linux Desktop]# mkswap /dev/rhel/swap 
mkswap: /dev/rhel/swap: warning: wiping old swap signature.
正在設置交換空間版本 1,大小 = 1048572 KiB
無標籤,UUID=816f10ef-f8ac-43aa-8471-4f35c6f2c322

[root@linux Desktop]# swapon /dev/mapper/rhel-swap 
[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        935       3003          9          0        280
-/+ buffers/cache:        654       3285
Swap:         1023          0       1023

4.擴大swap分區

擴大swap分區有兩個方法,第一是直接擴容原來的swap分區,第二是重新劃分一個新的分區加入到swap交換分區中。

4.1擴容swap分區

先查看vg卷組中還有多少空間

[root@linux Desktop]# vgdisplay 
  --- Volume group ---
  VG Name               rhel
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  7
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                2
  Open LV               2
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               19.51 GiB
  PE Size               4.00 MiB
  Total PE              4994
  Alloc PE / Size       4738 / 18.51 GiB
  Free  PE / Size       256 / 1.00 GiB
  VG UUID               9kJ1ti-wPVy-l2jN-xRyj-GUSU-YbJ2-8TcULW

可以看到vg卷組有上一節縮容出來的1G空間,全部劃分到swap中。先關閉swap交換分區。

[root@linux Desktop]# swapoff -a
[root@linux Desktop]# lvextend -L 2G /dev/rhel/swap
  Extending logical volume swap to 2.00 GiB
  Logical volume swap successfully resized
  
[root@linux Desktop]# mkswap /dev/rhel/swap 
mkswap: /dev/rhel/swap: warning: wiping old swap signature.
正在設置交換空間版本 1,大小 = 2097148 KiB
無標籤,UUID=f69e5ca2-9387-4084-9043-ea87aea5e460

[root@linux Desktop]# swapon -a
[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        937       3001          9          0        280
-/+ buffers/cache:        656       3283
Swap:         2047          0       2047

4.2劃分新分區

a.在新硬盤上劃分2GB的空間,創建主分區直接加入到swap交換分區,也可以劃分LVM邏輯卷。

[root@linux Desktop]# fdisk /dev/sdb
歡迎使用 fdisk (util-linux 2.23.2)。

更改將停留在內存中,直到您決定將更改寫入磁盤。
使用寫入命令前請三思。

Device does not contain a recognized partition table
使用磁盤標識符 0x5a7f40d0 創建新的 DOS 磁盤標籤。

命令(輸入 m 獲取幫助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分區號 (1-4,默認 1):
起始 扇區 (2048-41943039,默認爲 2048):
將使用默認值 2048
Last 扇區, +扇區 or +size{K,M,G} (2048-41943039,默認爲 41943039):+2G
分區 1 已設置爲 Linux 類型,大小設爲 2 GiB

命令(輸入 m 獲取幫助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盤。

b.在/dev/sdb上劃分了一個2GB的/dev/sdb1的主分區,格式化並使用swapon命令加入到swap分區。

[root@linux Desktop]# mkswap /dev/sdb1
正在設置交換空間版本 1,大小 = 2097148 KiB
無標籤,UUID=3b180922-2818-4765-a3c9-34cc1ae89e27
[root@linux Desktop]# swapon /dev/sdb1 
[root@linux Desktop]# free -m
             total       used       free     shared    buffers     cached
Mem:          3939        943       2995          9          0        280
-/+ buffers/cache:        662       3277
Swap:         4095          0       4095

c.要新增的swap分區不在重啓後失效,需要將掛載信息寫入/etc/fstab。

[root@linux Desktop]# echo /dev/sdb1 swap swap defaults 0 0 >> /etc/fstab
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章