是swapon命令出問題了嗎?

    我們在平時工作中,偶爾會遇到需要擴大swap分區的情況,基本的命令mkswap和swapon大家肯定都非常熟練了,這裏不是要講這些命令的使用,而是要說在通過dd生成塊設備後將這個生成的塊設備做成swap交換分區時會遇到的坑,一個讓你有點懵逼的坑:

    作者在實際使用中的步驟如下:   

第一步通過dd生成塊設備: 

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

100+0 records in

100+0 records out

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

第二步製作swap:

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

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

        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

腳本寫好後,測試沒有問題可以放到定時任務裏面,定時檢查下

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章