内存置换空间(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. 先进行分割的行为啰!
[root@www ~]# fdisk /dev/hdc Command (m for help): n First cylinder (2303-5005, default 2303): <==这里按[enter] Using default value 2303 Last cylinder or +size or +sizeM or +sizeK (2303-5005, default 5005): +256M Command (m for help): p Device Boot Start End Blocks Id System .....中间省略..... /dev/hdc6 2053 2302 2008093+ 83 Linux /dev/hdc7 2303 2334 257008+ 83 Linux <==新增的项目 Command (m for help): t <==修改系统 ID Partition number (1-7): 7 <==从上结果看到的,七号partition Hex code (type L to list codes): 82 <==改成 swap 的 ID Changed system type of partition 7 to 82 (Linux swap / Solaris) Command (m for help): p Device Boot Start End Blocks Id System .....中间省略..... /dev/hdc6 2053 2302 2008093+ 83 Linux /dev/hdc7 2303 2334 257008+ 82 Linux swap / Solaris Command (m for help): w # 此时就将 partition table 升级了! [root@www ~]# partprobe # 这个玩意儿很重要的啦!不要忘记让核心升级 partition table 喔!
2. 开始建置 swap 格式
[root@www ~]# mkswap /dev/hdc7 Setting up swapspace version 1, size = 263172 kB <==非常快速!
3. 开始观察与加载看看吧!
[root@www ~]# free total used free shared buffers cached Mem: 742664 684592 58072 0 43820 497144 -/+ buffers/cache: 143628 599036 Swap: 1020088 96 1019992 # 我有 742664K 的物理内存,使用 684592K 剩余 58072K ,使用掉的内存有 # 43820K / 497144K 用在缓冲/缓存的用途中。 # 至于 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 <==有添加啰!看到否?
[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 底下:
[root@www ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128 128+0 records in 128+0 records out 134217728 bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s [root@www ~]# ll -h /tmp/swap -rw-r--r-- 1 root root 128M Oct 28 15:33 /tmp/swap
这样一个 128MB 的文件就建置妥当。若忘记上述的各项参数的意义,请回前一小节查阅一下啰!
2. 使用 mkswap 将 /tmp/swap 这个文件格式化为 swap 的文件格式:
[root@www ~]# mkswap /tmp/swap Setting up swapspace version 1, size = 134213 kB # 这个命令下达时请『特别小心』,因为下错字节控制,将可能使您的文件系统挂掉!
3. 使用 swapon 来将 /tmp/swap 启动啰!
[root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45584 261284 -/+ buffers/cache: 143992 598672 Swap: 1277088 96 1276992 [root@www ~]# swapon /tmp/swap [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45604 261284 -/+ buffers/cache: 143972 598692 Swap: 1408152 96 1408056 [root@www ~]# swapon -s Filename Type Size Used Priority /dev/hdc5 partition 1020088 96 -1 /dev/hdc7 partition 257000 0 -2 /tmp/swap file 131064 0 -3
4. 使用 swapoff 关掉 swap file
[root@www ~]# swapoff /tmp/swap [root@www ~]# swapoff /dev/hdc7 [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45660 261284 -/+ buffers/cache: 143916 598748 Swap: 1020088 96 1019992 <==回复成最原始的样子了!