Linux下swap到底有没有必要使用

周五看到QQ群里在讨论Linux主机上到底需不需要开启swap空间,而且目前公有云主机默认都是把swap关了的,很多公司也是没有开启swap,那到底需不需要开启呢?


我之前在看《鸟哥的Linux私房菜》上他写了这么一段话:swap在目前的桌面计算机来讲,存在的意义已经不大了,这是因为目前的X86主机所含的内存实在都太大了,所以我们的系统大概率用不到swap,不过,如果针对服务器或者工作站这些常年上线的系统来说,swap还是需要的。


当然,这段话是《鸟哥的Linux私房菜》第三版里写的(在第四版不知道还是不是这么写的),那时候的内存还远远没有现在大,那现在到底需不需要呢?我们先来看看什么是swap,它的作用是什么。

什么是swap

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

swap的主要功能

其实上面基本已经将swap的主要功能说了,这里再来重述一下:
(1)、当物理内存不足的时候,将某些在内存中所占用的程序暂时移动到swap当中,让物理内存可以被需要的程序来使用;
(2)、Linux会将内存中不常访问的数据保存到swap中,当系统需要再次调用的时候,就把它从swap加载到内存;
(3)、如果你的主机支持电源管理模式,也就是说,你的Linux主机系统可以进入"休眠"模式的话,那么,运行当中的程序状态则会被记录到swap中去,以作为"唤醒"主机状态的依据;
(4)、在某些程序运行时,本来就会利用swap特性来存放一些数据,比如在装Oracle11g的时候会检查swap size;

swap给我们带来什么好处

上面介绍了swap的主要功能,其实就是swap的优点。在说swap给我们带来好处之前先说说swap的缺点。由于swap是磁盘上的一个区域,要么是文件,要么是分区,甚至它们的组合,其实都逃不脱"在磁盘上",那么很明显的一个缺点就是速度,磁盘的速度和内存的速度不是一个量级的,就算现在的SSD磁盘,还是跟不上内存的速度,所以说如果不停的读写swap,对磁盘的性能是有很大的影响的,尤其是在物理内存吃紧,swap读写频率又高的极端情况下,这时候除了加物理内存别无他法了。

有的小伙伴看到这里可能在想,哇,我还用它干啥,我直接把我内存加够不就行了。骚年莫急,我将慢慢道来。
来看看下面这些情况:
(1)、有些应用程序在启动的时候会需要大量内存,但是在启动完成后需要的内存很小,这时候swap就很是时候了,假如全部用物理内存,其实就有点浪费资源了,谁的钱不是钱呢?你说是吧。
(2)、现在很多小伙伴开发都用Ubuntu,Ubuntu有休眠的功能,如果需要用到休眠的话,也是需要swap的,它会把休眠之前内存中的数据保存到swap中,你下次用的时候,就直接从swap加载到内存中,省的麻烦。
(3)、有些小公司讲究节约成本,甚至有的把这个当成kpi了,所以就不能把内存搞得蛮大了,我们就需要在保证系统正常运行所需内存的情况下,配备swap,既可以保证业务运行,也可以防患于未然。
(4)、现在大部分物理内存都够用了,很多公司也完全放弃了swap。但是谁也不知道下一秒会发生什么问题,比如内存泄漏,比如某个进程需要内存超过预期,这时候如果只有物理内存,可能就会直接OOM了,等不到我们收到报警,进行处理。如果这时候有swap,我们收到物理内存不够报警的时候还会有swap顶一下,回滚或者加内存什么的也有足够的时间,避免手忙脚乱发生生产事故。

当然还有很多情况,这里就不例举了。从上面其实可以看出,swap有它的好处,也有它的缺点,具体用不用是根据每个公司具体情况来定的,不是说不用,也不是说一定要用(当然,有的软件是一定要用的)。就像今天上午在微信群里和一为小伙伴讨论要不要秒级报警一样,每个公司有每个公司的打法,在讨论问题的时候切莫以自己公司的就是标准,我一直认为互联网时代没有唯一的标准,只有不断探索,不断追求,当然,大部分公司基本都是采用"前车之鉴"这种模式,比如效仿BAT公司成熟方案,学习各大高科技公司的落地实施等。

说了这么多,其实也就几句话:swap空间到底用不用,取决于应用软件需不需要,取决于公司的规范标准,还却决于作为运维人员自己的考虑,更多情况下还却决于现实(你的公司舍不舍得花钱)。

 

 

  • 6
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 要关闭Linux上的swap,可以按照以下步骤操作: 1. 查看当前系统上的swap分区情况,可以使用命令:`sudo swapon -s`。 2. 如果有swap分区正在使用,需要先禁用swap分区,可以使用命令:`sudo swapoff -a`。 3. 然后可以将swap分区从/etc/fstab文件中删除,以避免系统重启后自动启用swap分区。 4. 最后,可以将swap分区的标识符从系统中删除,可以使用命令:`sudo rm /swapfile`(如果swap分区是一个文件)或者`sudo fdisk /dev/sdX`(如果swap分区是一个磁盘分区)。 注意:关闭swap分区可能会影响系统的性能,只有在必要的情况下才应该这样做。 ### 回答2: 在Linux系统中,swap是为了减少内存压力而设立的一种临时存储空间,当系统内存不足时,会将一部分内存交换到swap分区中。但是,当系统运行多个程序或进程时,swap会频繁的写入和读取数据,对硬盘进行频繁的访问,从而导致系统变慢。 如果你的系统内存足够并且感觉swap对系统性能没有多大帮助,可以考虑将swap关闭。 关闭swap的步骤如下: 1. 查看系统中是否存在swap分区以及使用情况。 使用free命令查看swap使用情况: ``` $ free -h ``` 如果swap分区的使用量很小,甚至没有使用,那么关闭swap对系统性能的影响将会很小。 2. 禁用swap分区 首先查询当前系统中启用了哪些交换分区,在terminal输入: ``` $ sudo swapon -s ``` 输出结果如下: ```console Filename Type Size Used Priority /dev/sda2 partition 16383992 0 -1 ``` 关闭指定的swap分区,需要使用sudo swapoff命令,sudo代表权限提升,swapoff用于关闭交换分区,如: ``` sudo swapoff -v /dev/sda2 ``` 通过以上命令禁用了磁盘上的swap分区,可以通过查看系统当前状态,确认swap已经被禁用: ``` $ free -h ``` 结果显示设定的swap partition已经释放: ```console total used free shared buff/cache avaiMem列 omitted Mem: 7.8G 6.5G 547M 1.7M 751M 851M Swap: 0B 0B 0B ``` 3. 永久关闭swap分区 执行以上操作后,系统的swap分区已经间接关闭。但是,下次重启后,系统仍然会自动启用swap分区。如需永久禁用swap分区,需要更改配置文件。 打开/etc/fstab文件,查找swap分区对应的行,将该行注释掉: ``` # /etc/fstab: static file system information. UUID=32d4d58d-5f8f-4e0d-a695-530e0204dfa4 / ext4 errors=remount-ro 0 1 # UUID=75bdaa3f-0566-4fe4-8f0e-a203270dc270 none swap sw 0 0 ``` 将含有“UUID=xxx none swap…”的行修改为注释风格的,即以#号开头便不会再启动时重新启用它。修改完成后确保你的修改能生效: ``` $ sudo cat /proc/swaps ``` 最后,通过运行free查看无swap分区的Linux系统。 ``` $ free -h ``` 通过以上步骤,即可成功关闭Linux系统的swap分区,减少系统工作负载,提高系统响应速度。 ### 回答3: 在Linux操作系统中,swap是一个特殊的区域,用于扩展系统内存。当系统的物理内存不足时,操作系统可以将部分内存中的数据存储到swap分区中,以便为系统提供更多的内存空间。但是,在某些情况下,我们可能需要关闭swap分区。下面是关闭swap分区的方法: 1.使用swapoff命令禁用swap: 要完全禁用swap,我们需要使用swapoff命令将所有swap分区禁用。可以通过以下命令完成: $ sudo swapoff -a 这会立即关闭所有swap分区,并将其中所有内容释放回物理内存中。 2.删除swap分区并修改/etc/fstab文件: 要彻底删除swap分区,我们可以使用fdisk或其他分区管理工具将其删除。在删除分区之后,我们还需要修改/etc/fstab文件,以防止系统重新加载swap分区。我们可以通过编辑这个文件来禁用swap自动启动。 $ sudo vi /etc/fstab 在此文件中,可以看到系统中所有的分区信息及其参数。要禁用swap分区,我们需要找到包含swap分区UUID的行,并将其注释或删除。这样,当系统重新启动时,swap分区将不再加载。 3.重启系统: 最后,我们需要重启系统以应用更改。可以使用以下命令将系统重启: $ sudo reboot 总之,关闭swap分区可能对系统性能产生影响。只有在确信不需要swap分区的情况下才应该关闭它们。同时,建议在对系统进行任何更改之前进行完整的备份以避免数据丢失。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值