内存置换空间(swap)之建置

安装时一定需要的两个 partition 啰! 一个是根目录,另外一个就是 swap(内存置换空间), swap 的功能就是在应付物理内存不足的情况下所造成的内存延伸记录的功能。

一般来说,如果硬件的配备足够的话,那么 swap 应该不会被我们的系统所使用到, swap 会被利用到的时刻通常就是物理内存不足的情况了。我们知道 CPU 所读取的数据都来自于内存, 那当内存不足的时候,为了让后续的程序可以顺利的运行,因此在内存中暂不使用的程序与数据就会被挪到 swap 中了。 此时内存就会空出来给需要运行的程序加载。由于 swap 是用硬盘来暂时放置内存中的信息, 所以用到 swap 时,你的主机硬盘灯就会开始闪个不停啊!

虽然目前(2009)主机的内存都很大,至少都有 1GB 以上啰!因此在个人使用上你不要配置 swap 应该也没有什么太大的问题。 不过服务器可就不这么想了~由于你不会知道何时会有大量来自网络的要求,因此你最好能够预留一些 swap 来缓冲一下系统的内存用量! 至少达到『备而不用』的地步啊!

现在想象一个情况,你已经将系统创建起来了,此时却才发现你没有建置 swap ~那该如何是好呢? 透过本章上面谈到的方法,你可以使用如下的方式来创建你的 swap 啰!

配置一个 swap partition
创建一个虚拟内存的文件
不啰唆,就立刻来处理处理吧!

使用分区配置swap

创建 swap 分割槽的方式也是非常的简单的!透过底下几个步骤就搞定啰:

分割:先使用 fdisk 在你的磁盘中分割出一个分割槽给系统作为 swap 。由于 Linux 的 fdisk 默认会将分割槽的 ID 配置为 Linux 的文件系统,所以你可能还得要配置一下 system ID 就是了。
格式化:利用创建 swap 格式的『mkswap 装置文件名』就能够格式化该分割槽成为 swap 格式啰
使用:最后将该 swap 装置启动,方法为:『swapon 装置文件名』。
观察:最终透过 free 这个命令来观察一下内存的用量吧!
不啰唆,立刻来实作看看!既然我们还有多余的磁盘容量可以分割,那么让我们继续分割出 256MB 的磁盘分区槽吧! 然后将这个磁盘分区槽做成 swap 吧!

1. 先进行分割的行为啰!

  1. [root@www ~]# fdisk /dev/hdc
  2. Command (m for help): n
  3. First cylinder (2303-5005, default 2303): <==这里按[enter]
  4. Using default value 2303
  5. Last cylinder or +size or +sizeM or +sizeK (2303-5005, default 5005): +256M
  6.  
  7. Command (m for help): p
  8.  
  9. Device Boot Start End Blocks Id System
  10. .....中间省略.....
  11. /dev/hdc6 2053 2302 2008093+ 83 Linux
  12. /dev/hdc7 2303 2334 257008+ 83 Linux <==新增的项目
  13.  
  14. Command (m for help): t <==修改系统 ID
  15. Partition number (1-7): 7 <==从上结果看到的,七号partition
  16. Hex code (type L to list codes): 82 <==改成 swap ID
  17. Changed system type of partition 7 to 82 (Linux swap / Solaris)
  18.  
  19. Command (m for help): p
  20.  
  21. Device Boot Start End Blocks Id System
  22. .....中间省略.....
  23. /dev/hdc6 2053 2302 2008093+ 83 Linux
  24. /dev/hdc7 2303 2334 257008+ 82 Linux swap / Solaris
  25.  
  26. Command (m for help): w
  27. # 此时就将 partition table 升级了!
  28.  
  29. [root@www ~]# partprobe
  30. # 这个玩意儿很重要的啦!不要忘记让核心升级 partition table 喔!

2. 开始建置 swap 格式

  1. [root@www ~]# mkswap /dev/hdc7
  2. Setting up swapspace version 1, size = 263172 kB <==非常快速!

3. 开始观察与加载看看吧!

  1. [root@www ~]# free
  2. total used free shared buffers cached
  3. Mem: 742664 684592 58072 0 43820 497144
  4. -/+ buffers/cache: 143628 599036
  5. Swap: 1020088 96 1019992
  6. # 我有 742664K 的物理内存,使用 684592K 剩余 58072K ,使用掉的内存有
  7. # 43820K / 497144K 用在缓冲/缓存的用途中。
  8. # 至于 swap 已经存在了 1020088K 啰!这样会看了吧?!

[root@www ~]# swapon /dev/hdc7
[root@www ~]# free
total used free shared buffers cached
Mem: 742664 684712 57952 0 43872 497180
-/+ buffers/cache: 143660 599004
Swap: 1277088 96 1276992 <==有添加啰!看到否?

  1.  

[root@www ~]# swapon -s
Filename Type Size Used Priority
/dev/hdc5 partition 1020088 96 -1
/dev/hdc7 partition 257000 0 -2
# 上面列出目前使用的 swap 装置有哪些的意思!

使用文件配置swap

如果是在实体分割槽无法支持的环境下,此时前一小节提到的 loop 装置建置方法就派的上用场啦! 与实体分割槽不一样的只是利用 dd 去建置一个大文件而已。多说无益,我们就再透过文件建置的方法创建一个 128 MB 的内存置换空间吧!

1. 使用 dd 这个命令来新增一个 128MB 的文件在 /tmp 底下:

  1. [root@www ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
  2. 128+0 records in
  3. 128+0 records out
  4. 134217728 bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s
  5.  
  6. [root@www ~]# ll -h /tmp/swap
  7. -rw-r--r-- 1 root root 128M Oct 28 15:33 /tmp/swap

这样一个 128MB 的文件就建置妥当。若忘记上述的各项参数的意义,请回前一小节查阅一下啰!

2. 使用 mkswap 将 /tmp/swap 这个文件格式化为 swap 的文件格式:

  1. [root@www ~]# mkswap /tmp/swap
  2. Setting up swapspace version 1, size = 134213 kB
  3. # 这个命令下达时请『特别小心』,因为下错字节控制,将可能使您的文件系统挂掉!

3. 使用 swapon 来将 /tmp/swap 启动啰!

  1. [root@www ~]# free
  2. total used free shared buffers cached
  3. Mem: 742664 450860 291804 0 45584 261284
  4. -/+ buffers/cache: 143992 598672
  5. Swap: 1277088 96 1276992
  6.  
  7. [root@www ~]# swapon /tmp/swap
  8. [root@www ~]# free
  9. total used free shared buffers cached
  10. Mem: 742664 450860 291804 0 45604 261284
  11. -/+ buffers/cache: 143972 598692
  12. Swap: 1408152 96 1408056
  13.  
  14. [root@www ~]# swapon -s
  15. Filename Type Size Used Priority
  16. /dev/hdc5 partition 1020088 96 -1
  17. /dev/hdc7 partition 257000 0 -2
  18. /tmp/swap file 131064 0 -3

4. 使用 swapoff 关掉 swap file

  1. [root@www ~]# swapoff /tmp/swap
  2. [root@www ~]# swapoff /dev/hdc7
  3. [root@www ~]# free
  4. total used free shared buffers cached
  5. Mem: 742664 450860 291804 0 45660 261284
  6. -/+ buffers/cache: 143916 598748
  7. Swap: 1020088 96 1019992 <==回复成最原始的样子了!

Linux学习之CentOS(十六)-----内存置换空间(swap)之建置(转)的更多相关文章

  1. Linux学习之CentOS(十五)----磁盘管理之 启动挂载(转)

    启动挂载 /etc/fstab 及 /etc/mtab 刚刚上面说了许多,那么可不可以在启动的时候就将我要的文件系统都挂好呢?这样我就不需要每次进入 Linux 系统都还要在挂载一次呀!当然可以啰!那 ...

  2. Linux学习之CentOS(十二)------磁盘管理之 磁盘的分区、格式化、挂载(转)

    磁盘分区.格式化.挂载磁盘分区    新增分区    查询分区    删除分区磁盘格式化    mkfs    mke2fs磁盘挂载与卸载    mount    umount 磁盘的分区.格式化.挂 ...

  3. Linux学习之CentOS(十二)----磁盘管理之 认识ext文件系统(转)

    认识ext文件系统 硬盘组成与分割 文件系统特性 Linux 的 EXT2 文件系统(inode) 与目录树的关系 EXT2/EXT3 文件的存取与日志式文件系统的功能 Linux 文件系统的运行 挂 ...

  4. Linux学习之CentOS(十二)--crontab命令的使用方法

    http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/06/3002602.html crontab命令常见于Unix和Linux的操作系统之 ...

  5. Linux学习之CentOS(十)--虚拟机下的CentOS如何上网

    原地址:http://www.cnblogs.com/xiaoluo501395377/archive/2013/04/05/3001148.html 这篇随笔应该说跟CentOS的学习关系不是很大, ...

  6. Linux学习之CentOS(十四)----磁盘管理之 硬连接与软件连接(转)

    前言 在 Linux 底下的连结档有两种,一种是类似 Windows 的快捷方式功能的文件,可以让你快速的链接到目标文件(或目录),这种是软链接: 另一种则是透过文件系统的 inode 连结来产生新档 ...

  7. Linux学习之CentOS(十九)------linux 下压缩与解压之 tar、gzip、bzip2、zip、rar

    将文件存储到归档文件中或者从归档文件中获取原始文件,以及为文件创建归档文件 tar [option] [modifiers] [file-list] 参数 file-list是tar进行归档和提取的文 ...

  8. Linux学习之CentOS(十八)-----恢复Ext3下被删除的文件与 使用grep恢复被删文件内容(转)

    前言 下面是这个教程将教你如何在Ext3的文件系统中恢复被rm掉的文件. 删除文件 假设我们有一个文件名叫 'test.txt' $ls -il test.txt 15 -rw-rw-r– 2 roo ...

  9. Linux学习之CentOS(十)----Linux 的账号与群组

    Linux 的账号与群组 管理员的工作中,相当重要的一环就是『管理账号』啦!因为整个系统都是你在管理的, 并且所有一般用户的账号申请,都必须要透过你的协助才行!所以你就必须要了解一下如何管理好一个服务 ...

随机推荐

  1. Python机器学习—导入各种数据的N种办法

    pandas 读取数据 一.导入一般的文件 1.read_csv(),用来读取CSV文件 官方文档是这么说的:Read CSV (comma-separated) file into DataFram ...

  2. VMware vCenter Server 6.5.0 U1

    VMware vCenter Server 6.5.0 U1gName: VMware-VCSA-all-6.5.0-8024368.iso Release Date: 2018-03-20 Buil ...

  3. .Net EntityFramwork6.0 EF框架开发入门

    一.环境 开发环境:Sqlserver2008 R2.Visual Studio2012   二.准备工作 1.新建MVC空项目 2.通过NuGet获取 EntityFramework 包  操作截图 ...

  4. Python内置函数(63)——property

    英文文档: class property(fget=None, fset=None, fdel=None, doc=None) Return a property attribute. fget is ...

  5. 新概念英语(1-73)The way to King Street

    The way to King Street 到国王街的走法Why did the man need a phrasebook?Last week Mrs. Mills went to London. ...

  6. 云+社区技术沙龙:Kafka meetup 深圳站报名开启

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 如果说 2018 年是技术大爆炸年,那么 Apache Kafka 绝对是其中闪亮的新星. 自Kafka 从首发之日起,已经走过了快八个年头 ...

  7. python Django之文件上传

    python Django之文件上传 使用Django框架进行文件上传共分为俩种方式 一.方式一 通过form表单进行文件上传 #=================================== ...

  8. python列表基础操作

    Python列表基本操作 记住一句话,叫做顾首不顾尾 首先我们来定义一个列表 name = ["jixuege","dajiba","boduoye& ...

  9. Django:(博客系统)使用使用mysql数据->后台管理tag/post/category的配置

    Django后台一般是不需要人为的去开发的,因为django已经通过配置实现哪些模块是后台需要管理,如何排序,列表展示哪些列,列显示名称,是否为空(默认值),过滤条件,分页页数,列表中哪些项可编辑等等 ...

  10. Struts(十八):通过CURD来学习PrepareInterceptor拦截器

    PrepareInterceptor拦截器的用法: 1.若Action实现了Preparable接口,则Action方法需实现prepare()方法: 2.PrepareInterceptor拦截器S ...