十一、SWAP
一、 什么是交换内存
安装 Linux 时需要两个分区,一个是根目录,另外一个就是 swap(内存交换空间)。swap 的功能就是在应付物理内存不足的情况下所造成的内存扩展记录的功能。一般来说,如果硬件的配备足够的话,那么 swap 应该不会被我们的系统所使用到。
CPU 所读取的数据都来自内存,当内存不足的时候,为了让后续的程序可以顺利运行,因此在内存中暂不使用的程序与数据就会被挪到 swap 中了。此时内存就会空出来给需要执行的程序加载。swap 是用硬盘来暂时放置内存中的信息。
目前主机的内存都很大,因此在个人使用上,不设置 swap 也没有太大的问题。不过服务器可就不同了,由于不会知道何时会有大量来自网络的请求,因此最好能够预留一些 swap 来缓冲一下系统的内存用量。
二、 什么是虚拟内存
虚拟内存别称虚拟存储器(Virtual Memory)。电脑中所运行的程序均需经由内存执行,若执行的程序占用内存很大或很多,则会导致内存消耗殆尽。为解决该问题,Windows 中运用了虚拟内存技术,即匀出一部分硬盘空间来充当内存使用。当内存耗尽时,电脑就会自动调用硬盘来充当内存,以缓解内存的紧张。若计算机运行程序或操作所需的随机存储器(RAM)不足时,则 Windows 会用虚拟存储器进行补偿。它将计算机的 RAM 和硬盘上的临时空间组合。当 RAM 运行速率缓慢时,它便将数据从RAM 移动到称为“分页文件”的空间中。将数据移入分页文件可释放 RAM,以便完成工作。 一般而言,计算机的RAM 容量越大,程序运行得越快。若计算机的速率由于 RAM 可用空间匮乏而减缓,则可尝试通过增加虚拟内存来进行补偿。但是,计算机从 RAM 读取数据的速率要比从硬盘读取数据的速率快,因而扩增 RAM 容量(可加内存条)是最佳选择。
虚拟内存是 Windows 为作为内存使用的一部分硬盘空间。虚拟内存在硬盘上其实就是为一个硕大无比的文件,文件名是 PageFile.Sys,通常状态下是看不到的。必须关闭资源管理器对系统文件的保护功能才能看到这个文件。虚拟内存有时候也被称为是“页面文件”就是从这个文件的文件名中来的。
内存在计算机中的作用很大,电脑中所有运行的程序都需要经过内存来执行,如果执行的程序很大或很多,就会导致内存消耗殆尽。为了解决这个问题,WINDOWS 运用了虚拟内存技术,即拿出一部分硬盘空间来充当内存使用,这部分空间即称为虚拟内存,虚拟内存在硬盘上的存在形式就是 PAGEFILE.SYS 这个页面文件。
三、 两者区别
虚拟内存:虚拟内存是开机时必须启动的。甚至说如果没有虚拟内存,你都没办法开机 虚拟内存和物理内存一同来使用,即使你的物理内存没有被全部使用
交换内存:是物理内存不够的时候启用的,以便腾出内存给其他的程序使用,如果我们的物理内存足够大,甚至都没有存在交换内存的必要(保险)
四、 swap 红帽的公式
如果 物理内存<2GB 那么 swap=物理内存 X2 否则 swap 分区=物理内存+2
一般来说可以按照以下设置 swap 大小
4G 以内物理,swap 设置内存 2 倍
4-8Gswap:等同
8-64 swap 8G
64-256 swap16G
五、 交换空间的创建
1.真实磁盘
[root@localhost ~]# fdisk /dev/sdb
Command (m for help): n //创建分区
Command (m for help): t
Hex code (type L to list all codes): l //查看可更改的分区 ID
Hex code (type L to list all codes): 82 //选择 sqap 的分区 ID
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): w //保存退出
[root@localhost ~]# mkswap /dev/sdb1 //创建磁盘设备的文件系统为 swap
Setting up swapspace version 1, size = 10484732 KiB
no label, UUID=b668af75-b90f-455e-b4ca-d9af339a2359
[root@localhost ~]# swapon /dev/sdb1 //开启 swap 分区
[root@localhost ~]# free -mh //查看可用磁盘分区
total used free shared buff/cache available
Mem: 1.8G 611M 735M 9M 490M 1.0G
Swap: 11G 0B 11G
2.文件虚拟
[root@localhost ~]# dd if=/dev/zero of=/tmp/1 count=20 bs=1M
20+0 records in
20+0 records out
20971520 bytes (21 MB) copied, 0.00695866 s, 3.0 GB/s
[root@localhost ~]# mkswap /tmp/1
Setting up swapspace version 1, size = 20476 KiB
no label, UUID=987fc8ec-2a0f-4a13-86c6-3c42150f918d
[root@localhost ~]# swapon /tmp/1
swapon: /tmp/1: insecure permissions 0644, 0600 suggested.
六、 fstab 的写法
swapfile swap(挂载点) swap(文件系统类型) defaults 0 0
七、 附加
swap 设备在创建时默认不开启 需要使用 swap –a 来开启交换分区
可以通过 free –m 查看
mkswap –c 检测磁盘中的坏道并创建 swap