Linux磁盘管理——swap分区
对swap分区的误解
一种流行的、以讹传讹的说法是,安装Linux系统时,交换分区swap的大小应该是内存的两倍。也就是说,如果内存是2G,那么就应该分出4G的硬盘空间作为交换空间。其实这是严重的浪费。
真实的情况是:可以根据你系统内存的大小,以及所使用的程序,自行决定交换分区的大小,甚至可以完全不用交换分区!
什么是swap分区
swap分区功能是在内存不够的情况下,OS先把内存中暂时不用的数据,存到硬盘的交换空间,腾出内存来让别的程序运行,和Windows的虚拟内存(pagefile.sys)的作用是一样的。
一定要有swap分区吗?
做一个假设:如果你的内存足够大,极少出现内存不足的情况,那么你就不需要swap分区。事实上,这种可能性是完全存在的。现在玩《绝地求生》电脑最少都是16G起步了。日常使用的话,很少能用完全部的内存。在用不完内存容量的情况下,还要划出它两倍的硬盘空间用于内存交换,这不是浪费吗?
可以说,在你内存基本够用的情况下,完全可以不要交换空间。在Windows下也是一样,在系统属性中,把虚拟内存设置为0,系统依然运行的很好。当然,如果你用的是服务器,为了避免业务高峰带来的资源紧张,还是要有专门的虚拟内存,有备无患。但是虚拟内存的大小不一定非要内存的两倍。
查看swap分区
那么怎么知道你的系统有没有用到交换空间呢?只需要在root用户下,运行下面的命令就可以知道了。
free -m
在日常应用中,通过上述命令看到交换空间的使用情况为0,那么你就不需要很大的虚拟内存,甚至可以完全不需要另辟硬盘空间作为虚拟内存。那么,万一有一天你需要了呢,难道要重装系统?大可不必,在Linux下虚拟内存不单可以放在单独的交换分区,也可以是一个在正常分区下的交换文件。
查看swap 空间大小(总计):
[root@localhost ~]# free -m
total used free shared buff/cache available
Mem:
Swap:
[root@localhost ~]# free -mh
total used free shared buff/cache available
Mem: .9G 141M .7G 8.5M 146M .6G
Swap: .0G 0B .0G
-s 显示简短的设备讯息
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/dm- partition -
[root@localhost ~]# swapon --show
NAME TYPE SIZE USED PRIO
/dev/dm- partition 2G 0B -
添加交换空间
  两种选择:添加一个交换分区或添加一个交换文件。推荐你添加一个交换分区;不过,若你没有多少空闲空间可用,则添加交换文件。
添加一个交换分区
步骤如下:
- 使用fdisk来创建交换分区(假设 /dev/sdb2 是创建的交换分区)
 - 使用 mkswap 命令来设置交换分区:
 
# mkswap /dev/sdb2
- 启用交换分区:
 
# swapon /dev/sdb2
- 写入/etc/fstab,以便在引导时启用:
 
/dev/sdb2swap swap defaults 0 0
添加一个交换文件
- 创建大小为512M的交换文件:
 
# dd if=/dev/zero of=/swapfile1 bs=1024k count=512
- 使用 mkswap 命令来设置交换文件:
 
# mkswap /swapfile1
- 启用交换分区:
 
# swapon /swapfile1
- 写入/etc/fstab,以便在引导时启用:
 
/swapfile1 swap swap defaults 0 0
新添了交换分区并启用它之后,请查看 cat /proc/swaps 或free 命令的输出来确保交换分区已被启用了。
删除交换空间:
- 禁用交换分区:
 
# swapoff /dev/sdb2
- 从 /etc/fstab 中删除项目;
 - 使用fdisk或yast工具删除分区。
 
删除交换文件
步骤同上。
--------------------------------------------------------------------------------
  # free -m
                total      used      free    shared   buffers    cached
  Mem:          377       180       197         0        19       110
  -/+buffers/cache:        50       327
  Swap:         572         0       572
Mem 行显示了从系统角度看来内存使用的情况, total是系统可用的内存大小,数量上等于系统物理内存减去内核保留的内存.
buffers和cached是系统用做缓冲的内存. buffers与某个块设备关联, 包含了文件系统元数据, 并且跟踪了块的变化.cache只包含了文件本身.
-/+ buffers/cache 行则从用户角度显示内存信息,可用内存从数量上等于mem行used列值减去buffers和cached内存的大小.
因为buffers和cached是操作系统为加快系统运行而设置的, 当用户需要时,可以只接为用户使用.
top显示系统运行时的各进程动态、实时的状态(cpu、内存)
top 中有3个列 VIRT RES SHR,标示了进程使用的内存情况.
VIRT 标识这个进程可以使用的内存总大小, 包括这个进程真实使用的内存, 映射过的文件, 和别的进程共享的内存等.
RES 标识这个这个进程真实占用内存的大小.
SHR 标识可以和别的进程共享的内存和库大小.
vmstat 显示内存的使用情况
这些命令都是从/proc/meminfo中读取内存信息.
关于/proc/meminfo中各行的含意,在内核源代码的Documentation/filesystems/proc.txt文件中有叙述
系统的真实内存大小可以用 dmesg | grep[mM][eE][mM]看到
/proc/pid/status显示一个进程的详细状态
# cat /proc/5346/status
Name: bash
State: S (sleeping)
SleepAVG: 98%
Tgid: 5346
Pid: 5346
PPid: 5343
TracerPid: 0
Uid: 1000 1000 1000 1000
Gid: 104 104 104 104
FDSize: 256
Groups: 6 24 29 44 104 113 1000 1001
VmPeak: 6528 kB
VmSize: 6528 kB
VmLck: 0 kB
VmHWM: 1976 kB
VmRSS: 1976 kB
VmData: 752 kB
VmStk: 84 kB
VmExe: 644 kB
VmLib: 1788 kB
VmPTE: 16 kB
Threads: 1
SigQ: 0/4294967295
SigPnd: 0000000000000000
ShdPnd: 0000000000000000
SigBlk: 0000000000000000
SigIgn: 0000000000384004
SigCgt: 000000004b813efb
CapInh: 0000000000000000
CapPrm: 0000000000000000
CapEff: 0000000000000000
VmSize即为该进程内存总大小,和top输出中的VIRT一致.
Linux磁盘管理——swap分区的更多相关文章
- linux磁盘管理与分区   转载
		
原文:http://zhengjianglong.leanote.com/post/linux%E7%A3%81%E7%9B%98%E5%88%86%E5%8C%BA 一.基础知识 一块磁盘可以分为多 ...
 - linux内存管理swap分区
		
一.什么是linux的内存机制? 我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念. 物 ...
 - Linux 磁盘管理及分区
		
硬盘结构和基础知识 扇区(Sector)为最小的物理储存单位,每个扇区为512 bytes,将扇区组成一个圆就是磁道(track),不同磁盘的相同磁道组成磁柱(Cylinder),磁柱是分区(par ...
 - 03、磁盘管理+swap分区创建+磁盘配额+自动挂载
		
磁盘管理 分区标识 一般用4位标识,前两位,磁盘类型,第3位,磁盘编号,第4位,分区编号 如: /dev/sda1 sd 磁盘类型 a 磁盘编号 1 分区编号 [root@s1 ...
 - Linux 磁盘管理(分区、创建文件系统、挂载)
		
Linux设备文件可以分为两类 b : 按块为单位,随机访问设备(块设备文件) 如:硬盘 c : 按字符为单位,线性设备(字符设备文件) 如:键盘 设备文件位于/dev下 主设备号(major n ...
 - Linux 磁盘管理
		
Linux磁盘管理好坏管理直接关系到整个系统的性能问题. Linux磁盘管理常用三个命令为df.du和fdisk. df:列出文件系统的整体磁盘使用量 du:检查磁盘空间使用量 fdisk:用于磁盘分 ...
 - df、du、fdisk:Linux磁盘管理三板斧的使用心得(转载)
		
From:http://os.51cto.com/art/201012/240726_all.htm 作者介绍:李洋(博客),博士毕业于中科院计算所.10多年来一直从事计算机网络信息安全研发工作,曾主 ...
 - linux磁盘管理系列-软RAID的实现
		
1 什么是RAID RAID全称是独立磁盘冗余阵列(Redundant Array of Independent Disks),基本思想是把多个磁盘组合起来,组合一个磁盘阵列组,使得性能大幅提高. R ...
 - linux磁盘管理系列-LVM的使用
		
LVM是什么 LVM是Linux操作系统的逻辑卷管理器. 现在有两个Linux版本的LVM,分别是 LVM1,LVM2.LVM1是一种已经被认为稳定了几年的成熟产品,LVM2 是最新最好的LVM版本. ...
 
随机推荐
- Convex Hull | Set 1
			
Given a set of points in the plane. the convex hull of the set is the smallest convex polygon that c ...
 - 记EXSI虚拟机CentOS7断电无法启动修复过程
			
参考:https://msd.misuland.com/pd/3148108429789233656 EXSI6.7安装虚拟机CentOS7.5 1804 断电后启动页面进度条很慢 最后出现如下提示 ...
 - Oracle数据同步交换
			
一.为了解决数据同步汇聚,数据分发,数据转换,数据维护等需求,TreeSoft将复杂的网状的同步链路变成了星型数据链路. TreeSoft作为中间传输载体负责连接各种数据源,为各种异构数据库之 ...
 - 【c# 学习笔记】为什么要使用委托
			
上一章中我们可能会很疑惑,为什么需要委托?为什么不直接在MyMethod方法里直接调用Add方法,反而要实例化一个委托对象来完成调用呢?这岂不是自找麻烦吗? 当然,c#引入委托并不是自找麻烦.委托是c ...
 - Moq中注入dynamic方法出错
			
1.dynamic不可以跨程序集使用 2.需要在Test的AssemblyInfo.cs中里加 [assembly: InternalsVisibleTo("DFYYDream.UI.Web ...
 - Ext.jsTree 向子节点添加叶子节点
			
// 定义搜索节点树结构Store const nodeStore = Ext.create('Ext.data.TreeStore', { autoLoad : true, id : 'nodeSt ...
 - Qt598x64vs2017.跨线程传递std::string
			
1.Qt编译的时候 提示 str::string 需要在main(...)中注册什么的(大概是这个意思,记不清了),于是 在main(...)中调用了 “qRegisterMetaType<st ...
 - PL/SQL链接Oracle数据库 导出表结构和表数据
			
打开pl/sql客户端(导出数据表结构) 在左侧 点击tabales 2 Tools-->Export User Objects,导出sql格式的文件 3 红色1 是你要选择导出的表,红色2 是 ...
 - layuiAdmin (单页版)常见问题与解决方案
			
最近项目开发中用到了layuiAdmin的单页版进行开发,期间遇到一些问题,在此总结一二: 单页版缓存问题 由于单页面版本的视图文件和静态资源模块都是动态加载的,所以可能存在浏览器的本地缓存问题,因此 ...
 - nginx 安全配置和限制访问
			
nginx基本安全配置 配置ssl证书 listen 443 ssl; ssl_certificate /usr/local/nginx/conf/server.crt; ssl_certificat ...