是swapon命令出问题了吗?

    咱们在平时工做中,偶尔会遇到须要扩大swap分区的状况,基本的命令mkswap和swapon你们确定都很是熟练了,这里不是要讲这些命令的使用,而是要说在经过dd生成块设备后将这个生成的块设备作成swap交换分区时会遇到的坑,一个让你有点懵逼的坑:bash

    做者在实际使用中的步骤以下:   ide

第一步经过dd生成块设备: 测试

[root@oldboyedu-39 ~]# dd if=/dev/zero of=/dev/swap bs=1M count=100spa

100+0 records in3d

100+0 records outit

104857600 bytes (105 MB) copied, 0.207787 s, 505 MB/sio

第二步制做swap:class

[root@oldboyedu-39 ~]# mkswap /dev/swapawk

mkswap: /dev/swap: warning: don't erase bootbits sectorssed

        on whole disk. Use -f to force.

Setting up swapspace version 1, size = 102396 KiB

no label, UUID=40d402b8-b379-4d6a-bb46-44a930bd27d7

第三步增长swap:

[root@oldboyedu-39 ~]# swapon /dev/swap

swapon: /dev/swap: swapon failed: Invalid argument

为何不行了呢,还提示无效的参数?!是命令不对?其实不是的,是由于这个块设备的存放路径不对,不能存放在/dev下。

若是放在其余目录呢?

做者又测试了下:

[root@oldboyedu-39 ~]# dd if=/dev/zeroof=/home/oldboy/100M bs=100M count=1

1+0 records in

1+0 records out

104857600 bytes (105 MB) copied, 2.57431 s, 40.7MB/s

[root@oldboyedu-39 ~]# mkswap /home/oldboy/100M

mkswap: /home/oldboy/100M: warning: don't erasebootbits sectors

        onwhole disk. Use -f to force.

Setting up swapspace version 1, size = 102396 KiB

no label, UUID=850e6e62-0198-4516-a899-32bd042a3dcb

[root@oldboyedu-39 ~]# swapon /home/oldboy/100M

最后经过swapon -s查看下:

[root@oldboyedu-39 ~]# swapon -s

Filename                Type        Size    Used    Priority

/dev/sda2                               partition   786428  0   -1

/home/oldboy/100M                       file        102396  0   -2

能够了!

总结:Linux对于初学者来讲真实坑无处不在啊,同窗共勉!

补充一个脚本判断swap分区若是小于500M就自动将磁盘的空间划100M给swap:

#!/bin/bash

size=$(free -h|awk -F "[ A-Z]+" 'NR==4{print $(NF-1)}')

Time=$(date +%S)

if [ $size -le 500 ]; then

dd if=/dev/zero of=/tmp/100_$Time bs=1M count=100 >/dev/null 2>&1 &&\

mkswap /tmp/100_$Time >/dev/null 2>&1 &&\

swapon /tmp/100_$Time >/dev/null 2>&1 &&\

#echo swap is on

#else echo "swap size is ${size}M"

fi

脚本写好后,测试没有问题能够放到定时任务里面,定时检查下

相关文章
相关标签/搜索