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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章