写点什么

嵌入式 Linux 入门(九、Linux 下的磁盘管理)

作者:矜辰所致
  • 2022-10-30
    江苏
  • 本文字数:3988 字

    阅读完需:约 13 分钟

嵌入式 Linux 入门(九、Linux 下的磁盘管理)
嵌入式 Linux 入门第九课,了解 linux 下的磁盘管理,学会挂载移动硬盘设备  ......矜辰所致
复制代码

前言

嵌入式 Linux 专栏更新到现在,我们都还没有碰过开发板,本来想着前面的讲完至少先碰一碰开发板,让我们知道我们最终的目的是在开发板上运行 Linux 系统。


但是考虑到接触开发板的之初,我们除了看一下开发板的启动流程,还得学一下如何烧录开发板,而对于初学者来说,相对简单的烧录方式就是使用 SD 卡,所以我们还是先来学习一下 Linux 下的磁盘管理。


但是 Linux 下的磁盘管理深入分析的话,其实相对复杂,内容也比较多,我们只在于了解一个基本概念,以及学会 U 盘的挂载方式。


那么本文目的就是以 了解一下 Linux 下的磁盘管理的基本概念,比如什么是挂载,以及如何挂载移动硬盘设备。


文章以 Ubuntu 系统为示例说明 。


嵌入式 Linux 入门系列博文:

嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)

https://xie.infoq.cn/article/1adbc03be480d8203f8b1ed4a

嵌入式 Linux 入门(二、Linux 文件系统、文件类型及权限管理)

https://xie.infoq.cn/article/4d2e926fda47f2eff019ae0e4

嵌入式 Linux 入门(三、Linux Shell 及常用命令说明)

https://xie.infoq.cn/article/b25c452df449abc1806ba446a

嵌入式 Linux 入门(四、Linux 下的编辑器 — 让人爱恨交加的 vi )

https://xie.infoq.cn/article/d87223a72889208660ecbec17

嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)

https://xie.infoq.cn/article/16e4569fa32dce00a39eaddaf

嵌入式 Linux 入门(六、Shell 脚本编程下:Shell 脚本语法)

https://xie.infoq.cn/article/1e982eb296024089baf5c1ca0

嵌入式 Linux 入门(七、Linux 下的环境变量)

https://xie.infoq.cn/article/2204ed2ccaf662eccba3024d8

嵌入式 Linux 入门(八、Linux 下的软件安装)

https://xie.infoq.cn/article/14c3d085726f5faef8f785d90

我是矜辰所致,全网同名,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!


一、磁盘管理简介

磁盘管理是什么?


我们在熟悉的 Windows 下面,硬盘一般都分为 C 盘,D 盘,E 盘等等,我们可以直接通过计算机管理可以打开图形话界面的磁盘管理:



上图中 Window 系统中的这些 C 盘,D 盘,是 2 个不同的分区,其实他们是一个硬盘。


我们把盘符和硬盘分区建立联系的过程,叫做挂载。


上面把硬盘的第一个分区挂载到 C 盘这个点,分区是操作系统的逻辑概念,事实上硬盘本身是没有分区的。


这么说也有点难以理解,因为在 Windows 下,不需要理解这些东西。


说明,初学者要明白 Linux 下磁盘管理,可能会有点绕,因为从来没有接触过的概念,但是有些东西总得记一记,没有为什么,它就是这么定的,你觉得陌生或者难以理解,是因为你初次接触,习惯熟悉了就好。

Linux 下的磁盘管理,对于初学者作为了解,然后知道什么是挂载,学会如何挂载新的硬盘为主。

1.1 Linux 下的磁盘管理

所谓磁盘管理,说直白点,无非就是对系统的硬盘进行一些分区处理,把不同的文件放入不同的分区方便管理。


先直接说一下本节重点需要了解的知识点:


Linux 系统中磁盘管理就是将硬盘通过挂载的方式挂载到 Linux 文件系统中。


Linux 磁盘必须挂载到目录树中的某个具体的目录上才能进行读写操作。


我们在创建虚拟机的时候,设置了虚拟机的硬盘大小:



那么其实这个硬盘就是我们虚拟机的磁盘了,那么对于这个磁盘在我们的系统中应该能够看见。


那么如何在 Ubuntu 中如何可以直观的看到这个硬盘信息呢?

1.2 Linux 查询硬盘信息

Linux 下有多种方式可以查询硬盘的信息,我们这里列举一下:


1、df -h命令

使用此以可读的格式输出硬盘使用状况:


2、lsblk命令

只列出硬盘,不列出分区信息:


3、fdisk -l命令

使用命令前面需要加 sudo 打印硬盘信息:

4、查看/proc/partitions文件

使用cat /proc/partitions命令查看文件内容:


上面我们介绍了 4 种查看硬盘的方式,我们都能够找到我们虚拟机开始设定的 100G 的磁盘空间。


在上面查看磁盘的时候,有很多 loop 设备,这些是什么呢,这里在网上找了一段说明,供大家参考,这里不过多说明:



1.3 根目录与分区

我们上面已经在知道了如何查看我们的磁盘,而且在第一张图我们可以看到,有一个挂载点的概念:



就是前面提到的:Linux 磁盘分必须挂载到目录树中的某个具体的目录上才能进行读写操作,这一点记住就行了。


Linux 系统的挂载有自动和手动。如果是系统安装的时候创建的分区以后都会自动挂载,而系统运行中临时添加的光盘、U 盘、移动硬盘等需要手动挂载。


每次安装系统的时候我们都会进行分区,Linux 下磁盘分区和目录的关系如下:


  • 任何一个分区都必须挂载到某个目录上。

  • 目录是逻辑上的区分。分区是物理上的区分。

  • 磁盘 Linux 分区都必须挂载到目录树中的某个具体的目录上才能进行读写操作。

  • 根目录是所有 Linux 的文件和目录所在的地方,需要挂载上一个磁盘分区。


对于普通用户,我们并不需要关心分区、盘符,只需要了解以前我们讲过的文件系统结构,哪个目录下面存了什么,所以本文并不准备详细说明 Linux 分区原理,主要学习如何挂载一个临时添加的 U 盘。


但是对于 Linux 的分区原理,大家感兴趣的可自行上网查看。


1.4 磁盘管理相关命令

Linux 磁盘管理常用有三个命令,在上面的文章我们查看磁盘的时候已经使用过了两个:dffdisk


还有一个就是:du


df(英文全称:disk full):列出文件系统的整体磁盘使用量du(英文全称:disk used):检查磁盘空间使用量fdisk:用于磁盘分区
复制代码


这里命令相关我们挂载 U 盘其实用不到太深入,需要学习详细的这几个命令,可以自行查找学习,下面在介绍分区的时候也会有示例说明。

二、磁盘的操作

上面一节简单的描述了一下 Linux 下的磁盘管理相关知识,但是本文我们重点要学习的还是移动盘的操作,比如挂载与分区,这个移动盘包括,U 盘,移动硬盘等。

2.1 磁盘的挂载

我们前面说了 Linux 要读取磁盘数据,首先必须要挂载,比如在服务器新增加硬盘的时候,需要使用到这个知识,才能把新的硬盘使用上。


这里我们使用 U 盘举个例子。

2.1.1 磁盘的文件系统

但是要注意,U 盘的文件系统必须为 FAT32 格式,而不能是 windows 下面的 NTFS 格式,在 Linux 下并不识别:



测试所用的 U 盘,我们可以在 windows 下进行格式化,选择为 FAT32 的文件系统:



格式完毕我们随便放一下文件到里面进行测试,在 windows 下的看的效果如下:



2.1.2 磁盘在 Linux 系统位置

在用 U 盘连接到虚拟机之前,我们先来看看虚拟机中的磁盘,在前面查询硬盘信息的时候,我们已经知道原本的磁盘名字为 sda ,只有一个分区为 sda1 ,我们其实可以直接在 /dev 目录下查看有哪些磁盘:



接下来在 VMware 软件操作,使得 U 盘连接至虚拟机,我家里这个版本的 VMware 在右上角,但是大多数人用的版本可能在右下角,这个自己找找就能找到:



公司电脑更新一下文章,右下角的情况:



U 盘接进来以后,我们再次查看系统磁盘:



所以 sdb 肯定就是我们这个 U 盘了,在 Linux 中这个磁盘是一个设备文件,他可不能直接 cd 进去看内容的,我们要访问这个 U 盘,就得挂载,


但是在 Linux 系统中,U 盘会自动挂载,图形化界面可以看到 U 盘标识,打开就能访问。我们需要先看一下他是否挂载,然后删除,自己再新建一个文件夹进行挂载。


我们通过上文介绍的df -h命令,可以查询一下 Ubuntu 自动把 U 盘挂载的位置:



我们进入到目录查看一下,果然在这里可以看到信息:



2.1.3 磁盘挂载与卸载操作

本节就讲一下几个需要掌握但是也相对简单的命令,就是使用mount命令完成磁盘挂载与卸载,直接用示例说明。


卸载:


  umount <目录路径>
复制代码


我们先把上面自动挂载的文件卸载:



然后我们来挂载,挂载需要建立一个挂载点,就是一个文件夹,我们依然在 /media/qzh 目录下面新建一个挂载点,我们换一个名字:



挂载:


mount <磁盘文件>  <挂载点路径> mount /dev/sdb1  /media/qzh/mydisk
复制代码


现在目录中为空,我们使用挂载命令操作,把 U 盘挂载上去:



成功挂载,但是有一个问题,中文乱码?


需要加一个参数:mount -o iocharset=utf8 ,操作如下图:



2.2 磁盘的分区

前面我们就介绍过 fdisk, fdisk 是 Linux 的磁盘分区表操作工具。


fdisk [-l] <磁盘文件>
复制代码


我们直接通过实例说明,分区之前得卸载:



我们使用这个工具的时候,会有帮助提示,所有的操作其实根据版主提示一步一步进行即可,比如我们先删除分区。


这里提一下,删除分区了文件当然是没有了,虽然没格式化之前可能有办法恢复,但是我们在合理就当做没有了,删除分区操作:



下面我们开始对 U 盘进行分区:



我们可以查看一下结果:



2.3 磁盘的格式化

格式化命令: mkfs


mkfs [-t 文件系统格式] <磁盘文件>mkfs [options] [-t <type>] [fs-options] <device> [<size>]
复制代码


mkfs 命令后面 -t 指定格式化的文件格式,那么这里有个问题,我们怎么知道这个命令支持哪些文件格式呢?

2.3.1 支持的文件系统类型

我们可以使用 mkfs[Tab][Tab]命令,就是输入 mkfs 后连续按下两次 Tab 按键,终端就会显示所支持的文件类型:



在上图中 vfat 就是 FAT32 格式的文件系统,我们为了能在 windows 下也能识别,我们格式化为 vfat 文件系统。

2.3.2 格式化

操作如下图:



格式化好了以后,U 盘就可以使用了,我们可以重新挂载使用,或者重启拔插一下,可以在 ubuntu 下面看到一个 U 盘变成了 2 个:



我们断开 U 盘与虚拟机的链接,在 Windows 下,也可以看到 2 个分区了:



但是这里额外提一下,传统 U 盘主控,windows 不会识别第二分区:



到这里,我们学会了在 Linux 下的磁盘分区以及格式化。

结语

本文讲述了 Linux 下的磁盘管理相关内容,有一个重要的点必须要明白: Linux 磁盘必须挂载到目录树中的某个具体的目录上才能进行读写操作。


然后我们学习了如何在 Linux 下面磁盘的挂载、分区以及格式化的方法,3 个命令mountfdiskmkfs


下一篇文章,我们应该就要开始使用我们的开发板了,体验一下开发板上的 Linux 是什么一个样子。


好了,本文就到这里,谢谢大家!

发布于: 刚刚阅读数: 4
用户头像

矜辰所致

关注

CSDN、知乎、微信公众号: 矜辰所致 2022-08-02 加入

不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开! 为了活下去的嵌入式工程师,画画板子,敲敲代码,玩玩RTOS,搞搞Linux ...

评论

发布
暂无评论
嵌入式 Linux 入门(九、Linux 下的磁盘管理)_Linux_矜辰所致_InfoQ写作社区