2011年(33)
分类: LINUX
2011-06-10 23:40:46
假设你已经分好LINUX分区,所有的配置都像你想要的那样,直到当你运行一些很耗费内存的程序(比如说openoffice,多个浏览页)的时候,你就会意识到你在安装系统的时候应该给SWAP分区更大的空间。这时候该怎么办呢,重装系统?这里有一种在已存在的分区上增加你的SWAP空间的一种方法。
通常有不止一种方法来管理你的LINUX系统,除了创建SWAP文件,你还可以使用parted或者他的图形工具QtParted来调整你的分区,但是,相对于增加一个文件来说,调整分区大小是一个更危险的操作。
开始前,先使用swapon -s查看你的系统SWAP分区有多少空间。
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/dev/sda3 partition 2096472 0 -1
从中可以这个系统有2G SWAP分区,已用0。使用df -m查看系统分区情况,以确定我们的SWAP文件存放位置。
[root@localhost ~]# df -m
Filesystem 1M-blocks Used Available Use% Mounted on
/dev/sda2 3868 3630 39 99% /
/dev/sda5 13936 164 13053 2% /home
/dev/sda1 46 11 33 25% /boot
tmpfs 506 0 506 0% /dev/shm
/dev/sdb 10080 1669 7900 18% /opt
从中可以看出/opt有还有8G可用空间。现在我们增加一个512M的SWAP文件,你的需要可能或多或少,它与我们需要SWAP分区的大小、现有可用SWAP分区的大小、磁盘的剩余空间大小等有关,一般SWAP分区的大小是我们物理内存大小的2倍。如果你的系统有比/opt更大的分区,你大可以将SWAP文件建到那些分区中。
我们知道在LINUX中所有的设备(如/dev/sda1)都是一种特殊的文件。我们所要做的就是为SWAP文件创建一个新的文件,然后告诉LINUX系统当内存不够用时将使用我们的SWAP文件。
一个小提示:在继续前,请备份你的重要数据。尽管你已经非常仔细的检查过下面的操作都没有问题,但是这往往是一个更加安全的操作。
我们使用dd命令来创建我们所需要的文件,这个操作需要root权限(以下操作同样需要root权限)。
[root@localhost ~]# dd if=/dev/zero of=/opt/extraswap bs=1M count=512
512+0 records in
512+0 records out
536870912 bytes (537 MB) copied, 54.0151 seconds, 9.9 MB/s
512表示我们文件的大小;bs为以M为单位;if和of表示将if文件里面的信息写入到of文件中(infile和outfile的缩写);/opt/extraswap为我们创建的SWAP文件,位置你可以按照你的系统来设置。
现在我们在磁盘上有了我们所需要的文件,我们需要设置它作为一个SWAP分区来使用,使用mkswap来完成这个操作。
[root@localhost ~]# mkswap /opt/extraswap
Setting up swapspace version 1, size = 536866 kB
为了使SWAP文件起作用,我们还必须使用swapon /opt/extraswap来将我们的SWAP文件起作用。
[root@localhost ~]# swapon /opt/extraswap
这时,我们再使用swap -s来查看就会发现我们新加的swap文件
Filename Type Size Used Priority
/dev/sda3 partition 2096472 0 -1
/opt/extraswap file 524280 0 -2
但是,我们还是没有彻底的完成,当我们重启机器的时候,我们新的SWAP文件还是不会起作用,还需要我们运行swapon /opt/extraswap来使我们的SWAP文件起作用。
为了使设置永久生效,我们需要编辑/etc/fstab文件。
首先,将文件备份。
[root@localhost ~]# cp /etc/fstab /etc/fstab.back
编辑文件/etc/fstab,找到
LABEL=SWAP-sda3 swap swap defaults 0 0
在下面加入一行
/opt/extraswap swap swap defaults 0 0
保存后,使用diff对比修改前后的文件
[root@localhost ~]# diff /etc/fstab /etc/fstab.back
9d8
< /opt/extraswap swap swap defaults 0 0
这会显示出你修改的部分,如果你修改的部分除了这里还有其他地方,请将它更正过来,否则你的系统可能会因此而损害,无法启动。
好了,现在我们已经多了一个SWAP文件可以使用了。
补充:在使用已建立的SWAP文件的时候LINUX内核工作会比只使用现有的SWAP分区要耗费资源。这是因为为了使用SWAP文件,在文件系统从SWAP文件自身得到它所需要的信息前Linux内核必须要先告诉它SWAP文件已经起作用。当直接使用SWAP分区的时候,内核不必进行这个额外的步骤。
原文档: