如果是在实体分区无法支持的环境下,此时前一小节提到的 loop 设备创建方法就派的上用场啦! 与实体分区不一样的,这个方法只是利用 dd 去创建一个大文件而已。多说无益,我们就再通过文件创建的方法创建一个 128 MB 的内存交换空间吧!
- 使用 dd 这个指令来新增一个 128MB 的文件在 /tmp 下面:
[root@study ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128
128+0 records in
128+0 records out
134217728 Bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s
[root@study ~]# ll -h /tmp/swap
-rw-r--r--. 1 root root 128M Jun 26 17:47 /tmp/swap
这样一个 128MB 的文件就创建妥当。若忘记上述的各项参数的意义,请回前一小节查阅一下啰!
- 使用 mkswap 将 /tmp/swap 这个文件格式化为 swap 的文件格式:
[root@study ~]# mkswap /tmp/swap
Setting up swapspace version 1, size = 131068 KiB
no label, UUID=4746c8ce-3f73-4f83-b883-33b12fa7337c
# 这个指令下达时请“特别小心”,因为下错字符控制,将可能使您的文件系统挂掉!
- 使用 swapon 来将 /tmp/swap 启动啰!
[root@study ~]# swapon /tmp/swap
[root@study ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 100380 -1
/dev/vda6 partition 524284 0 -2
/tmp/swap file 131068 0 -3
- 使用 swapoff 关掉 swap file,并设置自动启用
[root@study ~]# nano /etc/fstab
/tmp/swap swap swap defaults 0 0
# 为何这里不要使用 UUID 呢?这是因为系统仅会查询区块设备 (block device) 不会查询文件!
# 所以,这里千万不要使用 UUID,不然系统会查不到喔!
[root@study ~]# swapoff /tmp/swap /dev/vda6
[root@study ~]# swapon -s
Filename Type Size Used Priority
/dev/dm-1 partition 1048572 100380 -1
# 确定已经回复到原本的状态了!然后准备来测试!!
[root@study ~]# swapon -a
[root@study ~]# swapon -s
# 最终你又会看正确的三个 swap 出现啰!这也才确定你的 /etc/fstab 设置无误!
说实话,swap 在目前的桌面电脑来讲,存在的意义已经不大了!这是因为目前的 x86 主机所含的内存实在都太大了 (一般入门级至少也都有 4GB 了),所以,我们的 Linux 系统大概都用不到 swap 这个玩意儿的。不过, 如果是针对服务器或者是工作站这些常年上线的系统来说的话,那么,无论如何,swap 还是需要创建的。
因为 swap 主要的功能是当实体内存不够时,则某些在内存当中所占的程序会暂时被移动到 swap 当中,让实体内存可以被需要的程序来使用。另外,如果你的主机支持电源管理模式, 也就是说,你的 Linux 主机系统可以进入“休眠”模式的话,那么, 运行当中的程序状态则会被纪录到 swap 去,以作为“唤醒”主机的状态依据! 另外,有某些程序在运行时,本来就会利用 swap 的特性来存放一些数据段, 所以, swap 来是需要创建的!只是不需要太大!+