手把手教你Linux磁盘分区与文件挂载

news/2024/5/18 21:56:22 标签: Linux, 磁盘分区, 文件挂载, fdisk, mount

在这里插入图片描述

欢迎关注博主 Mindtechnist 或加入【Linux C/C++/Python社区】一起探讨和分享Linux C/C++/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。


Linux磁盘分区文件挂载

    • 1. 添加新硬盘并进行分区
    • 2. 分区的格式化与挂载
    • 3. 文件系统


专栏:《Linux从小白到大神》 | 系统学习Linux开发、VIM/GCC/GDB/Make工具、Linux文件IO、进程管理、进程通信、多线程等,请关注专栏免费学习。


1. 添加新硬盘并进行分区

如果一个电脑上插了多块硬盘,开机时识别到的第一块硬盘称为SDA(C盘、D盘、E盘是同一块硬盘的不同分区),第二块称为SDB,以此类推,其中SD代表硬盘的接口,AB代表顺序。SDA1代表第一块硬盘的第一个分区。我们可以在虚拟机设置中添加硬盘(虚拟的),这就相当于我们在自己的物理机上插入了一块新的硬盘。
在这里插入图片描述
然后进入Linux可以通过命令来查看新增的磁盘,以及新增磁盘的分区情况
在这里插入图片描述

【本质探析】 磁盘是一种硬件级别的设备,而硬件是由操作系统去控制的,比如说我们使用vim编辑一个文件,我们在文件中输入内容,这些操作都是在内存中完成的,也就是说我们用vim编辑器写入的内容都是在内存中的,因为vim是一个应用程序,它只能操作文件级别的(在内存中)。当我们保存文件的时候,会由操作系统去把这个文件中的内容保存到磁盘中,对磁盘的操作一次是512byte,也就是说在硬件级别,一次性对硬盘的操作是512byte。而操作系统级别有一个块的概念,block,一个block大小是8个512byte,也就是说我们在文件中输入的内容,操作系统会以1个block的大小往磁盘中写数据,但是磁盘处理的时候是一个512byte一个512byte的写入的。存储级别分为:文件级别(比如文件夹修改、删除文件等)、块级别(比如一块未分区的裸盘)、对象级别(对象存储,比如百度网盘,我们只能上传下载文件,如果要想修改文件名只能下载到本地修改好再上传到网盘中,不能直接修改)。

我们可以对新加的硬盘SDB进行分区:
在这里插入图片描述
键入m进入帮助
在这里插入图片描述
我们可以在Command(m for help):的冒号后面输入这些命令来进行配置,比如输入n,按回车表示新建分区(一个硬盘最多只能有4个主分区)
在这里插入图片描述
按p可以打印出新建的分区信息
在这里插入图片描述
Boot栏如果有 * 表示这是启动盘,空白则表示普通盘的分区。我们可以看下原有的SDA盘信息,它就是启动盘
在这里插入图片描述
然后我们可以继续建第二个分区
在这里插入图片描述
我们最多可以建4个主分区,再建第5个就会提示要删除一个分区并添加一个扩展分区才能继续建。另外,再建最后一个主分区的时候,指定分区结束位置的时候可以不输入,表示把剩余空间都给这个分区。
在这里插入图片描述
如果想要创建更多的分区,可以使用d删除一个分区,然后创建一个扩展分区(命令n选择e),在扩展分区内可以创建更多的分区。
在这里插入图片描述
直接回车到最后,这时,相当于把剩余空间都分给扩展分区了
在这里插入图片描述
建完扩展分区后,就可以继续建新分区了,所建的新分区都是使用的扩展分区的空间,所以新建分区的大小之和不能超过扩展分区的大小。扩展分区是一个逻辑的概念,新建的分区都是扩展分区内的分区。
在这里插入图片描述
建完所有的分区后,需要保存并更新。保存命令是w,保存后执行partprobe命令来更新分区。

那么为什么磁盘主分区只能建4个呢,因为MBR中有64byte是磁盘分区信息,这64byte只能存4个主分区的信息,要想创建更多分区,只能创建一个扩展分区,这个扩展分区用来记录在扩展分区中创建的更多分区的信息

  • 主分区:记录分区信息,存储数据;
  • 扩展分区:只用来记录更多分区的信息,扩展分区是一个逻辑的概念,不能存储数据,它下面的分区才是真正用于存储的数据;

我们在建分区的时候可以不建主分区,但是只有主分区可以作为操作系统的启动分区,所以一般都是要建主分区的。

2. 分区的格式化与挂载

我们创建完分区保存后,可能会刷新不出来新建的分区信息,可以多刷新几次
在这里插入图片描述
新建的硬盘分区不能直接使用,需要先格式化,即格式化制作文件系统。使用命令mkfs(make filesystem)格式化。

mkfs.ext4 #ext4文件系统,centos 6 一般都用ext4

我们可以通过tab键查看当前Linux下可选的文件系统
在这里插入图片描述
Windows下的文件系统可以在属性中查看
在这里插入图片描述
我们通过mkfs命令把自己新建的所有分区都格式化

mkfs.ext4 /dev/sdb1
mkfs.ext4 /dev/sdb2
mkfs.ext4 /dev/sdb3
# mkfs.ext4 /dev/sdb4 #扩展分区不能格式化
mkfs.ext4 /dev/sdb5
mkfs.ext4 /dev/sdb6

扩展分区不能格式化,格式化扩展分区中的分区即可。另外,我们在使用分区的时候也要注意,扩展分区不能使用,应该使用它下面的分区。

格式化之后的硬盘分区就可以使用了,/dev/sdb1就是实际硬盘sdb1分区的一个映射,我们可以直接把这个设备当作硬盘。我们在使用磁盘分区的时候,需要把磁盘分区映射为一个目录,这样我们操作目录,在目录下创建文件就相当于往目录对应的磁盘分区上保存数据。这个由磁盘分区映射为目录的过程就叫做挂载,挂载要使用的命令是mount

mount /dev/sdb1 /sdb1/
#将磁盘分区/dev/sdb1映射为 /sdb1/ 目录
#就相当于把/dev/sdb1挂载到/sdb1/上了

使用df命令可以查看挂载信息
在这里插入图片描述
这时,我们只要在/sdb1/目录下写文件,就相当于把数据保存到/dev/sdb1磁盘分区中了。

3. 文件系统

上面再格式化的时候用到了ext4文件系统,像ext4、ext2等等文件系统都属于日志文件系统。日志文件系统是这样的,比如说我们上面挂载好的/dev/sdb1,它对应的目录是/sdb1/,当我们向这个目录中新建文件并写入内容的时候,它是分为两步完成数据存放的。首先,会把文件内容写到/dev/sdb1下的日志中,然后再从日志刷到硬盘。这么做的好处是,如果突然断电,数据可以在日志中进行恢复。ext4文件系统主要用于数据较少的情况,对于现在的海量数据,使用的是xfs文件系统。Windows系统用的是ntfs文件系统,如果需要在Linux下使用Windows的文件系统,需要安装相关的软件包。

实际上,挂载就是一个映射的过程,目录/sdb1/就是一个挂载点,通过这个挂载点就可以操作对应的磁盘分区,同时,要想向磁盘分区/dev/sdb1中读写数据,也只能通过挂载点/sdb1/来操作,因为我们不能直接通过软件操作磁盘。当然,我们也可以把一个磁盘分区挂载到多个目录上,这些目录对应的磁盘分区是同一个分区(同一块磁盘空间)。
在这里插入图片描述
因为这些目录对应的是同一块磁盘分区,所以操作某一个目录下的数据,会导致其它目录下的数据都会发生变化
在这里插入图片描述
既然有挂载,那么也可以卸载,卸载命令是umount

umount /dev/sdb1 #通过分区名卸载,它会一个一个的卸载
umount /test1/
umount -l /test1/ #强制卸载

当我们卸载掉目录后,再去查看目录,可能会出现这样的情况
在这里插入图片描述
/opt/被卸载后再去查看目录的内容,发现内容变了,这是因为当我们向一个目录中存储一个文件的时候,首先会查看当前目录/opt/有没有对应的源设备(磁盘分区),如果有就存储到这个分区,如果没有,那么会找/opt/的上一级目录,也就是/目录有没有对应的源设备,有的话就保存在根目录对应的源设备中。也就是说,目录实际上就是一个入口,我们在目录中存取的数据都是反映在磁盘上的,我们应该透过目录去看磁盘空间。对于我们用户来说,应该把磁盘分区看作文件系统,我们操作的都是文件系统,可以使用df命令来查看(df -h)。相关命令如下:

df #查看分区使用情况
mount #查看挂载参数
du -sh /etc/ #统计etc目录下文件大小总和

在这里插入图片描述
在这里插入图片描述



http://www.niftyadmin.cn/n/2834.html

相关文章

我的世界1.19.2最终优化模组推荐:这60个优化模组让你的体验更好

我的世界Fabric优化模组(无模组冲突) Minecraft Fabric Optimization Mod(No mod conflict) 以下模组均不在原版中添加一些奇怪的物品,都是优化或者实用类模组. The following mods do not add some strange item to the original,All are optimization or pract…

Mac OS中Git版本更新(亲测有效)

原本系统中装Git,但版本比较老,已经无法支持最新的IDEA 2022版本,那么如何将Git版本进行更新呢? 如果Git原来安装便是基于Homebrew,那么直接执行更新即可: brew upgrade git但如果去通过其他形式安装的&a…

字节一面被拒含泪离开,面试官:测试开发连这些都不懂,哭也没用

自我介绍 首先简单介绍一下自己的情况:本科山东大学,专业软件工程。没有任何项目经验,也没有任何科研竞赛经历,有参与过一篇SCI论文在投(不是第一作者,不过没啥用),当过几个学生干部…

在MobaXterm终端工具下使用服务器Ubuntu-20.04.5 LTS版本源码安装带有boost的Mysql8.0.20

在MobaXterm终端工具下使用服务器Ubuntu-20.04.5LTS版本源码安装带有boost的Mysql8.0.20源码安装与普通安装的区别是什么?Mysql源码下载Mysql源码安装Mysql调试使用注意事项由于课程作业的需求,才会产生这样奇怪的搭配。 原本的设想是,使用源…

哈夫曼树原理及Java编码实现

文章目录前言一、哈夫曼树原理二、哈夫曼编码(Java题解)参考资料前言 所有博客文件目录索引:博客目录索引(持续更新) 源代码:Gitee—Huffman.java、Github—Huffman.java 一、哈夫曼树原理 对于哈夫曼树的构造以及权值计算原理…

实验四 选择结构

第1关:奇数偶数判断 任务描述 本关任务:从键盘输入一个正整数,判断其奇偶性。 编程要求 根据提示,在右侧编辑器补充代码,从键盘输入一个正整数,判断其奇偶性。 测试说明 平台会对你编写的代码进行测试: 测试输入:89; 预期输出: 89 是奇数! 测试输入:90; 预期输…

第十三届蓝桥杯JavaB组省赛E题——求阶乘 (AC)

目录1.求阶乘1.问题描述2.输入格式3.输出格式4.样例输入5.样例输出6.数据范围7.原题链接2.解题思路3.AC_codeCJava1.求阶乘 1.问题描述 满足 N!N !N! 的末尾恰好有 KKK 个 0 的最小的 NNN 是多少? 如果这样的 NNN 不存在输出 −1-1−1 。 2.输入格式 一个整数 KKK 。 3.…

洛谷千题详解 | P1005 [NOIP2007 提高组] 矩阵取数游戏【C++、 Java、Python语言】

博主主页:Yu仙笙 专栏地址:洛谷千题详解 目录 题目描述 输入格式 输出格式 输入输出样例 解析: C源码: Java源码: Python源码: ----------------------------------------------------------------------…