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 不想玩了,可以直接禁用