什么是swap分区:
Swap分区在系统的物理内存不够用的时候,把硬盘空间中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。在特殊情况下连swap 分区不够用时我们则需要建立更大的swap分区来供系统使用。
一般来说建立swap有三种方法:
1.删掉原来的swap分区重新建立一个更大的swap分区,但在实际情况中不推荐使用这种方式,如果系统正在使用swap分区而删掉则可能带来数据的丢失!
2.新建磁盘做swap,供系统使用;
3.用文件做swap分区使用。
一.新建磁盘做swap分区:
这里以虚拟机为例
2.让系统识别新增加的磁盘(有两种方法)
1.重启虚拟机
2.使用命令
[root@centos7 ~]#echo '- - -' >/sys/class/scsi_host/host2/scan
[root@centos7 ~]#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 50G 0 part /app
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sdb 8:16 0 10G 0 disk 注:这里就识别到了刚创建的10G硬盘
sr0 11:0 1 7.7G 0 rom /run/media/root/CentOS 7 x86_64
3.创建一个2G大小的swap分区:
[root@centos7 ~]#fdisk /dev/sdb 注:用fdisk对/dev/sdb创建分区
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa83f56d3.
Command (m for help): n 注:n为增加一个分区
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p 注:这里选择主分区
Partition number (1-4, default 1): 1 注:分区编号默认就1
First sector (2048-20971519, default 2048): 注:选择默认
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): +2G 注:增加一个2G的分区
Partition 1 of type Linux and of size 2 GiB is set
Command (m for help): p 注:打印分区表
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa83f56d3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 83 Linux
Command (m for help): t 注:默认的ID是82是Linux分区我们要更改为82 专门用于swap的
Selected partition 1
Hex code (type L to list all codes): l
0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris
1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT-
2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT-
3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT-
4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx
5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data
6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / .
7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility
8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt
9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access
a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O
b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor
c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs
e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT
f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/
10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b
11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor
12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor
14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary
16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS
17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE
18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto
1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep
1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT
1e Hidden W95 FAT1 80 Old Minix
Hex code (type L to list all codes): 82 注:选择82
Changed type of partition 'Linux' to 'Linux swap / Solaris'
Command (m for help): p
Disk /dev/sdb: 10.7 GB, 10737418240 bytes, 20971520 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa83f56d3 注:这里ID就变更为82
Device Boot Start End Blocks Id System
/dev/sdb1 2048 4196351 2097152 82 Linux swap / Solaris
Command (m for help): w 注:写入保存
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@centos7 ~]#mkswap /dev/sdb1 -L swap2 使用mkswap写入特殊签名,卷标设置为swap2
Setting up swapspace version 1, size = 2097148 KiB
LABEL=swap2, UUID=1f0e66b2-6423-4115-a20d-c0d4957586ff
[root@centos7 ~]#blkid 注:查看是否创建成功
/dev/sda2: UUID="e8d7cbe2-0fd0-4355-b535-a7b54c3febd9" TYPE="xfs"
/dev/sda1: UUID="637077c6-3003-40e0-8689-1556bb4fa00e" TYPE="xfs"
/dev/sda5: UUID="52ceaf06-70a8-4ce2-9bea-e4be30b6af18" TYPE="swap"
/dev/sr0: UUID="2016-12-05-13-52-39-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos"
/dev/sda3: UUID="4ca027ad-66c8-4132-809f-9ef47aa068b8" TYPE="xfs"
/dev/sdb1: LABEL="swap2" UUID="1f0e66b2-6423-4115-a20d-c0d4957586ff" TYPE="swap"
4.对/etc/fatab进行增加写入,让系统开机进行识别挂载。
对应相应的格式写入
5.查看swap的分区挂载。
[root@centos7 ~]#swapon -s 注:默认修改fstab没有生效
Filename Type Size Used Priority
/dev/sda5 partition 2097148 4 -1
6.使用swapon -a 激活交换空间
[root@centos7 ~]#swapon -a
[root@centos7 ~]#swapon -s 注:成功激活swap
Filename Type Size Used Priority
/dev/sda5 partition 2097148 4 -1
/dev/sdb1 partition 2097148 0 -2
到这里基本完成,如需更改优先级
则可在fstab里更改
如:
这里的数字越大表示优先级越高,设置完后使之生效,这里先禁用swap分区
[root@centos7 ~]#swapoff /dev/sdb1
[root@centos7 ~]#swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2097148 4 -1
[root@centos7 ~]#swapon -a 注:重新激活swap,优先级更改
[root@centos7 ~]#swapon -s
Filename Type Size Used Priority
/dev/sda5 partition 2097148 4 -1
/dev/sdb1 partition 2097148 0 1
到这里就设置完毕了。
二,用文件做swap分区使用
1,先创建一个大文件我们可以用dd这条命令来实现
[root@centos7 ~]#dd if=/dev/zero of=swapfile bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.59941 s, 192 MB/s
[root@centos7 ~]#ll -h swapfile
-rw-r--r--. 1 root root 1.0G Jun 27 13:36 swapfile
注:
if=/dev/zero : /dev/zero文件代表一个永远输出 0的设备文件
of=swapfile :写入到以swapfile命名的文件中
2.使用mkswap写入特殊签名
[root@centos7 ~]#mkswap swapfile
Setting up swapspace version 1, size = 1048572 KiB
no label, UUID=d07f3864-5bd1-4a08-b456-bd29506f0684
[root@centos7 ~]#vim /etc/fstab 注:添加到fstab中
UUID=e8d7cbe2-0fd0-4355-b535-a7b54c3febd9 / xfs defaults 0 0
UUID=4ca027ad-66c8-4132-809f-9ef47aa068b8 /app xfs defaults 0 0
UUID=637077c6-3003-40e0-8689-1556bb4fa00e /boot xfs defaults 0 0
UUID=52ceaf06-70a8-4ce2-9bea-e4be30b6af18 swap swap defaults 0 0
UUID=1f0e66b2-6423-4115-a20d-c0d4957586ff swap swap defaults,pri=1 0 0
UUID=d07f3864-5bd1-4a08-b456-bd29506f0684 swap swap defaults 0 0
[root@centos7 ~]#swapon -a 注:激活swapfile分区
swapon: /root/swapfile: insecure permissions 0644, 0600 suggested.
[root@centos7 ~]#swapon -s 注:查看是否激活成功
Filename Type Size Used Priority
/dev/sda5 partition 2097148 4 -1
/dev/sdb1 partition 2097148 0 1
/root/swapfile file 1048572 0 -2
到了这里两种方法就设置完毕了......
如有不足请多多指教!