交换分区(swap)

本文引自https://www.cnblogs.com/tommyli/p/3745173.html、https://baike.baidu.com/item/交换分区/5188359?fr=aladdin、https://www.cnblogs.com/igym/p/7744429.html

SWAP就是LINUX下的虚拟内存分区,它的作用是在物理内存使用完之后,将磁盘空间(也就是SWAP分区)虚拟成内存来使用.它和Windows系统的交换文件作用类似,但是它是一段连续的磁盘空间,并且对用户不可见。
交换分区(swap space)是一定磁盘空间(分区或文件),用于将部分内存中的数据换下来,以腾出内存空间用于其他需求。在一个系统中,物理内存的容量是有限的,当物理内存快使用完时,操作系统会使用交换分区(如果有的话)。当系统内存使用紧张时,操作系统根据一定的算法规则,将一部分最近没使用的内存页面保存到交换分区,从而为需要内存的程序留出足够的内存空间;在SWAP中的内存页面被访问到时,系统会将其重新载入到物理内存中去运行。
swap in (换入):是指页面从交换分区转移到内存之中;
swap out (换出):是指页面从从内存转移到交换分区中。
(这里的in/out是站在内存的角度来说的,就好理解了。)
在Windows、Unix、Linux系统中都有交换分区的概念。
需要注意的是,虽然这个SWAP分区能够作为"虚拟"的内存,但它的速度比物理内存可是慢多了,因此如果需要更快的速度的话,并不能寄厚望于SWAP,最好的办法仍然是加大物理内存.SWAP分区只是临时的解决办法.
linux下的分区推荐一个交换分区,一个根分区,其中交换分区如上所说作为redhat或者其它虚机所划分的内存不够时候来使用!
交换分区(swap)的合理值一般在内存的2 倍左右,可以适当加大。实际上具体还是以实际应用为准,swap为内存的2倍也不过是一种以讹传讹的说法。如果交换分区的使用都超过4GB以上了,可想而知服务器的性能应该差很多了。
Linux中的交换分区的大小分配推荐法则
曾经,有人推荐使用物理内存1/2、1倍、2倍的容量作为SWAP分区的大小。随着计算机内容容量的增大,如果有16G内存的机器,分个16G的Swap空间,似乎感觉有点浪费磁盘空间,而且多数情况下用处也并不大。在Linux系统,我们可以参照Redhat公司为RHEL5、RHEL6推荐的SWAP空间的大小划分原则,在你没有其他特别需求时,可以作为很好的参考依据。

内存小于4GB时,推荐不少于2GB的swap空间;

内存4GB~16GB,推荐不少于4GB的swap空间;

内存16GB~64GB,推荐不少于8GB的swap空间;

内存64GB~256GB,推荐不少于16GB的swap空间。

4GB of RAM requires a minimum of 2GB of swap space
4GB to 16GB RAM requires a minimum of 4GB of swap space
16GB to 64GB of RAM requires a minimum of 8GB of swap space
64GB to 256GB of RAM requires a minimum of 16GB of swap space
Linux中查看swap的命令
可以用“cat /proc/swaps”、“swapon -s”、“free”等命令查看Swap分区的情况。
Linux下可以创建两种类型的交换空间,一种是swap分区,一种是swap文件。前者适合有空闲的分区可以使用,后者适合于没有空的硬盘分区,硬盘的空间都已经分配完毕。

例如:安装redhat的时候,你可以默认划分硬盘空间,交换区的大小事系统默认配置,当你安装完系统后需要安装一个oracle数据库,突然发出警告,交换空间不够。此刻该怎么办?
1、查看交换分区的方式
可以通过命令top,free命令查看当前的交换分区。也可以使用cat /proc/swaps查看交换分区
2、如何通过swap文件扩充交换空间的大小
例如:增加1G的交换空间
2.1、dd if=/dev/zone of=/myswap bs=2k count=524288 //划分空间
2.2、mkswap /myswap //格式成交换分区的格式
2.3、swapon /myswap //使格式的swap生效
设置后,可以通过上面的命令查看时否生效。当启动系统后需要自动加载交互分区,可以在/etc/fstab文件中增加:/myswap swap swap default 0 0
3、如何通过swap分区的方式增加交换空间
3.1、如果希望添加一个交换分区(这里假设希望把/dev/hdb5添加为交换分区),这个硬盘不能被正在使用(也就是分区不能被加载,交换空间没有被激活)。分区表在使用时不能被修改,因为内核可能无法正确识别分区表的变化。这样数据可能会写入到错误的分区,而导致数据被覆盖而丢失,因为内核维护的分区表跟硬盘上的分区表不一致造成的。
解决这个问题最简单的办法是将系统引导进入急救(rescue)模式下进行操作。当提示扫描并加载文件系统时,选择跳过。如果硬盘上没有任何分区被使用,这样就可以卸载分区,使用swapoff命令来关闭该硬盘上所有的交换分区。
3.2、使用parted创建交换分区
以root身份运行: parted /dev/hdb
在parted命令的提示符,输入print查看当前分区表,以及空闲空间。开始和结束值的单位是MB,然后计算有多少空闲空间,以及你希望划分多少空间给交换分区。
在parted提示符后,输入mkpartfs part-tyep linux-swap start end,这里part-type是primary、extend或logical。start是分区开始点,end是分区结束点。
输入exit退出parted
3.3、现在已经创建了交换分区,使用mkswap命令设置交换分区:
mkswap /dev/hdb2
3.4、为了立刻激活swap分区,输入以下命令:
swapon /dev/hdb2
3.5、为了在启动时激活它,在/etc/fstab中添加如下内容:
/dev/hdb2 swap swap defaults 0 0
下次启动时,系统会自动激活该交换分区。
3.6、添加了新分区,并激活它以后,可以通过cat /proc/swaps或者free来查看该交换分区是否已经工作。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值