保姆级swap分区详解!手把手带你创建swap分区(两种方式,建议收藏)涉及fdisk、gdisk、df、parted、partprobe、mkswap、swapon、free、dd、od等命令
Swap分区的详解 && 创建
- 什么是swap分区?
- 方法一:使用物理分区创建Swap分区
- 1. 利用fdisk / gdisk在磁盘上划出一个分区
- 1.1 lsblk —— 查看本机的磁盘分区基本情况
- 1.2 df 命令 —— 查看磁盘空间利用率
- 1.3 parted命令 —— 列出磁盘的分区表类型与分区信息
- 1.4 fdisk / gdisk命令 —— 磁盘管理
- 1.5 partprobe —— 更新Linux内核分区表信息
- 2. 创建swap格式
- 2.1 mkswap命令 —— 格式化Swap分区
- 2.2 blkid命令 —— 查看设备UUID和TYPE
- 3. 观察与加载
- 3.1 free命令 —— 查看物理内存和Swap分区情况
- 3.2 swapon命令 —— 启动/加载Swap设备
- 3.3 swapon -s —— 列出正在使用的Swap分区设备
- 方法二:使用文件创建内存交换文件
- 1. 创建一个足够大而空的文件
- 1.1 dd命令 —— 可指定大小地创建空文件
- 1.2 file命令 —— 查看文件类型
- 1.3 od命令 —— 查看二进制文件
- 2. 创建swap格式
- 3. 观察与加载
- 使用swapoff关闭swap分区
- 码字不易,感谢支持!
记得学习操作系统的时候我们会背这样一个知识点:
swap分区有两种方式:
- 使用一个交换分区
- 利用一个共享文件来实现
字面上看着是大概就这个意思呗,背一下考试可以应付了哈哈
但是什么是交换分区?共享文件怎么实现?
还好我们有比较accessible的Linux操作系统,那就去Linux上去创建个swap分区看看,概念性的知识在动手操作过之后自然脱离晦涩而生动起来了!
什么是swap分区?
先一起来复习一下操作系统里的知识:
1.我们知道cpu所对去的数据都来自于内存,那么内存不足的时候,为了让后续的程序可以顺利运行,需要将暂时不使用的程序与数据都挪到内存交换分区中,此时内存就会空出一部分空间来给需要执行的程序加载 。
…
2.当系统的物理内存不够用的时候,系统会将长时间没有操作的进程占用的物理内存空间释放出来,以供当前运行的程序使用。而被释放的空间会被临时保存到交换(Swap)分区中,等到那些程序要运行时,再从Swap分区中恢复保存的数据到内存中。如果Swap被用尽,将会发生系统错误。
- 更多的内容建议复习一下高级调度和中级调度的知识,这边我们主要讲解操作
方法一:使用物理分区创建Swap分区
1. 利用fdisk / gdisk在磁盘上划出一个分区
既然要在磁盘上划出一个分区,那就至少要选定一块分区来划分,我们可以用lsblk
命令来查看本机的磁盘分区基本情况
1.1 lsblk —— 查看本机的磁盘分区基本情况
- 在命令行输入
lsblk
,结果如下 :
看了下,本来想用sda来在划一个分区(比如sda3),但是看了下SIZE那一列,sda磁盘整个有20G的空间,但是他划分的两个分区sda1已经占了0.5G,sda2占了19.5G,这意思是sda这整个磁盘已经没有多余的空间来划分了,可以重新分区再格式化,但是没那个必要!
往下找找,看到了sdd磁盘还没有被划过分区,且有1个G的内存,基本确定就是他了,我们再用df [device] 命令来看看这个sdd的存储空间使用情况如何。
1.2 df 命令 —— 查看磁盘空间利用率
df命令的选项/功能挺多的,这里我们只关注 df [device]
这样的格式;在命令行敲个df sdd
,结果如下:
看到Use%那一栏,可以明白sdd磁盘的空间利用率只有1%,就拿丫开刀!
1.3 parted命令 —— 列出磁盘的分区表类型与分区信息
接下来的部分首先就涉及到了fdisk/gdisk命令的使用。
fdisk和gdisk是两个工具软件,也可以看成是一种综合性很强的命令,是用来管理磁盘分区的。
如果英语过关的话其实也不需要特别专门地学习这两个工具(因为可以随时查看工具内置的选项说明),等一下就会会讲到如何使用它们。 现在的问题是——我们到底是使用fdisk还是gdisk?
- MBR分区表使用fdisk
- GPT分区表使用gdisk
- 大概说一下,这两种分区表是在LInux启动时为引导启动程序服务的,引导启动程序会根据分区表来对整个物理存储空间进行分区;不同的分区表分区的结果有格式上的差异,所以其磁盘管理工具(即fdisk和gdisk)不一样。
我们可以用parted [device] print
来查看本系统分区表的类型。
- 在命令行输入
parted /dev/sdd print
,会得到如下的结果:
看到Partition Table(也就是“分区表”的英文)的字段了吗?对应的字段是 msdos,说名本系统的分区表为MBR类型,使用fdisk!
1.4 fdisk / gdisk命令 —— 磁盘管理
承上,因为本系统的分区表为MBR类型,我们使用fdisk,而gdisk 的使用差异也不大,看完fdisk的使用该方式之后应该也会使用gdisk了。
我们先在命令行输入fdisk /dev/sdd
,可以看到如下结果:
按照提示,输入M之后得到官方提示;
现在我们要做的是在sdd磁盘划出一个分区,按提示我们输入 n
:
如上,键入n之后系统会提示你两个选项:
- e: extend —— 拓展分区
- p: primary —— 主分区
- 在这里我们选择p,划分一个主分区
- 键入
p
,得到如下内容:
Partition number就是新划分的分区号,比如磁盘sdd上划出的分区可以为sdd1、sdd2、sdd3、sdd4(括号中的1—4就是这个意思),这里我们就之间回车用default值1吧! - 直接回车使用默认值,结果如下:
First sector就是可以使用的起始扇区号,这里我们一样回车来使用default的值。
- 继续回车使用默认值,结果如下:
Last sector就是分区末尾的扇区号。
可以根据其输出的信息知道有两种确定Last sector 的方式:
(1) + sectors —— 通过扇区号来确定
(2) +size {K,M,G} —— 通过分区大小来确定
- 既然知道了起始扇区号,那么通过我们更熟悉的size就可以知道last sector了,这里建议使用第二种方式!
通过之前的查看我们知道这个sdd磁盘有1G的空间,那就给sdd1设置512M的大小吧!
- 键入
+512M
(没有空格,且注意不要忘记单位!),结果如下:
设置完大小之后不要忘记保存!
- 键入
w
来保存,结果如下:
提示这个分区已经从sdd上被划分出来了,但是别急!
1.5 partprobe —— 更新Linux内核分区表信息
承上,要注意的是,因为此时Linux还在使用这块磁盘,因为担心系统出问题,所以分区表还没有被更新。
这是我们有两种方式来解决这个问题,一个是重启(reboot),不过太麻烦了。另一个办法是通过partprobe
命令来刷新分区表。
- partprobe [-s] # 可以不加-s选项,这样屏幕就不会出现信息
- partprobe -s # 但是还是建议加-s选项,这样更清晰一些
- 键入
partprobe -s
,结果如下:
行了,sdd1这个时候应该是划分出来了,我们再用lsblk命令来确定一下。 - 键入
lsblk
,结果如下:
这时候可以看到sdd下面已经有了sdd1,确定!sdd1分区已经被分出来了!
2. 创建swap格式
需要注意的是我们总说的swap狭义上是一种Linux文件系统的类型!( 就像xfs、ext2、ext3、ext4、proc等等,都属于文件系统类型)
…
既然是一种文件系统类型,那就需要格式化(这里的格式化可以理解为创建文件系统)。
2.1 mkswap命令 —— 格式化Swap分区
- 键入
mkswap /dev/sdd1
,结果如下:
注:UUID是系统用来唯一标识每一设备的编号
接下来我们再确定一下,也不要嫌麻烦了,Linux就是要多敲才能会,共勉!
2.2 blkid命令 —— 查看设备UUID和TYPE
- 键入
blkid /dev/sdd1
,结果如下:
UUID和TYPE都对了,说明sdd1已经被格式化成swap类型了!
还没完事,swap分区被格式化出来之后还需要加载,为了证明sdd1这个我们新增的swap分区确实可以发挥作用了,我们还要观察一下!
3. 观察与加载
3.1 free命令 —— 查看物理内存和Swap分区情况
- 键入
free
,结果如下:
Men代表物理内存,Swap代表swap分区;
从上图可以看出我的物理内存是2053212K(注意单位是K),而Swap的大小是524284K(大概记住这个数,一会加载完sdd1之后看看会有什么变化)。
3.2 swapon命令 —— 启动/加载Swap设备
- 键入
swapon /dev/sdd1
,如下:
- 我们再键入
free
来看看,如果sdd1成功启动,那么系统的Swap总大小应该会增加512M:
看到系统总Swap的大小增至了1048568K!说明我们成功了!
3.3 swapon -s —— 列出正在使用的Swap分区设备
free查的不过瘾呗,用swapon -s
再瞅一眼:
特别说明一下,sda1是我在/etc/fstab里写好的,在启动时自动挂载的Swap分区。
中,第一种方式说明完毕了,接下来我们来看看第二种方式!
方法二:使用文件创建内存交换文件
这个方法的前提就在于要创建一个足够大的空文件,你可能回想到touch命令,但是touch命令创建出来的文件是没有大小的。
…
这时我们可以用到dd
命令来创建一个又大又空的文件!
1. 创建一个足够大而空的文件
1.1 dd命令 —— 可指定大小地创建空文件
dd命令的用法:
…
例:dd if=/dev/zero of=/srv/loopdev bs=1M count=128
- if 是input file的意思(输入文件),/dev/zero是一直输入0的设备
- of 是output file的意思(输出文件),一般指定到目标文件
- bs 是每个block 的大小,就像文件系统那样的block意义
- count 则是总共几个bs的意思,故bs*count就是文件容量
- of 的目标文件不需要提前touch创建,如果文件不存在会自动创建
- 键入
dd if=/dev/zero of=/tmp/swap bs=1M count=128
,即在/tmp/下创建一个128M的空文件swap,结果如下:
1.2 file命令 —— 查看文件类型
1.3 od命令 —— 查看二进制文件
我们也可以用file
命令和od
命令看看这个swap假大空文件里面到底是啥:
再ls -lh
一下看看文件大小:
结果符合预期!
2. 创建swap格式
和方法一一样,我们需要做一下swap的格式化:
- 键入
mkswap /tmp/swap
,结果如下:
格式化成功!
3. 观察与加载
和方法一一样,键入swapon /tmp/swap
来加载这个经过swap格式化好的文件,然后再键入swapon -s
来观察,结果如下:
成功!
使用swapoff关闭swap分区
键入swapoff /dev/sdd1 /tmp/swap
关闭刚刚加载的两个swap分区,结果如下:
码字不易,感谢支持!
保姆级swap分区详解!手把手带你创建swap分区(两种方式,建议收藏)涉及fdisk、gdisk、df、parted、partprobe、mkswap、swapon、free、dd、od等命令相关推荐
- python repair修复功能_详解Python修复遥感影像条带的两种方式
GDAL修复Landsat ETM+影像条带 Landsat7 ETM+卫星影像由于卫星传感器故障,导致此后获取的影像出现了条带.如下图所示, 影像中均匀的布满条带. 使用GDAL修复影像条带的代码如 ...
- 《Axure RP7网站和APP原型制作从入门到精通(60小时案例版)》一第2章 母版详解2.1 创建母版的两种方法...
本节书摘来自异步社区<Axure RP7网站和APP原型制作从入门到精通(60小时案例版)>一书中的第2章,第2.1节,作者 金乌,更多章节内容可以访问云栖社区"异步社区&quo ...
- java配置文件实现方式_java相关:详解Spring加载Properties配置文件的四种方式
java相关:详解Spring加载Properties配置文件的四种方式 发布于 2020-4-29| 复制链接 摘记: 一.通过 context:property-placeholder 标签实现配 ...
- python使用什么作为转义字符-详解用Python处理HTML转义字符的5种方式
写爬虫是一个发送请求,提取数据,清洗数据,存储数据的过程.在这个过程中,不同的数据源返回的数据格式各不相同,有 JSON 格式,有 XML 文档,不过大部分还是 HTML 文档,HTML 经常会混杂有 ...
- linux 查看网络流量来源_详解Linux查看实时网卡流量的几种方式
在工作中,我们经常需要查看服务器的实时网卡流量.通常,我们会通过这几种方式查看Linux服务器的实时网卡流量. 1. sar -n DEV 1 2 sar命令包含在sysstat工具包中,提供系统的众 ...
- java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较
1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...
- 一起玩转算法面试,保姆级攻略(附高清无码算法总结导图),建议收藏
本文已收录至启舰的电子书<逆天改命-程序员的成神之路>,github地址:https://github.com/harvic/FightingCoder 欢迎star.点击[阅读原文]也 ...
- linux格式化4t硬盘分区,详解:Linux 硬盘,格式化,分区 详解
disk是Linux自带的硬盘分区工具,可以对硬盘进行分区,或者对硬盘分区进行调整. 首先选择要进行操作的磁盘 [root@linuxidc ~]# fdisk /dev/sdb 输入m,列出可以执行 ...
- java 文件下载详解_Java 从网上下载文件的几种方式实例代码详解
废话不多说了,直接给大家贴代码了,具体代码如下所示: package com.github.pandafang.tool; import java.io.BufferedOutputStream; i ...
最新文章
- js动态创建元素之一--document.write
- ehcache rmi_EhCache复制:RMI与JGroups
- 算法入门经典-第七章 例题7-2最大乘积
- java B2B2C源码电子商务平台 --zuul跨域访问问题
- php ob缓存原理介绍
- 基于shell 脚本处理文本数据流程
- 《SQL Server 2008从入门到精通》--20180703
- 一秒带你穿越!AI 修复百年前北京影像,路边摊、剃头匠太真实了
- BAT、360、网易等大公司开源项目
- 扩展欧几里得算法 思想及模板代码
- C语言实现EPSG:4326和EPSG:3857的互转
- 编译原理实验-用FLEX自动构造词法分析程序
- 电信光猫桥接+ML固件路由器实现ipv6网站访问
- PHP获取每月第一天与最后一天
- 线序检测 多芯线 线缆检测 正反线序 交叉线序检测 排线检测 成品线检测
- 信息科学技术与创新之“信息纽带”
- Android 实现动态背景“五彩蛛网”特效,让你大开眼界!
- 阿里云安全组设定(虚拟机端口打开)
- python建立窗口并美化_Python GUI教程(十六):在PyQt5中美化和装扮图形界面
- PAT甲级1012:The Best Rank (25)
热门文章
- RISC-V MCU开发之外设介绍 - 高速USB(内置PHY)
- 梦幻模拟战更新服务器正在维护,梦幻模拟战:10月18日更新维护公告
- 搜索引擎的核心原理-倒排索引
- java addslashes_PHP中addslashes()和stripslashes()实现字符串转义和还原用法实例
- python线程类改变类变量
- appium android数字字母切换键,Appium 输入法切换
- python缩进快捷键 gvim_vim python缩进问题 - 卡饭网
- MySQL 5.7以及MySQL Workbench使用
- Python编程题自用(一)
- CentOS7下源码编译安装MySQL5.6.4