swap分区简介:
Linux下的swap分区类似于Windows下的虚拟内存,都是当物理内存不够用时临时充当“内存”角色的一块磁盘空间。
Linux下增加及新建swap分区有两种方法,一种是基于硬盘分区的方式,另一种是基于文件的方式。
1、基于磁盘分区的swap
要增加基于分区的swap分区,首先得保证你有一块空余的磁盘空间可供分区,这里因为我是在虚拟机环境下实验,所以直接新增一块8G的硬盘用于分区。
下面是操作过程,每一步都有注释。
[root@localhost ~]# fdisk /dev/sdb //使用fdisk分区工具为新增加的磁盘分区
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): n //新建一个分区
Command action
e extended
p primary partition (1-4)
p //新建为主分区
Partition number (1-4): 1 //分区编号为1
First cylinder (1-1044, default 1): 1 /分区起始扇区为1
Last cylinder, +cylinders or +size{K,M,G} (1-1044, default 1044): //这里我直接按回车了,使用全部可用磁盘空间
Using default value 1044
Command (m for help): t //更改分区类型,默认类型为“Linux”,要将其更改为“Linux swap”
Selected partition 1 //如果存在多个分区,则这里会要求选择要操作的分区的编号,因为本实验中只有一个分区,所有直接默认是1
Hex code (type L to list codes): 82 //82就是“Linux swap”分区类型的编号,这里可以输入“list”查看所有分区类型对应的编号
Changed system type of partition 1 to 82 (Linux swap / Solaris)
Command (m for help): p //查看刚刚划分的swap类型的分区
Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa8cc39af
Device Boot Start End Blocks Id System
/dev/sdb1 1 1044 8385898+ 82 Linux swap / Solaris
Command (m for help): w //保存对磁盘分区做的更改
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
将刚刚创建的分区格式化为swap文件系统。
[root@localhost ~]# mkswap /dev/sdb1 Setting up swapspace version 1, size = 8385892 KiB no label, UUID=4b5f9371-3df6-47d5-bc40-15e6f7bb3db8
查看当前系统中启用的swap分区的大小。
[root@localhost ~]# free
total used free shared buffers cached
Mem: 502216 84088 418128 0 6892 31096
-/+ buffers/cache: 46100 456116
Swap: 835576 0 835576
启用新增加的swap分区之后再次查看系统中已生效的swap分区大小,可以发现,其完美增加了8个G~。
[root@localhost ~]# swapon /dev/sdb1
[root@localhost ~]# free
total used free shared buffers cached
Mem: 502216 90048 412168 0 6944 31088
-/+ buffers/cache: 52016 450200
Swap: 9221464 0 9221464
2、基于文件的swap
先使用dd命令生成一个2GB大小的文件。
[root@localhost ~]# dd if=/dev/zero of=/var/swap bs=1M count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,6.25394 秒,343 MB/秒</pre>
在这个文件上新建swap文件系统。
<pre>[root@localhost ~]# mkswap /var/swap
mkswap: /var/swap: warning: don't erase bootbits sectors
on whole disk. Use -f to force.
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=344232eb-9654-4167-873b-bdda9d2b01e6
查看当前系统中生效的swap分区的大小。
[root@localhost ~]# free
total used free shared buffers cached
Mem: 502216 495380 6836 0 1056 438852
-/+ buffers/cache: 55472 446744
Swap: 9221464 8532 9212932
启用新建的swap分区,并查看系统中生效的swap分区的大小,可以发现,增加了2G。
[root@localhost ~]# swapon /var/swap
[root@localhost ~]# free
total used free shared buffers cached
Mem: 502216 496256 5960 0 1152 437816
-/+ buffers/cache: 57288 444928
Swap: 11318608 8440 11310168
开机自动挂载swap分区:
将要开机挂载的swap分区加入到/etc/fstab文件中。
[root@localhost ~]# vim /etc/fstab
以下是修改后的文件内容,最后两行就是刚刚新建的swap分区,第三行是系统原本的swap分区。
/dev/mapper/VolGroup-lv_root / ext4 defaults 1 1 UUID=143f17a3-2d07-44b9-a577-f1609d3fb0c0 /boot ext4 defaults 1 2 /dev/mapper/VolGroup-lv_swap swap swap defaults 0 0 tmpfs /dev/shm tmpfs defaults 0 0 devpts /dev/pts devpts gid=5,mode=620 0 0 sysfs /sys sysfs defaults 0 0 proc /proc proc defaults 0 0 /dev/sdb1 swap swap defaults 0 0 /var/swap swap swap defaults 0 0
停用swap分区:
先查看系统中已生效的swap分区的大小。
[root@localhost ~]# free
total used free shared buffers cached
Mem: 502216 494008 8208 0 3700 431888
-/+ buffers/cache: 58420 443796
Swap: 11318608 7472 11311136
停用掉系统中原本的swap分区,并查看系统中生效的swap分区的大小,可以发现少了800MB左右的空间。
[root@localhost ~]# swapoff /dev/VolGroup/lv_swap
[root@localhost ~]# free
total used free shared buffers cached
Mem: 502216 495748 6468 0 3872 428504
-/+ buffers/cache: 63372 438844
Swap: 10483032 88 10482944