Linux磁盘管理之Swap分区

文章目录

1. 简介

Swap 分区:在系统的物理内存不足时,将硬盘中的一部分空间供当前运行的程序使用。

单台服务器,当物理内存不够时会随机 kill 占用内存的进程,从而产生oom,临时使用 swap 可以解决。

生产环境中,已经不怎么启用swap了,而云服务器中,已经没有swap分区了,这是因为,当启用swap后,系统会变得非常慢非常卡顿,我们的目的是为了让服务器尽可能快。而且我们可以用分布式集群架构来防止进程被kill。即使kill掉,集群中还有好多节点支持此服务。

查看系统内存和swap大小

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         120         813           0          37         762
Swap:          2047          72        1975
[root@localhost ~]# 

我们关闭swap模拟服务器OOM

[root@localhost ~]# swapoff -a
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         183         739           7          49         691
Swap:             0           0           0
[root@localhost ~]# 
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=711M count=1000 #模拟内存占满
Killed    # 发现被杀死,查看日志进一步确认
[root@localhost ~]# tail /var/log/messages  
Jul 25 15:44:36 localhost kernel: [ 2887]     0  2887   209043   182041     367        0             0 dd
Jul 25 15:44:36 localhost kernel: Out of memory: Kill process 2887 (dd) score 710 or sacrifice child
Jul 25 15:44:36 localhost kernel: Killed process 2887 (dd), UID 0, total-vm:836172kB, anon-rss:728164kB, file-rss:0kB, shmem-rss:0kB
[root@localhost ~]#

然后我们又打开swap


[root@localhost ~]# swapon -a
[root@localhost ~]# dd if=/dev/zero of=/dev/null bs=1500M count=1000 # 继续写大数据

[root@localhost ~]# free -m # 再次查看内存使用情况 发现swap used已经有占用了。

              total        used        free      shared  buff/cache   available
Mem:            972         880          67           0          24          10
Swap:          2047         830        1217
[root@localhost ~]# 

使用swapon -s命令查看swap分区文件

[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	2097148	0	-2
[root@localhost ~]#

2. Swap应用

1.用空余分区创建swap

  • 创建分区
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         127         787           0          57         746
Swap:          2047          69        1978
[root@localhost ~]# fdisk /dev/sdb    # 分出⼀个1G的硬盘空间给swap(大小任意指定)
......
  • 格式化为swap分区

```c

[root@localhost ~]# mkswap /dev/sdb1  # 格式化为swap
mkswap: /dev/sdb1: warning: wiping old xfs signature.
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=2de583e9-697c-482c-9dbb-9dc36d5b92eb
  • 激活sdb1
[root@localhost ~]# swapon /dev/sdb1 # 激活sdb1
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         185         681           7         105         661
Swap:          3071           0        3071
[root@localhost ~]# 
[root@localhost ~]# 

使用swapon -s命令查看swap分区文件

[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1              partition	2097148	 0	    -2
/dev/sdb1              partition	1048572	 0	    -3
[root@localhost ~]# 

关闭swapoff '分区名'

[root@localhost ~]# swapoff /dev/sdb1
[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1                              	partition	2097148	0	-2
[root@localhost ~]# swapoff -a  # 关闭所有


2.如果磁盘没有过多的分区可⽤,也可以通过⽂件增加SWAP空间,本质上还是磁盘

# 制造虚拟文件
root@localhost ~]# dd if=/dev/zero of=/opt/new_disk bs=1M count=300 
300+0 records in
300+0 records out
314572800 bytes (315 MB) copied, 1.92694 s, 163 MB/s

# 制作swap
[root@localhost ~]# mkswap /opt/new_disk 
Setting up swapspace version 1, size = 307196 KiB
no label, UUID=3956dd81-4b26-4723-95c8-16acb79be5d4

[root@localhost ~]# swapon /opt/new_disk 
swapon: /opt/new_disk: insecure permissions 0644, 0600 suggested. #提示不安全
# 修改权限
[root@localhost ~]# chmod 600 /opt/new_disk 
[root@localhost ~]# swapon /opt/new_disk  # 不用管,这时候其实已经挂载上了
swapon: /opt/new_disk: swapon failed: Device or resource busy
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         187         357           7         427         637
Swap:          2347           0        2347
[root@localhost ~]# swapon -s
Filename				Type		Size	Used	Priority
/dev/dm-1              partition	2097148	  0	      -2
/opt/new_disk           file	    307196	  0	      -3
[root@localhost ~]# 

前面的都是临时挂载,开机自动挂载新swap分区需要修改配置文件。
任选一种即可。

[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="a8077647-7f14-4bcf-b96b-60a0f9176c05" TYPE="swap" 

[root@localhost ~]# blkid /opt/new_disk 
/opt/new_disk: UUID="3956dd81-4b26-4723-95c8-16acb79be5d4" TYPE="swap" 

[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab 
UUID="a8077647-7f14-4bcf-b96b-60a0f9176c05" swap  swap   defaults        0 0
UUID="3956dd81-4b26-4723-95c8-16acb79be5d4" swap  swap   defaults        0 0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值