SWAP分区介绍和扩展

在Linux服务器运行程序时,在代码无误且前序任务运行正常的情况下,突然出现任务终止。首先查看了下负载,业务进程和相关日志,都没有错误日志记录。查看了下内存占用情况(free -m)发现,Swap free为0,意味是是由于内存不足引起的程序终止。本篇博文将介绍一下SWAP是什么,以及如何扩展。

1.SWAP概述

其实,早期内存一般都比较小,很容易就出现内存不足的问题,所以很早就提出了一个交换分区(swap partition)的概念。

swap 分区是将磁盘当作内存使用,使得虚拟地址空间的范围大小可以超出物理内存的实际大小,在物理内存空间不足时,可以将物理内存中的一些不重要数据拷贝到磁盘的 swap 分区中,从而让出内存空间,并且在需要那些已被拷出数据时再从 swap 分区中拷回到内存。也就是说物理内存和缓存区内存不够用的时候,才会用到SWAP。

只有在出现物理内存耗尽或即将耗尽的时候,如果进程继续请求分配内存,将报错 out-of-memory(OOM)表示内存不足,并且在出现 OOM 的时候,操作系统将触发 OOM Killer 程序从进程列表中筛选出一个内存密集型进程杀掉,从而释放大片内存。

2.SWAP分区设置多大合适

一般来说可以按照如下规则设置swap大小(以实际情况为准,这只是建议)

4G以内的物理内存,SWAP 设置为内存的2倍。

4-8G的物理内存,SWAP 等于内存大小。

8-64G 的物理内存,SWAP 设置为8G。

64-256G物理内存,SWAP 设置为16G。

3.物理内存使用多少为不够用?

实际上并不是等所有的物理内存都消耗完毕之后,才去使用swap的空间,而是由swappiness 参数值 来控制物理内存够不够用。

cat /proc/sys/vm/swappiness

本人使用服务器默认是60

swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,

swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

4.扩展SWAP

查看占用SWAP排名前10的进程pid

for i in $(cd /proc;ls | grep "^[0-9]"|awk '$0 >100');do awk '/Swap:/{a=a+$2}END{print "'$i'", a/1024"M"}' /proc/$i/smaps 2>/dev/null;done | sort -k2nr | head -10
4.1查看系统块设备信息
lsblk

4.2查看swap分区大小
free -h

可以看到当前服务器Swap分区大小为2G,已使用1.2G,余量730M

4.3增加1G的Swap分区
dd if=/dev/zero of=/swap2 bs=1M count=10240

非root用户需要sudo开启临时root权限

这里会新建一个目录(/swap2),该目录为新增的swap分区

各参数含义:

dd:用指定大小的块拷贝文件,并在拷贝的同时进行指定的转换

if=:(input file) 数据的来源 (源)

of=:(outpu file)输出文件 (目标)

bs=:(block size) 每次复制多大(bytes)

count=:次数

/dev/zero 白洞 源源不断的输出

/dev/null 黑洞 吸收

/dev/urandom 随机字符

4.4 将文件更新为swap类型

查看新增分区的文件类型

file /swap2

使用mkswap命令来设置交换文件,即相当于格式化新建立的交换分区。

mkswap /swap2

4.5激活swap分区

要立即启用交换文件而不是在引导时自动启用,使用swapon命令。

swapon /swap2

如果要停止使用新建立的交换分区则用swapoff命令。

检查增加后的交换情况,增加后的交换分区为12238M。

free -m

4.6更改新增的swap分区的权限
chmod 600 /swap2
4.7查看swap分区的组成情况
swapon -s

参考链接

一条报警引起的对 swap 认识

linux下扩展swap分区方法

http://t.csdn.cn/uEiGO

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要扩展Linux的swap分区,可以按照以下步骤进行操作: 1. 确认当前系统中swap分区的情况,可以使用命令“swapon -s”查看。 2. 确认需要扩展的磁盘空间,可以使用命令“df -h”查看。 3. 关闭swap分区,可以使用命令“swapoff -a”关闭所有swap分区。 4. 使用fdisk或者parted等工具对需要扩展的磁盘进行分区。 5. 格式化新的swap分区,可以使用命令“mkswap /dev/sdX”(其中sdX为新分区的设备名)。 6. 启用新的swap分区,可以使用命令“swapon /dev/sdX”(其中sdX为新分区的设备名)。 7. 确认新的swap分区已经启用,可以使用命令“swapon -s”查看。 8. 修改/etc/fstab文件,将新的swap分区添加到开机自动挂载列表中,以便系统重启后自动启用新的swap分区。 以上就是扩展Linux的swap分区的步骤。需要注意的是,在进行分区操作时一定要小心,避免误操作导致数据丢失。 ### 回答2: Linux是一种成熟的操作系统,拥有广泛的用途,比如Web服务器,移动设备开发,桌面电脑等。但是,在Linux服务器运行时,会占用某些内存资源。当这些内存资源用尽时,您的服务器将无法为用户请求提供服务。为了解决这种情况,Linux提供了swap分区的概念。 swap分区是Linux系统中的一种辅助性质量。它与操作系统的内存一起工作,扩展了可用内存。swap分区可以在磁盘驱动器的另一个分区中创建。如果您发现Linux服务器不能满足RAM(随机访问存储器)的需求,可以扩展swap分区扩展swap分区的第一步是检查您的系统是否有空闲的硬盘空间。您可以使用fdisk命令来查看您的硬盘分区。在fdisk命令中,您应该选择要查看的磁盘,然后使用"p"选项检查分区和可用空间。 然后,您需要使用mkswap命令来创建新的swap分区。该命令需要指定新swap分区的设备文件。您可以使用命令“cat /proc/swaps”来检查当前的swap分区。命令的输出应包括新的swap分区。 接下来,您需要将新的swap分区添加到swap设备列表中。这可以通过修改“/etc/fstab”文件来实现。您需要编辑此文件并添加一个新的条目,以将新的swap分区添加到swap设备列表中。要使更改生效,您需要重新启动服务器。 总之,扩展Linux服务器的swap分区可以增加系统可用的内存。但是,使用swap分区的效率低于使用RAM,因此您应该尽量减少使用swap。在扩展swap分区之前,应注意服务器硬盘上是否有足够的空间,并且仔细核对配置文件的更改,以避免错误和意外的系统崩溃。 ### 回答3: Linux系统中的swap分区是一种虚拟内存,它作为扩展内存使用。当系统的物理内存不足以支持运行的所有应用程序时,系统会将不常用的内存页交换到swap分区中,从而释放出物理内存并使更多的应用程序能运行。 在Linux中,swap分区可以在安装系统时预先分配,也可以后期进行扩展。当系统开始运行时,可以使用命令“free -h”查看swap分区的使用情况和大小。 要扩展swap分区,需要遵循以下步骤: 1、使用“sudo swapoff -a”命令关闭所有的swap分区,以便进行扩展。 2、使用“sudo fdisk /dev/sda”命令(假设第一块硬盘为/dev/sda)打开硬盘分区工具,进入分区编辑模式。 3、对需要扩展分区进行编辑操作,并将其扩展到所需的大小。 4、使用“sudo mkswap /dev/sda3”命令(假设分区名为/dev/sda3)将分区格式化为swap分区。 5、使用“sudo swapon /dev/sda3”命令重新启用swap分区。 6、使用“sudo swapon -s”命令检查新的swap分区是否已经启用。 以上就是扩展linux swap分区的步骤,务必要小心操作,以免误操作导致不必要的损失。同时还要注意,过多使用swap分区可能会影响系统的性能,因此应该根据实际需要进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值