Linux交换分区管理

简介: 这篇文章将讲述交换分区的管理,包括交换分区的介绍,交换分区的作用,以及如何增加交换分区。

前言


这篇文章将讲述交换分区的管理,包括交换分区的介绍,交换分区的作用,以及如何增加交换分区。


简介


 Linux内核将RAM分成内存块和交换(Swap)进程,交换(Swap)进程是当Linux内核使用硬盘空间(交换空间)来存储RAM中的信息,从而释放一些RAM空间。这就是为什么在安装Linux发行版时,安装向导通常会提示为系统分配一些空间以及给交换(Swap)分配另一个空间。使用交换(Swap)是扩展 RAM 的一种非常有用的方法,因为它在 RAM 空间耗尽且必须继续进程时提供必要的额外内存。当安装Linux的内存小于1Gb 时,特别建议这样做。虽然最后,一切都取决于你。

      作用:“提升”内存的容量,防止OOM(Out Of Memory)


OOM简介


    OOM:out of memory,内存溢出。

      oom_killer是Linux自我保护的方式,防止内存不足时出现严重问题

      Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory()被触发,然后调用select_bad_process()选择一个”bad”进程杀掉。如何判断和选择一个”bad进程呢?linux选择”bad”进程是通过调用oom_badness(),挑选的算法和想法都很简单很朴实:最bad的那个进程就是那个最占用内存的进程。


swap的大小


   一般推荐设置交换分区大小为内存的2倍

在生产环境中:

       大于4G二小于16G的系统,最小需要4G交换空间;

       大于16G二小于64G的系统,最小需要8G交换空间;

       大于64G二小于256G的系统,最小需要16G交换空间。


查看当前交换分区


命令:free  -m


[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         666          59          12         246         152
Swap:          2047          10        2037


可看到当前交换分区是2G。


增加交换分区


1)准备分区(按照正常操作增加分区)

[root@localhost ~]# fdisk /dev/sdc
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xa4ce7f2b 创建新的 DOS 磁盘标签。
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-10485759,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-10485759,默认为 10485759):+2G
分区 1 已设置为 Linux 类型,大小设为 2 GiB
命令(输入 m 获取帮助):p
磁盘 /dev/sdc:5368 MB, 5368709120 字节,10485760 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xa4ce7f2b
   设备 Boot      Start         End      Blocks   Id  System
/dev/sdc1            2048     4196351     2097152   83  Linux
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# partprobe /dev/sdc        //刷新分区表
[root@localhost ~]# ls /dev/sdc*            //查看sdc磁盘
/dev/sdc  /dev/sdc1


这个分区不能存放任何数据,需要作为交换分区处理。


2)格式化


命令: mkswap  /dev/sdc1


[root@localhost ~]# mkswap /dev/sdc1
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=38ba62dd-8bb8-484b-a16d-191af594032a


3)挂载,查看交换分区


命令:swapon  /dev/sdc1                //挂载交换分区


//挂载交换分区
[root@localhost ~]# swapon  /dev/sdc1
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         707          72          13         192          98
Swap:          4095          25        4070


可看到当前交换分区变为4G,挂载成功,交换分区通过将内存存放不下的内容存放到交换分区,以达到提升内存的效果。


4)卸载交换分区


命令:swapoff   /dev/sdc1


//卸载sdc1交换分区
[root@localhost ~]# swapoff /dev/sdc1
[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:            972         705          74          13         192         100
Swap:          2047          25        2022


可看到当前交换分区变为2G,卸载成功。






相关文章
|
1月前
|
安全 Linux
Linux通配符及其在文件搜索和管理中的应用
Linux通配符及其在文件搜索和管理中的应用
|
2月前
|
Java Linux
Linux上管理不同版本的 JDK
Linux上管理不同版本的 JDK
42 0
|
24天前
|
Linux
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
系统启动以后一直存在且常驻内存没有界面的进程就是服务。Linux系统中的所有服务都保存在下列目录中:/usr/lib/systemd/system,进入该目录就能看到所有的服务。
入职必会-开发环境搭建37-Linux常用操作-Linux服务管理
|
1月前
|
Linux
Linux 中RPM软件包管理
Linux 中RPM软件包管理
|
1月前
|
SQL 自然语言处理 网络协议
【Linux开发实战指南】基于TCP、进程数据结构与SQL数据库:构建在线云词典系统(含注册、登录、查询、历史记录管理功能及源码分享)
TCP(Transmission Control Protocol)连接是互联网上最常用的一种面向连接、可靠的、基于字节流的传输层通信协议。建立TCP连接需要经过著名的“三次握手”过程: 1. SYN(同步序列编号):客户端发送一个SYN包给服务器,并进入SYN_SEND状态,等待服务器确认。 2. SYN-ACK:服务器收到SYN包后,回应一个SYN-ACK(SYN+ACKnowledgment)包,告诉客户端其接收到了请求,并同意建立连接,此时服务器进入SYN_RECV状态。 3. ACK(确认字符):客户端收到服务器的SYN-ACK包后,发送一个ACK包给服务器,确认收到了服务器的确
158 1
|
1月前
|
监控 安全 Unix
探索Linux命令repo-rss:管理仓库更新的新视角
`repo-rss`是一个设想中的Linux工具,用于通过RSS订阅跟踪软件仓库更新。它能订阅仓库、检测更新、生成RSS feed并发送通知。主要特点包括实时性、灵活性、自动化和可扩展性。用户可定制订阅、时间间隔及输出格式。示例用法包括订阅Debian仓库、将更新输出为RSS文件或发送至邮箱。使用时需注意安全、资源消耗和隐私,最佳实践包括定期评估、自动化处理、多源订阅和备份。此工具展示了RSS在软件管理中的创新应用。
|
2月前
|
Linux
【Linux 基础】文件与目录管理
文件和目录的基本概念以及常用命令
42 11
|
2月前
|
Linux 网络安全 开发工具
Linux 管理远程会话 screen:掌握终端的多任务操作
`Linux screen` 命令让多任务管理变得更简单,尤其在SSH连接远程服务器时。创建新会话如`screen -S backup`,查看会话`screen -ls`,退出`exit`。高级功能包括直接在会话中运行命令,如`screen vim memo.txt`,会话共享以协同工作,以及通过`screen -r`或`-D -r`重新连接或强制恢复断开的会话。提高效率,确保任务不间断运行。
27 1
|
2月前
|
消息中间件 存储 监控
实战Linux I/O多路复用:借助epoll,单线程高效管理10,000+并发连接
本文介绍了如何使用Linux的I/O多路复用技术`epoll`来高效管理超过10,000个并发连接。`epoll`允许单线程监控大量文件描述符,显著提高了资源利用率。文章详细阐述了`epoll`的几个关键接口,包括`epoll_create`、`epoll_ctl`和`epoll_wait`,以及它们在处理并发连接中的作用。此外,还探讨了`epoll`在高并发TCP服务场景的应用,展示了如何通过`epoll`和线程/协程池来构建服务框架。
275 9
|
2月前
|
安全 Linux 数据处理
探索Linux的kmod命令:管理内核模块的利器
`kmod`是Linux下管理内核模块的工具,用于加载、卸载和管理模块及其依赖。使用`kmod load`来加载模块,`kmod remove`卸载模块,`kmod list`查看已加载模块,`kmod alias`显示模块别名。注意需有root权限,且要考虑依赖关系和版本兼容性。最佳实践包括备份、查阅文档和使用额外的管理工具。