Linux中swap管理分区

1、swap是什么?

swap space是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。简单点说,当系统物理内存吃紧时,Linux会将内存中不常访问的数据保存到swap上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问swap上存储的内容时,再将swap上的数据加载到内存中,这就是我们常说的swap out和swap in。

2、为什么需要swap?

要回答这个问题,就需要回答swap给我们带来了哪些好处。

  • 对于一些大型的应用程序(如LibreOffice、video editor等),在启动的过程中会使用大量的内存,但这些内存很多时候只是在启动的时候用一下,后面的运行过程中很少再用到这些内存。有了swap后,系统就可以将这部分不这么使用的内存数据保存到swap上去,从而释放出更多的物理内存供系统使用。
  • 很多发行版(如ubuntu)的休眠功能依赖于swap分区,当系统休眠的时候,会将内存中的数据保存到swap分区上,等下次系统启动的时候,再将数据加载到内存中,这样可以加快系统的启动速度,所以如果要使用休眠的功能,必须要配置swap分区,并且大小一定要大于等于物理内存
  • 在某些情况下,物理内存有限,但又想运行耗内存的程序怎么办?这时可以通过配置足够的swap空间来达到目标,虽然慢一点,但至少可以运行。
  • 虽然大部分情况下,物理内存都是够用的,但是总有一些意想不到的状况,比如某个进程需要的内存超过了预期,或者有进程存在内存泄漏等,当内存不够的时候,就会触发内核的OOM killer,根据OOM killer的配置,某些进程会被kill掉或者系统直接重启(默认情况是优先kill耗内存最多的那个进程),不过有了swap后,可以拿swap当内存用,虽然速度慢了点,但至少给了我们一个去debug、kill进程或者保存当前工作进度的机会。
  • 如果看过Linux内存管理,就会知道系统会尽可能多的将空闲内存用于cache,以加快系统的I/O速度,所以如果能将不怎么常用的内存数据移动到swap上,就会有更多的物理内存用于cache,从而提高系统整体性能。

3、基础命令:

mkswap /devices : 格式化成swap格式
swapon /devices : 激活swap ,加入到swap分区中
开机自动启动新添加的swap分区: /etc/fstab /devices swap swap defaults 0 0

实验

1、建立分区

[root@ localhost ~]# gdisk /dev/sdb
Command (? for help): n                    # 新建分区
Partition number (2-128, default 2):       # 回车
First sector (34-41943006, default = 2099200) or {+-}size{KMGTP}:           # 回车
Last sector (2099200-41943006, default = 41943006) or {+-}size{KMGTP}: +1G  # 给1G
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300):  # 回车
Changed type of partition to 'Linux filesystem'

Command (? for help): w     # 保存
Do you want to proceed? (Y/N): y

2、查看是否分区成功

[root@ localhost ~]# ll /dev/sdb*
brw-rw----. 1 root disk 8, 16 2月  26 15:36 /dev/sdb
brw-rw----. 1 root disk 8, 17 2月  26 15:36 /dev/sdb1
brw-rw----. 1 root disk 8, 18 2月  26 15:37 /dev/sdb2

3、格式化

[root@ localhost ~]# mkswap /dev/sdb2
正在设置交换空间版本 1,大小 = 1048572 KiB
无标签,UUID=bf1788b2-c1f5-4f89-bb62-cd91617ee8dc

# 对比( 激活swap空间之前的对比)
[root@ localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3770         454        2938          14         378        3082
Swap:          2047           0        2047
[root@ localhost ~]# swapon /dev/sdb2 
[root@ localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3770         452        2940          14         377        3084
Swap:          3071           0        3071

使用 文件增加swap空间?
阿里云默认的没有swap空间,如何增加swap?

1) 使用dd命令创建个500M大小的文件
[root@ localhost ~]# dd  if=/dev/zero of=swap_file bs=1M count=500
记录了500+0 的读入
记录了500+0 的写出
524288000字节(524 MB)已复制,12.2954 秒,42.6 MB/秒
[root@ localhost ~]# ll -h swap_file 
-rw-r--r--. 1 root root 500M 2月  26 15:46 swap_file
[root@ localhost ~]# chmod 0600 swap_file 

2) 把500M的文件格式化成swap 
[root@ localhost ~]# mkswap -f swap_file 
正在设置交换空间版本 1,大小 = 511996 KiB
无标签,UUID=def65bf9-7143-4734-9801-d3d8bb583061
[root@ localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3770         455        2423          14         891        3075
Swap:          3071           0        3071

3) 激活swap空间
[root@ localhost ~]# swapon /root/swap_file

4) 查看是否被激活
[root@ localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           3770         456        2423          14         891        3074
Swap:          3571           0        3571
发布了41 篇原创文章 · 获赞 35 · 访问量 3630

猜你喜欢

转载自blog.csdn.net/chen_jimo_c/article/details/104522148