虚拟内存(SWAP)
为了避免内存溢出通常需要设置下虚拟内存,也就是在磁盘中分配一个区域来作为内存使用。尽管在当前内存不值钱的情况下越来越不关键了,但他依然是一个很重要的知识点。
有两种方式来创建虚拟内存:
- 直接在磁盘中创建一个特定分区来做为虚拟内存
- 使用一个文件作为虚拟内存
使用磁盘特殊分区来创建虚拟内存
在对磁盘进行分区时,可以创建一个区域并标记为 Linux swap
就创建了一个用于虚拟内存的分区:
Bash
[root@study ~]# gdisk /dev/vda
Command (? for help): n
Partition number (6-128, default 6):
First sector (34-83886046, default = 69220352) or {+-}size{KMGTP}:
Last sector (69220352-83886046, default = 83886046) or {+-}size{KMGTP}: +512M
Current type is 'Linux filesystem'
Hex code or GUID (L to show codes, Enter = 8300): 8200
Changed type of partition to 'Linux swap'
Command (? for help): p
Number Start (sector) End (sector) Size Code Name
6 69220352 70268927 512.0 MiB 8200 Linux swap
之后同样需要执行格式化,这通过特殊的 mkswap 命令来完成:
Bash
[root@study ~]# mkswap /dev/vda6
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=6b17e4ab-9bf9-43d6-88a0-73ab47855f9d
[root@study ~]# blkid /dev/vda6
/dev/vda6: UUID="6b17e4ab-9bf9-43d6-88a0-73ab47855f9d" TYPE="swap"
之后还需要 swapon
来启用虚拟内存,同样 swapoff
来关闭虚拟内存:
Bash
[root@study ~]# swapon /dev/vda6
[root@study ~]# free
total used free shared buff/cache available
Mem: 1275140 227940 329256 7804 717944 874752
Swap: 1572856 101260 1471596 <==有看到增加了沒?
Tips
可以使用多个虚拟内存,这可以通过 swapon -s
来查看目前使用了那些 swap。
如果想要开机启动同样可以将 swap 添加到 /etc/fstab
文件中,他的挂载点比较特殊就是 swap:
使用文件作为 swap
通过 dd 来创建一个特定大小的文件来作为 swap:
Bash
[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
之后同样需要经过格式化和挂载:
Bash
[root@study ~]# mkswap /tmp/swap
Setting up swapspace version 1, size = 131068 KiB
no label, UUID=4746c8ce-3f73-4f83-b883-33b12fa7337c
[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