在较新的Ubuntu release版中(Ubuntu1804),默认使用swapfile作为swap space,
那什么是swapfile,它和传统的swap partition有什么区别呢?为什么以及如何使用swapfile?在使用时哪些限制呢?我们一一来介绍一下。
安装过系统的同学都知道,在安装过程中有一步是设置SWAP分区,它是从hard disk中分出的一块,大小一般要大于physical memory。当物理内存不够用的时候,会把一部分内存内容交换到swap space中。这就是我们了解的traditional swap partition。
系统启动之后,查看swap space信息如下:
#free
total used free shared buff/cache available
Mem: 8065948 1284912 5468820 424904 1312216 6256220
Swap: 8287228 0 8287228
以上结果表示,在系统中,swap space大小为8GB,剩余8GB。swap space对应的我们在安装系统时,设置的SWAP分区。
#cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 8287228 0 -2
那如果发现8GB的swap space不够用,想要再加一些,该如何操作呢?这就要用到swapfile了,它跟swap partition不同的是,它可以随时增减、调整大小。
1.创建新的swapfile,大小为1GB
#sudo fallocate -1 1g /swapfile1
#file /swapfile1
swapfile1: data
/*格式化*/
/# mkswap swapfile1
mkswap: swapfile1: insecure permissions 0644, 0600 suggested.
Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)
no label, UUID=e25ce6dd-da17-4d21-a199-a9ba8b766a7a
2.开启swapfile
#swapon /swapfile1
swapon: /swapfile1: insecure permissions 0644, 0600 suggested.
3.查看系统中的swap space
/# swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 8287228 0 -2
/swapfile1 file 1048572 0 -3
# cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 8287228 0 -2
/swapfile1 file 1048572 0 -3
#free
total used free shared buff/cache available
Mem: 8065948 1289224 5459220 426796 1317504 6250016
Swap: 9335800 0 9335800
看到swap space增大了1GB;
如果想要开机时,就开启swapfile1,需要修改/etc/fstab文件
#vim /etc/fstab
//加入swapfile1
#for swap partition
UUID=f65ff29d-770f-4ec6-8c1d-9a1caceb1a6f none swap defaults 0 0
#for swapfile
/swapfile1 none swap sw 0 0
如果想要删除swap file,需要先关闭对应的swap space
#swapoff /swapfile1
#rm /swapfile1
//remove the entry in fstab
#cat /proc/swaps
Filename Type Size Used Priority
/dev/sda5 partition 8287228 0 -2
到这里swapfile1就已经被删除了
swap space还有一个用处是在hibernation操作中,会把ram中的内容打包成hibernation image放在swap 中,等到resume时,再从swap space中获取image,将系统快速恢复到hibernation操作之前的状态,这种情况下,就只能使用swap partition,且需要保证swap partition大于RAM size。
在/etc/default/grub中,指定hibernation image存放的swap space信息
#blkid //查看swap partition对应的UUID信息
/dev/sda1: UUID="5533-5234" TYPE="vfat" PARTUUID="eeaa3483-01"
/dev/sda5: UUID="f65ff29d-770f-4ec6-8c1d-9a1caceb1a6f" TYPE="swap" PARTUUID="eeaa3483-05"
#vim /etc/default/grub
在GRUB_CMDLINE_LINUX中,指定"resume=UUID=f65ff29d-770f-4ec6-8c1d-9a1caceb1a6f"
#update-grub
#rtcwake -s 20 -m disk
即可执行hibernation操作
参考文件
https://help.ubuntu.com/community/SwapFaq
https://blog.csdn.net/tanswer_/article/details/80785783