SWAP我称之为交换区,相当于Windows系统下的虚拟内存。他的作用就是当我们系统中的内存不够用的时候,可以通过SWAP来增加内存。我们在安装 Linux系统的时候,最基本的分区一个是根,一个是SWAP。如果我们当初把SWAP分小了的话,你需要增加他的大小,那么今天的内容就是这个内容:SWAP的创建/扩展。有两种方法供我们选择。

1、利用磁盘的剩余空间

这个前提就是你的磁盘还有剩余空间没有划分,或者是已经划分的分区不在使用。这个时候才能使用此方法。下面是此方法的实现步骤。
第一步:分区
查看磁盘的情况
[root@yufei ~]# fdisk -l /dev/sdb
此处省略N多行
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         183      409657+   b  W95 FAT32
/dev/sdb3             184        2610    19494877+   5  Extended
/dev/sdb5             184         445     2104483+  83  Linux
/dev/sdb6             446         511      530113+  82  Linux swap / Solaris
sdb6是我们前面讲分区与格式化的时候分出来的,先不理会他。为了完整的来演示,所以我们增加新的分区
[root@yufei ~]# fdisk /dev/sdb
此处有省略内容
Command (m for help): n
Command action
l   logical (5 or over)
p   primary partition (1-4)
l
First cylinder (512-2610, default 512):
Using default value 512
Last cylinder, +cylinders or +size{K,M,G} (512-2610, default 2610): +256M
Command (m for help): p
此处有省略
/dev/sdb7             512         545      273073+  83  Linux
第二步:转换分区类型
Command (m for help): t
Partition number (1-7): 7
Hex code (type L to list codes): L
此处有省略
Hex code (type L to list codes): 82
Changed system type of partition 7 to 82 (Linux swap / Solaris)
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
用[root@yufei ~]# partprobe /dev/sdb也是同样的错误。
上面的错误提示大概内容就是设备繁忙,无法识别新的分区表,什么原因呢?看下面的解决方法。
还记得我们上一篇关于自动挂载的内容吗?对了,我们的sdb上的分区已经挂载到系统中了。通过下面的命令来查看
[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6980344   7370384  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sdb1              1033560     40980    939568   5% /mnt
/dev/sdb2               409424         0    409424   0% /test
把他们两个卸载掉
[root@yufei ~]# umount /dev/sdb1
[root@yufei ~]# umount /dev/sdb2
再来
[root@yufei ~]# partprobe /dev/sdb
这时候就没有显示错误信息了
[root@yufei ~]# fdisk -l /dev/sdb
此处有省略
Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         132     1060258+  83  Linux
/dev/sdb2             133         183      409657+   b  W95 FAT32
/dev/sdb3             184        2610    19494877+   5  Extended
/dev/sdb5             184         445     2104483+  83  Linux
/dev/sdb6             446         511      530113+  82  Linux swap / Solaris
/dev/sdb7             512         545      273073+  82  Linux swap / Solaris
sdb7已经分出来了。下面进行格式化
第三步:格式化SWAP分区
SWAP的格式化与我们前面的格式化稍有不同,只是命令不同而已,SWAP用mkswap
[root@yufei ~]# mkswap /dev/sdb7
Setting up swapspace version 1, size = 273068 KiB
no label, UUID=edca6b3a-047b-4e26-9b28-21493f92e2b4
因为没有设置卷标,所以是无卷标的。
第四步:激活SWAP
在激活我们创建的SWAP前,我们先来看看系统中的SWAP大小
[root@yufei ~]# free
total       used       free     shared    buffers     cached
Mem:        511572     154664     356908          0      17408      76236
-/+ buffers/cache:      61020     450552
Swap:       524280          0     524280
这里面显示的是512M
[root@yufei ~]# swapon /dev/sdb7
激活SWAP,再显示SWAP的大小,多了256M
[root@yufei ~]# free
total       used       free     shared    buffers     cached
Mem:        511572     154928     356644          0      17444      76252
-/+ buffers/cache:      61232     450340
Swap:       797344          0     797344
第五步:写入fstab
在/etc/ fstab 最后加入如下内容
UUID=edca6b3a-047b-4e26-9b28-21493f92e2b4  swap     swap   defaults        0 0
重新启动系统看看SWAP的大小情况
[root@yufei ~]# free -m
total       used       free     shared    buffers     cached
Mem:        511572     152636     358936          0      15132      75900
-/+ buffers/cache:      61604     449968
Swap:       797344          0     797344

2、利用分区的剩余空间

既然用分区的剩余空间,当然要找个空间大的分区来进行下面的操作啊!
第一步:创建SWAP文件
[root@yufei ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/sda1             15118728   6980460   7370268  49% /
tmpfs                   255784         0    255784   0% /dev/shm
/dev/sdb1              1033560     40980    939568   5% /mnt
/dev/sdb2               409424         0    409424   0% /test
因为下面两个是sdb磁盘的,我们就不用了,直接用/分区吧。
创建一个256M的文件,名字为根目录下的swapfile
[root@yufei ~]# dd if=/dev/zero of=/swapfile bs=1M count=256
256+0 records in
256+0 records out
268435456 bytes (268 MB) copied, 9.43718 s, 28.4 MB/s
第二步:对SWAP文件进行格式化
[root@yufei ~]# mkswap /swapfile
mkswap: /swapfile: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 262140 KiB
no label, UUID=11ca575a-e810-4970-889a-a3f6d9af7dfe
第三步:激活SWAP
[root@yufei ~]# free
total       used       free     shared    buffers     cached
Mem:        511572     419940      91632          0      15492     338472
-/+ buffers/cache:      65976     445596
Swap:       797344          0     797344
[root@yufei ~]# swapon /swapfile
[root@yufei ~]# free
total       used       free     shared    buffers     cached
Mem:        511572     419948      91624          0      15492     338472
-/+ buffers/cache:      65984     445588
Swap:      1059480          0    1059480
第四步:写入fstab
加入下面的内容
/swapfile                swap                   swap    defaults        0 0
重新启动查询SWAP大小情况
[root@yufei ~]# free
total       used       free     shared    buffers     cached
Mem:        511572     151156     360416          0      15228      74056
-/+ buffers/cache:      61872     449700
Swap:      1059480          0    1059480
这样我们把两种方法全部演示了一下,这里面有个问题,那就是现在系统中有三个SWAP,默认的情况下,哪个SWP最先使用呢?Linux的内核会自 动给SWAP指定一个优先级,这个优先级从-1开始,每加入一个新的没有用户指定优先级的SWAP,会给这个优先级减一。所以-1他的优先级最好,所以就 最先使用。
有这样一种情况,那就是在使用VPS的时候,系统在安装的时候,可能没有给分配SWAP,所以说,你要自己创建SWAP,但就分区与文件的SWAP而言,分区的SWAP效率要比文件高。所以有时候我们需要来调整他们的优先级。请继续看操作。

查看swap的优先级

[root@yufei ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/sda2               partition    524280    0        -1
/dev/sdb7               partition    273064    0        -2
/swapfile               file        262136    0        -3
这里是数字越大,优先级越高。
要更改他们的优先级也很简单,只需要在fstab中增加pri参数就OK。注意,这个pri后面的数值不是能负数哦!/etc/fstab修改的主要内容如下。
UUID=c70cd6a4-09cd-4aea-ba94-f3641df4e981    swap        swap    defaults,pri=1    0 0
UUID=edca6b3a-047b-4e26-9b28-21493f92e2b4    swap        swap    defaults,pri=2    0 0
/swapfile                                    swap        swap    defaults,pri=3  0 0
为了使修改生效,我们需要先关闭SWAP再开启SWAP
[root@yufei ~]# swapoff -a
[root@yufei ~]# swapon -a
[root@yufei ~]# swapon -s
Filename                Type        Size    Used    Priority
/dev/sda2                partition    524280    0        1
/dev/sdb7                partition    273064    0        2
/swapfile                file        262136    0        3
当然我把这个SWAP文件调整成最高优先级不合理,这里只是做个演示,来说明问题而已。所以大家不要把文件的SWAP调整成最高啊。如果不是必要的情况下,用系统默认的就好。