Linux 64位的每个进程可以有4 GB的虚拟内存空间。而且系统中还要同时存在多个进程,当系统中的物理内存紧缺时。就需要利用对换空间把一部分未来可能不用的页面从物理内存中移到对换设备或对换文件中。
Linux采用两种方式保存换出的页面。一种是利用整个块设备,如硬盘的一个分区(swap).即对换设备,另一种是利用文件系统中固定长度的文件.即对换文件。 它们统称为对换空间。 这两种方式的相同之处是它们的内部格式一致.但是在执行效率方面.对换设备要好一些.这是因为对换设备上同一页面的数据块是连续存放的.故而可以顺序存取,而在对换文件中。 同一页面的数据块实际的物理位置可能是不连续的.需要通过对换文件的 i n o d e检索. 这就降低了存取效率 。
最常用的就是在硬盘上划分出一块空间分成一个个页框模拟内存,然后把内存中最近最少使用的数据移动到硬盘模拟的空间上去,以便给内存腾出空间便于其他进程使用;内核会记录从内存中移动到硬盘上的数据同时会把刚刚移动的页框对应的进程地址给消除,一旦对应的进程需要访问移动到硬盘上的数据时,内核立即就会响应并把数据再装载进来分配一个新的页框地址给需要访问的进程使用,数据还是原来的数据所以进程也不知道。那么磁盘上的这块空间就叫交换空间swap;正是由于交换空间的存在所以允许内存过载使用。
free -m:查看当前系统内核和swap使用情况以M为单位显示。
1 2 3 4 |
$ free -m total used free shared buffers cached Mem: 4050 426 3623 0 145 186 Swap: 5279 0 5279 |
Butter和Cache都是为衔接快设备和慢设备之间的数据交换加快系统执行过程;在内存中butter是用来存放元数据内容以便节约内核查找磁盘的时间;而cache是用来缓存数据区域的内容当系统再次使用到最近使用的数据时先找cache如果有直接使用没有在到硬盘查找然后再把内容缓存在cache中。
butter:缓冲的作用是为了避免过慢的设备在接收数据时招到冲击。
cache:缓存的作用是为了重复使用和避免过慢的设备发送数据招到延迟。
Swap操作命令
1 2 3 4 5 6 7 8 9 10 11 |
# 格式化swap分区(分区时/dev/sda3类型为82); $ mkswap /dev/sda4 # 启用swap分区; $ swapon /dev/sda4 # 关闭swap分区; $ swapoff /dev/sda4 # 查看swap on分区; $ swapon -s |
loopback:回环设备使用软件来模拟硬件,当我们内存不够使用而又没有多余的分区能够给做swap时;我们可以使用Loopback创建一个镜像文件当做硬盘来使用并可以挂在分区格式化都可以,创建的这个Loopback设备就需要使用到dd命令。
命令格式
1 2 |
# 按照大小复制数据; $ dd if=/source of=/dest bs=512 count=1 |
if:复制源。
of:复制的存储目的地。
bs:复制数据的大小。
count:在这个大小的基础上复制多少份。
dd跟cp一样都可以复制文件,但是其两者复制文件的方式大有不同。cp是按照文件为单位进行复制在文件系统级别,而dd是直接在物理磁盘上复制数据存储在扇区上的01代码。如:
1 2 3 4 5 6 7 8 |
# 可以备份MBR; $ dd if=/dev/sda of=/mnt/mbr.backupbs=512 count=1 # 恢复MBR; $ dd if=/mnt/mbr.backup of=/dev/sdabs=512 count=1 # 创建一个1G的文件里面填满0; $ dd if=/dev/zero of=/tmp/swap bs=1M count=1024 |
用dd创建一个swap分区
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# 创建一个1G的文件里面填满0; $ dd if=/dev/zero of=/tmp/swap bs=1M count=1024 # 格式化swap分区; $ mkswap /tmp/swap # 开启swap分区; $ swapon /tmp/swap # 查看swap分区; $ swapon -s Filename Type Size Used Priority /tmp/swap file 5218300 0 -1 |
结束.