一文搞懂linux中swap分区的创建与使用,linux的swap空间创建的2种方法

说明

我们在安装系统的时候已经建立了 swap 分区。swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。

也就是说,当内存不够用时,我们使用 swap 分区来临时顶替。这种“拆东墙,补西墙”的方式应用于几乎所有的操作系统中。

使用 swap 交换分区,显著的优点是,通过操作系统的调度,应用程序实际可以使用的内存空间将远远超过系统的物理内存。由于硬盘空间的价格远比 RAM 要低,因此这种方式无疑是经济实惠的。当然,频繁地读写硬盘,会显著降低操作系统的运行速率,这也是使用 swap 交换分区最大的限制。
相比较而言,Windows 不会为 swap 单独划分一个分区,而是使用分页文件实现相同的功能,在概念上,Windows 称其为虚拟内存,从某种意义上将,这个叫法更容易理解。因此,初学者将 swap 交换分区理解为虚拟内存是没有任何问题的。

具体使用多大的 swap 分区,取决于物理内存大小和硬盘的容量。一般来讲,swap 分区容量应大于物理内存大小,建议是内存的两倍,但不超过 2GB。但是,有时服务器的访问量确实很大,有可能出现 swap 分区不够用的情况,所以我们需要学习 swap 分区的构建方法。

建立新的 swap 分区,只需要执行以下几个步骤。
1:分区:不管是 fdisk 命令还是 parted 命令(但用于swap,一般用不着parted),都需要先区;
2:格式化:格式化命令稍有不同,使用 mkswap 命令把分区格式化成 swap 分区;
3:挂载swap分区;
3:激活 swap 分区。

创建swap前提条件

  • 需要有一块没有使用完的硬盘【就是一块物理硬盘需要有剩余空间未分配】
    查看的方式有很多,我这里用lsblk说明:
    如下:我的sdb物理硬盘,一共有10G,我才用了不到7G,还有3G可以用。
[root@server0 ~]# lsblk
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda            8:0    0   10G  0 disk 
└─sda1         8:1    0   10G  0 part /
sdb            8:16   0   10G  0 disk 
├─sdb1         8:17   0    5G  0 part 
│ └─vg0-lvm1 253:0    0  772M  0 lvm  
└─sdb2         8:18   0  512M  0 part 
sr0           11:0    1 1024M  0 rom  
[root@server0 ~]# 

  • 查看现在的swap空间:free -lm
[root@server0 ~]# free -lm
             total       used       free     shared    buffers     cached
Mem:           979        892         87         14          0        144
Low:           979        892         87
High:            0          0          0
-/+ buffers/cache:        747        232
Swap:            0          0          0 # 可以看到现在是没有swap空间的

开始创建swap分区【推荐用这种】

分区

[root@server0 ~]# 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.


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: 0x229e658e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   8e  Linux LVM

Command (m for help): n【创建分区】
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p【主分区】
Partition number (2-4, default 2):  【直接回车即可】
First sector (10487808-20971519, default 10487808): 【选择开始块,直接回车即可】
Using default value 10487808
Last sector, +sectors or +size{K,M,G} (10487808-20971519, default 20971519): +512M 【自定义大小】
Partition 2 of type Linux and of size 512 MiB is set

Command (m for help): t 【转换格式】
Partition number (1,2, default 2): 2【选择硬盘id】
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就是swap分区)
Changed type of partition 'Linux' to 'Linux swap / Solaris'

Command (m for help): p【打印,看刚才修改的id磁盘是否变为linux swap】

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: 0x229e658e

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   8e  Linux LVM
/dev/sdb2        10487808    11536383      524288   82  Linux swap / Solaris

Command (m for help): w 【保存】
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
Command (m for help): w 【保存】
The partition table has been altered!

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
[root@server0 ~]# 
[root@server0 ~]# partprobe /dev/sdb  #更新硬盘信息
[root@server0 ~]#

格式化

[root@server0 ~]# lsblk   #fdisk –l 也可以看到分区信息
NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda            8:0    0   10G  0 disk 
└─sda1         8:1    0   10G  0 part /
sdb            8:16   0   10G  0 disk 
├─sdb1         8:17   0    5G  0 part 
│ └─vg0-lvm1 253:0    0  772M  0 lvm  
└─sdb2         8:18   0  512M  0 part 
sr0           11:0    1 1024M  0 rom  
[root@server0 ~]# mkswap /dev/sdb2  #格式化为swap,注意分区别搞错了
Setting up swapspace version 1, size = 524284 KiB
no label, UUID=38f22d84-e4fb-4d6a-b157-48912f761bfe  #无标签,uuid=…

永久挂载

[root@station ~]# blkid【查看swap对应的分区uuid并复制】 
[root@server0 ~]# vim /etc/fstab  # 最后一行添加下面内容
[root@server0 ~]# tail -n 1 /etc/fstab #添加如下内容
UUID=74bb6046-bf04-49c6-a4a2-d4fb3aebc6b7    swap   swap   defaults 0 0  
[root@server0 ~]#
[root@server0 ~]# swapon -a #立即挂载

swap属于特殊文件,mount -a 是不会自动挂载的,需要输入swapon -a 才会自动挂载

激活swap分区

  • 注:如果上面永久挂载中执行了swapon -a后,忽略该步骤!
  • 激活swap命令:swapon /dev/sd*
    如果不激活的话,即使挂载了,swap依然不会生效
[root@server0 ~]# free -l
             total       used       free     shared    buffers     cached
Mem:       1003456     927988      75468      15172        372     160828
Low:       1003456     927988      75468
High:            0          0          0
-/+ buffers/cache:     766788     236668
Swap:            0          0          0

[root@server0 ~]#
[root@server0 ~]# swapon /dev/sdb2 #激活swap
[root@server0 ~]# free –l #激活后swap 就有值了,这样 swap分区也全部完成
             total       used       free     shared    buffers     cached
Mem:       1003456     928344      75112      15172        376     160888
Low:       1003456     928344      75112
High:            0          0          0
-/+ buffers/cache:     767080     236376
Swap:       524284          0     524284
[root@server0 ~]#

另一种方式设置swap

swa管理pswap–交换分区—虚拟内存 —不过已经被淘汰了

可以手动设置交换分区大小,交换分区就是当实际物理内存不够用了,会临时调用swap分区。
查看交换分区大小:swapon -s / cat /proc/swaps
在这里插入图片描述
也可以自定义某分为为swap分区,但需要提前划分类型为swap, fdisk -l 设备名称 查看:
在这里插入图片描述
mkswap 设备名:设置swap交换分区
swapon 设备名:刷新交换分区
swaoff 设备名:卸载分区
swapon -p 优先级数 设备名 :定义优先级并挂载(需要先卸载)
在这里插入图片描述
上述是临时挂载,永久挂载需要把信息写入到/etc/fstab中 保存后输入swapon -a 自动挂载:
在这里插入图片描述
注:swap属于特殊文件,mount -a 是不会自动挂载的,需要输入swapon -a 才会自动挂载
如果电脑中已经没有更多的分区可以划分为交换分区了:可以创建一个文件,使用该文件作为交换分区:如在根目录下创建一个自定义名称用于当做交换分区文件:
在这里插入图片描述
给刚才创建的文件赋予600权限:chmod 600 /swapfile
挂载并刷新即可:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

҉人间无事人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值