当前位置: 主页 > 操作系统 > Linux > 详解Linux系统中交换分区和交换文件

详解Linux系统中交换分区和交换文件

时间:2010-1-5来源:互联网 点击:

当程序需要的内存比电脑上拥有的物理内存还要大的时候,不管是 Windows 也好,Linux 也好,解决办法就是把存不下的东西转移到硬盘上的“虚拟内存”中去,尽管硬盘的速度比内存慢上很多,但是至少容量要大上很多。

另外,操作系统也可以把一些很久不活动的程序转移到虚拟内存中去,留出更多的主内存给需要的程序和磁盘缓冲。

Linux 在安装的时候,一般需要划出一个分区作为 Linux 的“交换分区”,作为虚拟内存内容的保存分区。

swapon -s 这个命令,可以查看当前系统的虚拟内存的情况,这条命令需要 root 来运行。

Filename Type Size Used Priority
/dev/sda3 partition 1004052 0 -1

可以看到常常看到当前的交换分区为 /dev/sda3,第 2 栏的 Type 中显示为 partition,说明这是个交换分区,那么,还有其他的 Type 吗?

当然,其实 Linux 也可以像 Windows 一样,用交换文件来保存虚拟内存的内容,这样即使你忘记划出交换分区也不要紧,而且灵活性上会更大一些。下面我们看看如何创建交换文件。

交换文件和交换分区一样,大小是固定的,比如你想要一个 1G 的交换文件,那么首先要创建一个 1G 的空白文件,我们用 dd 这个工具来完成这个任务:

dd if=/dev/zero of=/swapfile bs=1024 count=1048576

1048576 就是 1G 用 KB 表示的大小,如果你想要其他大小的文件,更改这个数字即可。

上面的命令,会在根目录下创建 swapfile 这个文件,然后,我们需要将它格式化为交换文件的格式:

mkswap /swapfile

然后把挂载上去,就可以立刻应用这个交换文件了:

swapon /swapfile

你可以运行 swapon -s 查看一下:

Filename Type Size Used Priority
/dev/sda3 partition 1004052 0 -1
/swapfile file 1048486 0 -2

多出来了一项,Type 为 file,确实是我们创建的交换文件,系统已经在使用了~

如果你想开机的时候自动挂载这个交换文件,那么还要在 /etc/fstab 中加上下面这一句:

/swapfile none swap sw 0 0

这样就 OK 了~

经常有人问,虚拟内存要设多大才合适,是主内存的几点几倍性能最好云云,其实作为一般用途来讲,1~2G 就到顶了,妄想从虚拟内存上提高系统性能,是不可能的,去买内存条才是王道.但   有时候,Linux下需要临时增加交换分区的大小,如果通过分区来做,显然比较麻烦,最简单的方法就是用一个大文件来模拟分区,下面是详细步骤:
        系统当前交换分区如下:
       [dbtest@test55 ~]$ free
             total       used       free     shared    buffers     cached
            Mem:       2074840    1275356     799484          0     168264     864196
            -/+ buffers/cache:     242896    1831944
            Swap:      2096472          0    2096472

       1、创建一个8M的空文件:
       [root@test55 ~]# dd   if=/dev/zero   of=swap1   bs=1024   count=8192
        8192+0 records in
        8192+0 records out
      
       2、创建交换分区:
       [root@test55 ~]# /sbin/mkswap   swap1   8192
        Setting up swapspace version 1, size = 8384 kB

       3、打开交换分区:
       [root@test55 ~]# /sbin/swapon   swap1 

       4、查看交换分区大小,发现已经增加了8M:
       [root@test55 ~]# free
             total       used       free     shared    buffers     cached
            Mem:       2074840    1330460     744380          0     214796     872264
            -/+ buffers/cache:     243400    1831440
            Swap:      2104656          0    2104656

      5、如果要去掉这个新的交换分区,用如下命令:
       [root@test55 ~]# /sbin/swapoff   swap1 
        [root@test55 ~]# free
             total       used       free     shared    buffers     cached
            Mem:       2074840    1330524     744316          0     214812     872248
            -/+ buffers/cache:     243464    1831376
            Swap:      2096472          0    2096472

            显然,交换分区缩小了。

站长资讯网
. TAG: LINUX系统 交换分区 交换文件
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言