Linux 上扩展swap分区
想像一种情景,当我们的Linux系统用尽交换空间时,在这种情况下,我们想要使用swap分区扩展交换空间,但在某些情况下磁盘上已经没有可用的空闲分区了,致使我们不能把它扩大。因此,在这种情况下,我们可以使用交换文件增加swap空间。
以下是使用交换文件在Linux上扩展swap空间的方法
让我们首先检查现有的交换空间/分区的大小,使用命令 free -m或者swapon -s
[root@node ~]# free -m
total used free shared buffers cached
Mem: 62 30 32 0 0 19
-/+ buffers/cache: 9 52
Swap: 0 0 0
[root@node ~]# swapo
swapoff swapon
[root@node ~]# swapon -s
[root@node ~]#
可见系统没有给swap分区分配空间,下面给swap分16G空间
1、使用下面的dd命令创建大小为16GB交换文件
根据你的需要替换 bs 和 count的大小.
[root@node ~]# mkdir -pv /opt/swap
[root@node ~]# dd if=/dev/zero of=/opt/swap/swap_file bs=1G count=16
16+0 records in
16+0 records out
17179869184 bytes (17 GB) copied, 190.655 s, 90.1 MB/s
[root@node ~]#
2、设置交换文件权限为600
[root@node ~]# chmod 600 /opt/swap/swap_file
[root@node ~]# ll /opt/swap/swap_file
-rw------- 1 root root 17179869184 Jun 12 15:17 /opt/swap/swap_file
3、用文件开启交换区(swap_file)
用mkswap命令开启交换区
[root@node ~]# mkswap /opt/swap/swap_file
Setting up swapspace version 1, size = 16777212 KiB
no label, UUID=0cdaa69b-ba1f-42fc-b36b-a4f84442a432
[root@node ~]#
4、在fstab文件中添加交换文件条目,以便交换文件每次重启后能继续使用.
[root@node ~]# vim /etc/fstab
......
UUID=54c21588-07e4-4a72-a056-37b8dee5042e /data ext4 defaults 0 0
/opt/swap/swap_file swap swap defaults 0 0 # 添加
或:
[root@node ~]# echo -e '/opt/swap/swap_file swap swap defaults 0 0' >> /etc/fstab
5、用命令 ‘swapon’ 启用交换文件.
[root@node ~]# swapon /opt/swap/swap_file
[root@node ~]# free -g
total used free shared buffers cached
Mem: 62 30 32 0 0 19
-/+ buffers/cache: 9 52
Swap: 15 0 15
[root@node ~]#
6、现在查看交换空间
Note: 为了避免出现意外的情况,如下所示使用swapoff命令关闭它,仅在需要使用时,使用步骤5所示的swapon命令,重新启用交换文件。
[root@node ~]# swapoff /opt/swap/swap_file
7、查看哪个进程占用的SWAP分区比较多
在日常管理中,我们经常会遇到swap分区使用比较多,那么导致是那些进程使用的呢,其实我们可以通过/proc/pid/下的smaps来获得。使用下面的命令可以列出所有进程占用的swap分区的大小,分别我们分析问题。
[root@WS1 ~]# for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head
awk: 命令行:1: 致命错误: 无法以读模式打开文件“/proc/27812/smaps”(没有那个文件或目录)
awk: 命令行:1: 致命错误: 无法以读模式打开文件“/proc/27857/smaps”(没有那个文件或目录)
6822 1584.07M
7616 1464.85M
7897 1124.65M
47363 1007.78M
47183 435.219M
43071 348.898M
50449 187.637M
17921 184.254M
64400 173.859M
69824 153.598M
[root@WS1 ~]#
备注:$i为进程号
获取到占用Swap分区比较多的PID,然后就可以通过PID获取到进程的相关信息了。
pwdx $PID
转载于:https://blog.51cto.com/moerjinrong/2128514