嵌入式 Linux 入门第九课,了解 linux 下的磁盘管理,学会挂载移动硬盘设备 ......矜辰所致
嵌入式 Linux 专栏更新到现在,我们都还没有碰过开发板,本来想着前面的讲完至少先碰一碰开发板,让我们知道我们最终的目的是在开发板上运行 Linux 系统。
但是考虑到接触开发板的之初,我们除了看一下开发板的启动流程,还得学一下如何烧录开发板,而对于初学者来说,相对简单的烧录方式就是使用 SD 卡,所以我们还是先来学习一下 Linux 下的磁盘管理。
但是 Linux 下的磁盘管理深入分析的话,其实相对复杂,内容也比较多,我们只在于了解一个基本概念,以及学会 U 盘的挂载方式。
那么本文目的就是以 了解一下 Linux 下的磁盘管理的基本概念,比如什么是挂载,以及如何挂载移动硬盘设备。
文章以 Ubuntu 系统为示例说明 。
❤️ 嵌入式 Linux 入门系列博文:
嵌入式 Linux 入门(一、Linux 基本介绍及文件结构)
嵌入式 Linux 入门(二、Linux 文件系统、文件类型及权限管理)
嵌入式 Linux 入门(三、Linux Shell 及常用命令说明)
嵌入式 Linux 入门(四、Linux 下的编辑器 — 让人爱恨交加的 vi )
嵌入式 Linux 入门(五、Shell 脚本编程上:认识 Shell 脚本)
嵌入式 Linux 入门(六、Shell 脚本编程下:Shell 脚本语法)
嵌入式 Linux 入门(七、Linux 下的环境变量)
嵌入式 Linux 入门(八、Linux 下的软件安装)
.
我是矜辰所致,一名摸爬滚打于物联网行业十多年的嵌入式工程师,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!
磁盘管理是什么?
我们在熟悉的 Windows 下面,硬盘一般都分为 C盘,D盘,E盘等等,我们可以直接通过计算机管理可以打开图形话界面的磁盘管理:
上图中 Window 系统中的这些C盘,D盘,是2个不同的分区,其实他们是一个硬盘。
我们把盘符和硬盘分区建立联系的过程,叫做挂载。
上面把硬盘的第一个分区挂载到 C 盘这个点,分区是操作系统的逻辑概念,事实上硬盘本身是没有分区的。
这么说也有点难以理解,因为在 Windows 下,不需要理解这些东西。
说明,初学者要明白 Linux 下磁盘管理,可能会有点绕,因为从来没有接触过的概念,但是有些东西总得记一记,没有为什么,它就是这么定的,你觉得陌生或者难以理解,是因为你初次接触,习惯熟悉了就好。
Linux下的磁盘管理,对于初学者作为了解,然后知道什么是挂载,学会如何挂载新的硬盘为主。
所谓磁盘管理,说直白点,无非就是对系统的硬盘进行一些分区处理,把不同的文件放入不同的分区方便管理。
先直接说一下本节重点需要了解的知识点:
Linux 系统中磁盘管理就是将硬盘通过挂载的方式挂载到 Linux 文件系统中。
Linux 磁盘必须挂载到目录树中的某个具体的目录上才能进行读写操作。
我们在创建虚拟机的时候,设置了虚拟机的硬盘大小:
那么其实这个硬盘就是我们虚拟机的磁盘了,那么对于这个磁盘在我们的系统中应该能够看见。
那么如何在 Ubuntu 中如何可以直观的看到这个硬盘信息呢?
Linux 下有多种方式可以查询硬盘的信息,我们这里列举一下:
df -h
命令lsblk
命令fdisk -l
命令sudo
打印硬盘信息:/proc/partitions
文件cat /proc/partitions
命令查看文件内容:上面我们介绍了 4 种查看硬盘的方式,我们都能够找到我们虚拟机开始设定的 100G 的磁盘空间。
在上面查看磁盘的时候,有很多 loop 设备,这些是什么呢,这里在网上找了一段说明,供大家参考,这里不过多说明:
我们上面已经在知道了如何查看我们的磁盘,而且在第一张图我们可以看到,有一个挂载点的概念:
就是前面提到的:Linux 磁盘分必须挂载到目录树中的某个具体的目录上才能进行读写操作,这一点记住就行了。
Linux系统的挂载有自动和手动。如果是系统安装的时候创建的分区以后都会自动挂载,而系统运行中临时添加的光盘、U盘、移动硬盘等需要手动挂载。
每次安装系统的时候我们都会进行分区,Linux下磁盘分区和目录的关系如下:
对于普通用户,我们并不需要关心分区、盘符,只需要了解以前我们讲过的文件系统结构,哪个目录下面存了什么,所以本文并不准备详细说明 Linux 分区原理,主要学习如何挂载一个临时添加的 U 盘。
但是对于Linux 的分区原理,我找了几篇博文,有需要了解的可自行查看:
Linux分区原理及根目录的介绍
linux文件系统简介
Linux 磁盘管理常用有三个命令,在上面的文章我们查看磁盘的时候已经使用过了两个:df
、 fdisk
。
还有一个就是:du
df(英文全称:disk full):列出文件系统的整体磁盘使用量
du(英文全称:disk used):检查磁盘空间使用量
fdisk:用于磁盘分区
这里命令相关我们挂载 U 盘其实用不到太深入,这里暂时也放一个链接地址: Linux 磁盘管理
需要学习详细的这几个命令,可以在上面链接查看学习,下面在介绍分区的时候也会有示例说明。
上面一节简单的描述了一下 Linux 下的磁盘管理相关知识,但是本文我们重点要学习的还是移动盘的操作,比如挂载与分区,这个移动盘包括,U盘,移动硬盘等。
我们前面说了 Linux 要读取磁盘数据,首先必须要挂载,比如在服务器新增加硬盘的时候,需要使用到这个知识,才能把新的硬盘使用上。
这里我们使用 U 盘举个例子。
但是要注意,U盘的文件系统必须为 FAT32 格式,而不能是 windows 下面的 NTFS 格式,在 Linux 下并不识别:
测试所用的 U 盘,我们可以在 windows 下进行格式化,选择为 FAT32 的文件系统:
格式完毕我们随便放一下文件到里面进行测试,在 windows 下的看的效果如下:
在用 U 盘连接到虚拟机之前,我们先来看看虚拟机中的磁盘,在前面查询硬盘信息的时候,我们已经知道原本的磁盘名字为 sda ,只有一个分区为 sda1 ,我们其实可以直接在 /dev 目录下查看有哪些磁盘:
接下来在 VMware 软件操作,使得 U 盘连接至虚拟机,我家里这个版本的 VMware 在右上角,但是大多数人用的版本可能在右下角,这个自己找找就能找到:
公司电脑更新一下文章,右下角的情况:
U盘接进来以后,我们再次查看系统磁盘:
所以 sdb 肯定就是我们这个U盘了,在 Linux 中这个磁盘是一个设备文件,他可不能直接 cd 进去看内容的,我们要访问这个 U 盘,就得挂载,
但是在 Linux 系统中,U 盘会自动挂载,图形化界面可以看到 U 盘标识,打开就能访问。我们需要先看一下他是否挂载,然后删除,自己再新建一个文件夹进行挂载。
我们通过上文介绍的df -h
命令,可以查询一下 Ubuntu 自动把 U 盘挂载的位置:
我们进入到目录查看一下,果然在这里可以看到信息:
本节就讲一下几个需要掌握但是也相对简单的命令,就是使用mount
命令完成磁盘挂载与卸载,直接用示例说明。
卸载:
umount <目录路径>
我们先把上面自动挂载的文件卸载:
然后我们来挂载,挂载需要建立一个挂载点,就是一个文件夹,我们依然在 /media/qzh 目录下面新建一个挂载点,我们换一个名字:
挂载:
mount <磁盘文件> <挂载点路径>
mount /dev/sdb1 /media/qzh/mydisk
现在目录中为空,我们使用挂载命令操作,把 U 盘挂载上去:
成功挂载,但是有一个问题,中文乱码?
需要加一个参数:mount -o iocharset=utf8
,操作如下图:
前面我们就介绍过 fdisk
, fdisk 是 Linux 的磁盘分区表操作工具。
fdisk [-l] <磁盘文件>
我们直接通过实例说明,分区之前得卸载:
我们使用这个工具的时候,会有帮助提示,所有的操作其实根据版主提示一步一步进行即可,比如我们先删除分区。
这里提一下,删除分区了文件当然是没有了,虽然没格式化之前可能有办法恢复,但是我们在合理就当做没有了,删除分区操作:
下面我们开始对U盘进行分区:
我们可以查看一下结果:
格式化命令: mkfs
mkfs [-t 文件系统格式] <磁盘文件>
mkfs [options] [-t <type>] [fs-options] <device> [<size>]
mkfs
命令后面 -t 指定格式化的文件格式,那么这里有个问题,我们怎么知道这个命令支持哪些文件格式呢?
我们可以使用 mkfs[Tab][Tab]
命令,就是输入mkfs 后连续按下两次 Tab 按键,终端就会显示所支持的文件类型:
在上图中 vfat 就是 FAT32 格式的文件系统,我们为了能在 windows 下也能识别,我们格式化为 vfat 文件系统。
格式化好了以后,U盘就可以使用了,我们可以重新挂载使用,或者重启拔插一下,可以在 ubuntu 下面看到一个 U 盘变成了 2个:
我们断开U盘与虚拟机的链接,在 Windows 下,也可以看到 2 个分区了:
但是这里额外提一下,传统U盘主控,windows不会识别第二分区:
到这里,我们学会了在 Linux 下的磁盘分区以及格式化。
本文讲述了 Linux 下的磁盘管理相关内容,有一个重要的点必须要明白: Linux 磁盘必须挂载到目录树中的某个具体的目录上才能进行读写操作。
然后我们学习了如何在 Linux 下面磁盘的挂载、分区以及格式化的方法,3个命令mount
、 fdisk
和mkfs
。
下一篇文章,我们应该就要开始使用我们的开发板了,体验一下开发板上的 Linux 是什么一个样子。
好了,本文就到这里,谢谢大家!