根据Redhat公司的建议,Linux系统swap分区最适合的大小是物理内存的1-2倍.不过Linux上有些软件对swap分区得需求较大,例如要顺利执行Oracle数据库软件,swap分区至少需要400MB或者物理内存2倍以上的空间.当然我们在安装Linux的时候,就能直接讲swap分区设置到足够的大小,但如果已经安装好Linux了,之后又想再安装类似Oracle的软件,却发现swap分区空间不够,该如何处理?
解决方案
以下操作均在CentOS6.5下运行
针对这种情况,有两种解决方案:一是创建新的分区;另一个则是创建Swap文件。由于租用服务器的硬盘有限(都是用钱买的),所以这里主要对创建Swap文件做说明。
创建Swap文件
如果你的硬盘空间已经全部分配给其他分区,也没有多余的预算新添购硬盘,我们可以利用Swap文件的方式增加虚拟的Swap控件,不过执行性能会较实际的Swap分区差。
1.产生Swap文件
要创建Swap文件,执行dd命令,新增一个1G的Swap文件:
dd if=/dev/xvda1 of=/tmp/myswap bs=32k count=32768
其中:bs=32k指定每个扇区占用32Kb,读入了32768个区段,输出了32768个区段
注意:bs参数的目的在于指定每次读取及输入多少bytes;由于磁盘存取的最小单位为扇区,因此设置bs也等于设置每个扇区的大小;而count得目的则在指定可以使用多少个扇区。因此,可以使用的硬盘空间就等于bs*count
。以上例子为例,可以使用的硬盘空间等于32*32768=1048576Kb
,亦等于1Gb。
执行上述命令后,会在/tmp目录中创建一个1Gb的myswap文件。
2.格式化swap文件
接下来执行mkswap命令,将myswap文件格式化成s文件系统,系统才能使用,切换到 /tmp 目录,并执行以下命令:
mkswap /tmp/myswap
3.启动swap分区
swapon /tmp/myswap
要停止使用新创建的swap文件,只要执行swapoff /tmp/myswap
命令即可。
free -m #查看swap分区
4.开机时自动启动新添加的swap分区
如果每次开机都要执行swapon命令启动swap分区或者文件,这样太麻烦了。这是可以利用文字编辑器在/etc/fstab 文件中追加一行,让开机时自动启动swap文件或分区;
/dev/hdb5 swap swap defaults 0 0 #开机时启动此swap分区
/tmp/myswap swap swap defaults 0 0 #开机时启动此swap文件
总结
我使用的阿里云主机,默认是没有swap分区的,导致在升级gcc时,升级失败,经过一番查找,发现是没有swap分区导致,所以使用了该方法创建了一个swap文件,还不错,gcc升级成功。
[…] 参考:Linux手动添加Swap空间 […]