[Linux]设置swap分区以及相关问题解决方法总结

一、虚拟内存swap(交换空间)简介

        物理内存读写数据比硬盘读写数据要快许多,由于内存是有限的,所以就引出了物理内存和虚拟内存。物理内存是系统硬件提供的内存,是真正的内存;虚拟内存是为了满足物理内存不足时而提出的策略,他是利用磁盘空间虚拟出的逻辑内存,用作虚拟内存的磁盘空间被称为交换空间(swap space)。

        作为物理内存的扩展,linux会在物理内存不足时使用交换空间,内核会将暂时不用的内存块信息写到交换空间,这样物理内存就得到了释放,当需要用到原始信息时会重新从交换空间读入到物理内存中。

        交换空间通常是一个磁盘分区,但是也可以是一个文件。如果物理内存不足以支撑使用全部进程的话,使用swap也许会对有帮助,这样可以避免OOM,Linux内核OOM Killer机制将尝试通过杀进程的方式来自动释放内存。如果想让虚拟内存足够使用,可以开辟相应的磁盘空间作为交换空间,而启用交换的最大缺点是性能降低。所以,选择杀死进程还是启用交换(存在降低性能风险)需要根据实际情况来选择。

二、创建swap分区

1.查看swap分区

根据 free 命令查看swap是否有创建

2. 使用dd命令创建一个swap分区

dd if=/dev/zero of=/home/swap bs=1M count=2048

参数含义
ifif=文件名:输入文件名,默认为标准输入。即指定源文件
ofof=文件名:输出文件名,默认为标准输出。即指定目的文件
bs同时设置读入/输出的块大小为bytes个字节
count仅拷贝blocks个块,块大小等于ibs指定的字节数

详细可参考 Linux dd 命令 | 菜鸟教程

3. 格式化分区文件

mkswap /home/swap

 4. swapon命令激活swap

 swapon /home/swap

 5. swapoff命令关闭swap

 swapoff /home/swap

6. 保存设置使其永久生效

进入/etc/fstab 添加下面这一行设置

/home/swap swap swap default 0 0

 fstab文件可用于定义磁盘分区,各种其他块设备或远程文件系统应如何装入文件系统。 当系统启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。

7. 查看设置是否成功

free -h

注: 系统中交换分区的大小并不直接取决于物理内存的大小,而是取决于系统中内存的负荷,需要根据具体的业务来设置具体的swap值。

三、设置swap分区相关问题

1.swap 重启后失效

在文件/etc/rc.local中增加开启swap的命令:

vi /etc/rc.local

增加下面内容:

swapon /data/swapfile

2.调整vm.swappiness的方法

        内核参数vm.swappiness控制换出运行时内存的相对权重,swappiness参数值可设置范围在0到100之间,参数取值对如何使用swap分区有很大联系。 此参数值越低,就会让Linux系统尽可能的少用swap分区,多用内存;参数值越高,则使内核更多的去使用swap空间。默认值swappiness=60,表示内存使用率超过100-60=40%时开始使用交换分区。swappiness=0的时候表示最大限度使用物理内存;swappiness=100时表示最大限度的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。具体取值可根据实际情况而定。

① 查看参数值:

cat /proc/sys/vm/swappiness

② 临时调整:

sysctl vm.swappiness = 30 

③ 永久调整:

vi /etc/sysctl.conf 
修改值:vm.swappiness=30

加载参数:sysctl -p

3.释放虚拟内存命令

        释放内存的时候,首先执行命令sync将所有正在内存中的缓冲区写到磁盘中,其中包括已经修改的文件inode、已延迟的块I/O以及读写映射文件,从而确保文件系统的完整性。

# sync命令可以多执行几遍

echo N > /proc/sys/vm/drop_caches

drop_caches的值(N)可以是0-3之间的数字,代表不同的含义:

0:不释放(系统默认值);默认情况下表示不释放内存,由操作系统自动管理;

1:释放页缓存;

2:释放dentries和inodes;

3:释放所有缓存。

物理内存和虚拟内存swap(交换空间)详解https://www.cnblogs.com/zhongwang/p/15994506.html

 

 

  • 6
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 要扩展Linuxswap分区,可以按照以下步骤进行操作: 1. 确认当前系统中swap分区的情况,可以使用命令“swapon -s”查看。 2. 确认需要扩展的磁盘空间,可以使用命令“df -h”查看。 3. 关闭swap分区,可以使用命令“swapoff -a”关闭所有swap分区。 4. 使用fdisk或者parted等工具对需要扩展的磁盘进行分区。 5. 格式化新的swap分区,可以使用命令“mkswap /dev/sdX”(其中sdX为新分区的设备名)。 6. 启用新的swap分区,可以使用命令“swapon /dev/sdX”(其中sdX为新分区的设备名)。 7. 确认新的swap分区已经启用,可以使用命令“swapon -s”查看。 8. 修改/etc/fstab文件,将新的swap分区添加到开机自动挂载列表中,以便系统重启后自动启用新的swap分区。 以上就是扩展Linuxswap分区的步骤。需要注意的是,在进行分区操作时一定要小心,避免误操作导致数据丢失。 ### 回答2: Linux是一种成熟的操作系统,拥有广泛的用途,比如Web服务器,移动设备开发,桌面电脑等。但是,在Linux服务器运行时,会占用某些内存资源。当这些内存资源用尽时,您的服务器将无法为用户请求提供服务。为了解决这种情况,Linux提供了swap分区的概念。 swap分区Linux系统中的一种辅助性质量。它与操作系统的内存一起工作,扩展了可用内存。swap分区可以在磁盘驱动器的另一个分区中创建。如果您发现Linux服务器不能满足RAM(随机访问存储器)的需求,可以扩展swap分区。 扩展swap分区的第一步是检查您的系统是否有空闲的硬盘空间。您可以使用fdisk命令来查看您的硬盘分区。在fdisk命令中,您应该选择要查看的磁盘,然后使用"p"选项检查分区和可用空间。 然后,您需要使用mkswap命令来创建新的swap分区。该命令需要指定新swap分区的设备文件。您可以使用命令“cat /proc/swaps”来检查当前的swap分区。命令的输出应包括新的swap分区。 接下来,您需要将新的swap分区添加到swap设备列表中。这可以通过修改“/etc/fstab”文件来实现。您需要编辑此文件并添加一个新的条目,以将新的swap分区添加到swap设备列表中。要使更改生效,您需要重新启动服务器。 总之,扩展Linux服务器的swap分区可以增加系统可用的内存。但是,使用swap分区的效率低于使用RAM,因此您应该尽量减少使用swap。在扩展swap分区之前,应注意服务器硬盘上是否有足够的空间,并且仔细核对配置文件的更改,以避免错误和意外的系统崩溃。 ### 回答3: Linux系统中的swap分区是一种虚拟内存,它作为扩展内存使用。当系统的物理内存不足以支持运行的所有应用程序时,系统会将不常用的内存页交换到swap分区中,从而释放出物理内存并使更多的应用程序能运行。 在Linux中,swap分区可以在安装系统时预先分配,也可以后期进行扩展。当系统开始运行时,可以使用命令“free -h”查看swap分区的使用情况和大小。 要扩展swap分区,需要遵循以下步骤: 1、使用“sudo swapoff -a”命令关闭所有的swap分区,以便进行扩展。 2、使用“sudo fdisk /dev/sda”命令(假设第一块硬盘为/dev/sda)打开硬盘分区工具,进入分区编辑模式。 3、对需要扩展的分区进行编辑操作,并将其扩展到所需的大小。 4、使用“sudo mkswap /dev/sda3”命令(假设分区名为/dev/sda3)将分区格式化为swap分区。 5、使用“sudo swapon /dev/sda3”命令重新启用swap分区。 6、使用“sudo swapon -s”命令检查新的swap分区是否已经启用。 以上就是扩展linux swap分区的步骤,务必要小心操作,以免误操作导致不必要的损失。同时还要注意,过多使用swap分区可能会影响系统的性能,因此应该根据实际需要进行操作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值