swap分区是在内存不够用时才使用的,swap分区不够时可以扩容


方法1:使用独立的分区来实现


1. lsblk 查看是否有可用的磁盘分区,使用fdsik划分磁盘分区


2. fdisk /dev/sdc 创建后的分区为/dev/sdc2,注意使用t选项修改分区id为82

3. 创建swap文件系统

   mkswap /dev/sdc2 -L swap_sdc2

4. vim /etc/fstab

   :r!blkid /dev/sdc2       #读取命令输出至文件,再次进行编辑

   UUID="6f50983b-1452-41fc-8efd-2151e4613959" swap                  swap     defaults       0 0 

5. swapon -a  让编辑后的/etc/fstab中的swap 分区生效

   发散思维: 其实执行mount -a 是否生效不还是看选项是否有auto吗,man 5 fstab中找到的(学会使用man 5 配置文件 来查看配置信息,你值得拥有!)

   defaults

                     use default options: rw, suid, dev, exec, auto, nouser, and async.


   noauto do not mount when "mount -a" is given (e.g., at boot time)


   提取关键信息:defaults: rw, suid, dev, exec, auto, nouser, and async. 

   noauto: do not mount when "mount -a" is given (e.g., at boot time)   这句话取反你就知道啥意思了!


6. 重新读取挂载信息后,使用swapon -s 查看swap文件系统的信息

   [root@centos7 ~]#swapon -s

Filename Type Size Used Priority

/dev/sda3                              partition 2047996 2800 -1

/dev/sdc2                              partition 10484732 0 -2


注意一下还有优先级的,数值越大优先级越高

发散思维: 在使用是swap分区的时候要使用外磁道来使用(即磁道号较小的,最外圈的是0磁道),因为这样数据的访问效率会比内圈磁道高,具体的原因在此不再赘述。

7. 查看swap分区的状态也可以使用 lsblk 

   [root@centos7 ~]#lsblk 

NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT

sda      8:0    0  100G  0 disk 

├─sda1   8:1    0 1000M  0 part /boot

├─sda2   8:2    0  9.8G  0 part /

├─sda3   8:3    0    2G  0 part [SWAP]        #原来的swap分区大小

├─sda4   8:4    0    1K  0 part 

└─sda5   8:5    0 48.8G  0 part /data

sdb      8:16   0   20G  0 disk 

├─sdb1   8:17   0    2G  0 part 

├─sdb2   8:18   0    2G  0 part 

├─sdb3   8:19   0    3G  0 part 

├─sdb4   8:20   0    1K  0 part 

└─sdb5   8:21   0    2G  0 part 

sdc      8:32   0   20G  0 disk 

├─sdc1   8:33   0   10G  0 part 

└─sdc2   8:34   0   10G  0 part [SWAP]      #新增加的swap分区的大小

sr0     11:0    1  3.7G  0 rom  /run/media/root/CentOS_6.9_Final

sr1     11:1    1  8.1G  0 rom  /run/media/root/CentOS 7 x86_64

8. 禁用新增的swap分

   # swapoff  /dev/sdc1


总结记忆:  swapon -a  生效/etc/fstab 添加swap分区

          fdisk分区的时候注意使用t 修改磁盘的id 为82

          swpaon -s 查看swap分区信息

          swapoff /dev/sdc1 禁用swap分区


方法2: 文件模拟分区创建swap文件系统


1. dd if=dev/zero of=/data/swap_file bs=1G count=5   创建5G空间的大小的文件

  发散思维: dd if=/dev/zero of=/dev/sdc1 bs=512 count=1  可以干掉MBR的信息,你可以这样删除分区信息,也可以使用fdisk /dev/sdc 来使用d选项来删除

           当然也可以不删除bootloader的信息(446bytes),直接将64bytes的分区表信息填零,如:

           dd if=/dev/zero of=/dev/sdc1 bs=1 count=64 seek=446  直接填充64bytes至 分区表,跳过目标 /dev/sdc1的前446bytes

           注意不能使用 dd if=/dev/zero of=/dev/sdc1 bs=64 count=1 seek=446

           hexdump -C /dev/sda -n 512 -v  显示sda分区的前512字节信息

           葵花宝典的套路: 记住玩之前先要备份MBR啊!哈哈哈,dd if=/dev/sdc1 count=/data/mbr.bak bs=512 count=1 (默认单位是字节)

           恢复的时候 可以直接 dd if=/dev/mbr.bak of=/dev/sdc1 不用给出bs和count了,因为只有512字节的备份信息,是吧。

           也可以使用dd if=/dev/zero of=/dev/null bs=1G count=2 这方法可以测试磁盘的读写速度,有兴趣的可以试试

2. mkswap -L swap_file /data/swap_file  创建swap文件系统

3. 为了永久生效,编辑配置文件/etc/fstab,永久生效配置修改配置文件似乎是linux的铁律,你们觉得呢?因为使用的是文件模拟的分区,所以不要使用UUID哟!

   vim /etc/fstab

   /data/file2   swap                  swap     defaults       0 0  

4.swapon -a  读取/etc/fstab中的swap分区信息

5.swapon -s  查看swap分区的信息,顺便看看自己刚刚创建的swap分区是否生效

6.swapoff /data/swap_file 不想玩了,可以直接禁用