网上说有可能是因为swap分区空间不够导致的问题。然后看了一下swap空间的大小。居然大小是0M。
查看的命令是free -m。
难道真的是swap分区导致的问题?不管了,先添加个swap分区再说吧。
1.创建一个swap文件。
count代表的是大小,我这里是2G。
2.把文件转换为swap文件
3.激活swap文件
这里可以直接用命令挂载上一个swap分区,但是重启后要重新挂载:
4、如果需要开机启动后自动挂载的话,可以把它添加到/etc/fstab文件中。
开机自动挂载SWAP分区,
在文件中增加:
4.这样就已经完成增加swap分区了。可以用free -m来参看结果。
1、使用分区:在安装OS时划分出专门的交换分区,空间大小要事先规划好,启动系统时自动进行mount。这种方法只能在安装OS时设定,一旦设定好不容易改变,除非重装系统。2、使用swapfile:(或者是整个空闲分区)新建临时swapfile或者是空闲分区,在需要时设定为交换空间,最多可以增加8个swapfile。交换空间的大小,与CPU密切相关,在i386系中,最多可以使用2GB的空间。在系统启动后根据需要在2G的总容量下进行增减。这种方法比较灵活,也比较方便,缺点是启动系统后需要手工设置。以下是运用swapfile增加交换空间的步骤:涉及到的命令: free ---查看内存状态命令,可以显示memory,swap,buffer cache等的大小及使用状况;dd ---读取,转换并输出数据命令;mkswap ---设置交换区swapon ---启用交换区,相当于mountswapoff ---关闭交换区,相当于umount步骤:1、创建swapfile:root权限下,创建swapfile,假设当前目录为"/",执行如下命令:# dd if=/dev/zero of=swapfile bs=1024 count=500000则在根目录下创建了一个swapfile,名称为“swapfile”,大小为500M,也可以把文件输出到自己想要的任何目录中,个人觉得还是直接放在根目录下比较好,一目了然,不容易误破坏,放在其他目录下则不然了;命令中选项解释: ---of:输出的交换文件的路径及名称;---bs:块大小,单位byte,一般为1k即1024个byte;---count:总块数即空间总大小,单位为块即k;---if:读取的源空闲空间,为什么是zero,不清楚,先固定这么写吧;2、将swapfile设置为swap空间# mkswap swapfile3、启用交换空间,这个 *** 作有点类似于mount *** 作(个人理解):# swapon swapfile至此增加交换空间的 *** 作结束了,可以使用free命令查看swap空间大小是否发生变化;4、如果不再使用空间可以选择关闭交换空间,这个 *** 作有点类似于umount *** 作(个人理解)::# swapoff swapfile使用这种方法在每次系统启动时都需要手动设置、开启swapfile,比较麻烦,解决方法:在 /etc/rc.d/rc.local 文件的末行下追加加以下内容:(编辑这个文件当然是用vi了~)/sbin/swapon /swapfile保存后退出,这样在系统启动后,swap空间就会自动加载了;总结:在安装OS时一定要规划后swap大小,通常为内存的2倍,但是要考虑到以后增加内存的可能,所以可以考虑设的稍大一些,想在虚拟机里面安装oracle10g,发现默认的swap交换空间不满足最低要求,因为我分配的物理内存是1G,那么就按照要求需要2G的swap交换空间,默认只有1G的交换空间。添加swap交换空间的步骤如下:第一步:确保系统中有足够的空间来用做swap交换空间,我使用的是KVM,准备在一个独立的文件系统中添加一个swap交换文件,在/opt/image中添加2G的swap交换文件第二步:添加交换文件并设置其大小为2G,使用如下命令 [root@sense image]# dd if=/dev/zero of=/opt/image/swap bs=1024 count=2048000过段时间就返回如下结果:2048000+0 records in2048000+0 records out2097152000 bytes (2.1 GB) copied, 272.867 seconds, 7.7 MB/s第三步:创建(设置)交换空间,使用命令mkswap [root@sense image]# mkswap /opt/image/swapSetting up swapspace version 1, size = 2097147 kB第四步:检查现有的交换空间大小,使用命令free [root@sense image]# free -m total used free sharedbuffers cachedMem: 1011989 21 0 1875-/+ buffers/cache:112898Swap: 1027 0 1027或者检查meminfo文件grep SwapTotal /proc/meminfo第五步:启动新增加的2G的交换空间,使用命令swapon [root@sense image]# swapon /opt/image/swap第六步:确认新增加的2G交换空间已经生效,使用命令free [[root@sense image]# free -m total used free sharedbuffers cachedMem: 1011995 15 0 4877-/+ buffers/cache:113897Swap: 3027 0 3027或者检查meminfo文件grep SwapTotal /proc/meminfo第七步:修改/etc/fstab文件,使得新加的2G交换空间在系统重新启动后自动生效在文件最后加入: /opt/image/swap swap swap defaults 0 0我的 *** 作 [root@weblogic Server]# free total used free sharedbuffers cachedMem: 17858561753452 32404 0 385921036312-/+ buffers/cache: 6785481107308Swap: 20643761162064260 创建交换空间文件,1000M [root@weblogic /]# dd if=/dev/zero of=/swapfile bs=1024 count=10000001000000+0 records in1000000+0 records out1024000000 bytes (1.0 GB) copied, 28.5423 seconds, 35.9 MB/s [root@weblogic /]# mkswap swapfileSetting up swapspace version 1, size = 1023995 kB [root@weblogic /]# swapon swapfile 打开 [root@weblogic /]#swapoff swapfile 关闭 删除swapoff swapfilerm -rf swapfileSwap交换大小应该是多少?交换应该是RAM大小的两倍还是RAM大小的一半?如果我的系统有几GB的RAM,我是否需要交换?
也许这些是关于在安装Linux时选择交换大小的最常见问题。
这不是什么新鲜事。交换大小一直存在很多混乱。
很长一段时间,推荐的交换大小是RAM大小的两倍,但这条黄金法则不再适用于现代计算机。
我们的系统RAM大小高达128 GB,许多旧计算机甚至没有这么多的硬盘。但是你会分配到具有32 GB RAM的系统的交换大小? 64GB?那将是一个荒谬的硬盘浪费,不是吗?
在了解需要分配Swap空间应该分配多大之前,让我们先快速了解交换内存的一两件事。
这些有助于让每个人真正理解为什么Linux需要Swap交换空间。
我们都知道计算机系统在运行的时候会使用到RAM(Random Access Memory),当只有少数应用程序在运行时,系统会使用可用的RAM进行管理。
但是如果有很多很多的程序在运行,那么就需要非常大容量RAM,这时候计算机RAM不够,应用程序就会崩溃。
当RAM耗尽时,Swap交换空间会被系统使用。当RAM耗尽时,Linux系统使用部分硬盘内存并将其分配给正在运行的应用程序。
这听起来非常不错,这意味着如果我们如果分配50GBSwap交换空间,系统或许可以同时运行成百上千的应用程序?是这样么?大错特错!!!
你知道的,程序运行速度十分重要;
RAM访问数据的大小为纳秒级;
SSD访问数据(以微秒为单位),而普通硬盘以毫秒为单位访问数据;
这意味着RAM比SSD快1000倍,比普通HDD快100,000倍。
如果应用程序过分依赖Swap交换空间,则其性能将下降,因为它无法以与RAM中相同的速度访问数据。
因此,完成相同任务可能需要几分钟才能完成任务,而不需要花费1秒钟完成任务。这将使应用程序几乎无用。这被称为计算术语中的颠簸。
Swap交换空间只是用来应急的,所以它的分配要适量。
以下是需要交换空间Swap的几个原因
如果你的RAM有32GB或者64GB,你的系统可能永远都不会使用到这么多的交换分区。
我猜测,如果你的系统有32GB的RAM,它或许至少有100GB的硬盘。
分配几GB的交换空间应该也无关痛痒,如果错误的程序开始滥用RAM,它将提供额外的“稳定性”。
现在回到这个最大的问题上,应该给Linux分配多少Swap空间才够。
答案是没有一个确切的答案,不过倒是有一些建议,不同的人根据自己的实际情况分配交换空间的大小。
如果根据Red Hat的建议,他们建议是分配RAM 20%的换空间,也就是RAM是8GB,分配1.6GB交换空间。
CentOS建议
Ubuntu考虑到系统需要休眠,
Ubuntu建议的Swap分配表
事实上没有一个真正确定的Swap交换空间分配大小,根据实际情况来吧,如果你不在乎多点交换空间,可以使用两倍于RAM的这种方案。
你更倾向于使用哪种方案呢?
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)