以前有一种说法是 swap 分区比 swap 文件在速度上要快一些,但是在 linux 内核 2.6.x 及以后版本,这两种方法在性能和速度上其实很接近了,特别是 swap 文件是连续存放在硬盘里的情况下。而且 swap 文件比 swap 分区更灵活,可以放在硬盘的任何目录下,并且随时调整大小。基于这两种不同方式各自的优缺点,你可以根据实际情况选择使用哪种方式。
1、可以使用 swap -s 命令查看 swap 设置的情况。
daweibro@aliyun:~$ swapon -s
Filename TypeSizeUsedPriority
/var/swap file20971480-1
上面是大伟哥阿里云 ECS 的情况,说明 swap 是文件的形式,大小是 2 GB 左右,文件位于/var/目录下面。
daweibro@Workstation:~$ swapon -s
FilenameTypeSizeUsedPriority
/dev/dm-2 partition 39997400-1
上面是大伟哥工作用电脑的情况,这里 swap 是独立分区的形式,大小 4GB 左右。
2、使用 top 或者 free -m 命令可以查看当前内存和 swap 具体的使用情况。这里我们以 free -m 为例:
daweibro@aliyun:~$ free -m
total used free sharedbuffers cached
Mem: 992875116 65101370
-/+ buffers/cache:404588
Swap: 2047 0 2047
以上 Mem 部分第一二行是物理内存的使用情况 ,较后一行就是 swap 的使用情况了。完全没用到,说明目前阿里云的 ECS 很悠闲,一点也不累。
daweibro@Workstation:~$ free -m
totalusedfree shared buff/cache available
Mem: 19954 107616701 41624928327
Swap: 3905 03905
工作用的电脑也还行,内存占用率更低,交换分区也没用上。
3、创建 swap 分区或者 swap 文件。
创建 swap 分区要用到分区工具比如 fdisk 或者 parted,这里大伟哥就不讲了,只是提醒一下,磁盘 *** 作需要小心谨慎,万一丢失数据就不好了。
要创建 swap 文件,可以用 dd 命令,下面的例子就是在/根目录下创建一个 2048 GB 大小的文件,名称是 swapfile:
dd if=/dev/zero of=/swapfile bs=1M count=2048
给予合适的权限:
chmod 600 /swapfile
4、建立 swap 的文件系统:
mkswap /swapfile
如果你创建的是 swap 分区/dev/sdb,则需要用同样的命令对 swap 分区进行格式化:
mkswap /dev/sdb
5、建立 swap 的文件系统:
swapon /swapfile
或者:或神
swapon /dev/sdb
6、编辑/etc/fstab 文件,在文件末尾根据情况加入下面这两行中的一行,然后保存退出,再重启系统运行 swapon -s 或嫌团喊者 top/free 命令应该就能看到新添加的 swap 交换区了。
/swapfile none swap defaults 0 0
或者:
/dev/sdb none swap defaults 0 0
7、如果你做了一个艰难的决定,要和之前的 swap 交换区说再见,只要反方向 *** 作就可以了。首先 swapoff,然后删除 swap 文件或分区:
# swapoff -a
# rm -f /swapfile
较后把之前加入/etc/fstab 文件的行删除就好了。
三、如何使用 swappiness 参数设置用好 SWAP?
论坛上的朋友因为担心 swap 的使用会拖慢系统,所以才发贴寻求删除 swap 交换分区的方法,其实不用过分担心这一点,因为 linux 肯定不会那么傻,放着大量空闲的物理内存不用而去使用慢得多的 swap。就如大伟哥前面的例子,不管是 1 GB 内存的阿里云 ECS 服务器,还是 20 GB 内存的工作站,在物流内存还有富余的情况下,linux 默认是用不到 swap 分区的。如果到了大量使用 swap 分区的时候,那物理内存肯定是不够用了,这时候没有 swap 分区反而性能下降会更明显。所以没有太大的必要去删除 swap 分区。
“swap file”的意思是:n. [计] 交换文件。
1、相关短语:
swap the file names 交换的文件名
Permanent Swap File 永久交换档 永久交换文件 永久调换档 固定交换文件
application swap file 应用程序交换文件 应用程序交换文件英语
Swap File Size Sensor 交换文件大小传感器
Swap File Utilization Sensor 交换文件使用传感器
2、例句:A 2 GB RAM machine with no swap file performs almost every Eclipse operation faster.
在添加swap分区之前我们可以了解下当前系统swap是否存在以及使用情况,可用:
了解硬盘使用情况(一般/dev/vda1为挂载硬盘):
使用dd命令创建名为液仿swapfile 的swap交换文件(文件名和目录任意):
或
执行完毕,对交换文件格式化并转换为swap分区:
挂载并激活分区:
执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略肆埋祥提示,也可以听裂搏从系统的建议修改下权限:
这时候可以用 free –h 或 swapon –s命令查看新swap分区是否正常添加并激活使用。
修改 fstab 配置,设置开机自动挂载该分区:
在fstab文件末尾追加如下内容后:wq!保存即可:
/var/swapfile swap swap defaults 0 0
或直接对fstab进行echo追加:
先停止正在使用swap分区:
删除swap分区文件
删除或注释掉我们之前在fstab文件里追加的开机自动挂载配置内容:
/var/swapfile swap swap defaults 0 0
修改swappiness值,这里以50为例。
若希望vm.swappiness=50永久生效,则需要修改sysctl配置文件,直接echo追加配置内容,重启系统后即可生效:
dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152
mkswap /var/swapfile1
swapon /var/swapfile1
原文:https://cloud.tencent.com/developer/article/1563155?from=information.detail.%E4%BA%91%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%8A%A0%E8%99%9A%E6%8B%9F%E5%86%85%E5%AD%98
命令有改动
使用腾讯 云服务器 也有一段时间了,不过由于对Linux知识了解的比较少,加上服务器稳定性一直都比较好的,所以便很少去折腾服务器。直到最近,站点时常打不开,查了很久的原因,才发现是内存不够导致的 ~
用命令free查看内存使用情况,发现swap分区大小为0,原来腾讯云主机默认是没有划分swap分区的。
所以由于我的服务器物理内存本身就很少,而且又没设置swap分区,运行效果可想而知,稍有点并发量、或者恶意用户探测访问等,网站就很容易卡壳了。
swap是用来做虚拟内存的。虽然swap无法代替物理内存,但不可缺少。
swap分区作用:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么 *** 作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。
建立swap的两种方法
建立分区;
创建交换文件。
运行速度:
物理内存 >swap分区 >swap文件。
当你的数据盘已经装了很多内容,不方便重新规划的话,也只好使用swap文件了。像我由于只有一块磁盘,而且磁盘铅余已经装了不少内容,所以就没有选择磁盘格式化,而是选择创建swap文件。
下面介绍创建swap文件的方法:
创建swap文件
首先,选择你swap文件要放置的位置,比如直接在根目录/ 下创建或者选择一个目录,如/opt。比如绝激谈我直接在根目录下创建,然后设置swap分区的名称为swapfile:
定义swap的大小及位置
[root@VM_0_10_centos ~]# cd / [root@VM_0_10_centos /]# dd if=/dev/zero of=/swapfile bs=1k count=2048000
上面swapfile为你创建swap文件分区并碰的名称,你可以根据需要改成你自己的名称bs 即blocksizes,每个块大小为1kcount=2048000,总大小为2G的文件。因为建立swap分区大小的标准一般为物理内存的两倍,而我的内存是1G,所以我选择swap文件大小为2G,当然,也要考虑你硬盘剩余容量的大小。我的硬盘还剩15G,所以再划分2G给swap文件绰绰有余。如果你的内存是0.5G,那么count大小可以选择1024000(1G)。
建立swap
[root@VM_0_10_centos /]# mkswap /swapfile
[root@VM_0_10_centos /]# chmod 600 /swapfile
启动swap
[root@VM_0_10_centos /]# swapon /swapfile
检查是否正确
[root@VM_0_10_centos /]# free -m total used free shared buff/cache available Mem: 1838 600 65 2 1172 1043 Swap: 1999 0 1999
或者使用swapon -s 命令查看:
[root@VM_0_10_centos /]# swapon -s 文件名 类型 大小 已用 权限 /swapfile file 2047996 0 -1
上面的Swap和/swapfile都分别能看到总容量大小,使用了多少。
设置开机时自启用swap分区 修改/etc/fstab使其启动时自动mount,这个 *** 作与swap分区法一样,在/etc/fstab中最后一行增加如下语句:
/swapfile swap swap defaults 0 0
添加方法可以用vi进行编辑,或者直接echo添加:
[root@VM_0_10_centos /]# echo "/swapfile swap swap defaults 0 0" >>/etc/fstab
注: /swapfile 路径可以修改,可以根据创建的swap文件具体路径来配置。
删除swap分区
如果不再需要swap,可以清理该分区:
[root@VM_0_10_centos/]# swapoff /swapfile
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)