欢迎光临散文网 会员登陆 & 注册

使用fdisk、mkfs工具给磁盘分区并创建文件系统

2021-02-02 19:50 作者:28283844972_bili  | 我要投稿

前一篇文章《Raspberry Pi挂载可移动存储设备》(CV9587685)中有说过要用单独的篇幅,来分享在Raspberry pi os等类Unix操作系统中给存储设备分区和创建文件系统的实用操作。自己给自己挖的坑,还是要老老实实地填上!

相比于在Windows中,给磁盘分区和创建文件系统一气呵成式的保姆级服务,命令行环境下的Linux需要分为两步走,磁盘分区创建文件系统是单独进行的两种操作。虽然大部分图形化界面的Linux发行版自带图形化磁盘工具,使得在Linux环境下分区和创建文件系统也能像Windows那样一步到位。遗憾的是,有时摆在你面前的很有可能是命令行环境下的Linux,所以有必要学习并掌握这种看上去有些繁琐且过时的技能,幸运的话,这将有助于你更好地理解《操作系统原理》这门课程中的相关理论。

以Raspberry pi os lite环境为例,需要使用到的命令工具有fdisk mkfs,分别用于给磁盘分区和在创建好的磁盘分区上建立文件系统。任何涉及对磁盘操作之前,请提前备份数据或确保数据已无使用价值!!!

第一步,磁盘分区,在进行此项操作之前请确认你的待操作目标磁盘,核对磁盘信息是否有误?并再三确认磁盘原有数据是否已备份?是否需要给目标磁盘分区?是否已将磁盘从Linux系统中卸载?(给磁盘分区和建立文件系统之前,请务必确保磁盘已从系统中卸载完成,以下操作均在磁盘尚未挂载情况的下进行)

模拟场景:假定需要给该磁盘(sdb)重新分区

使用 sudo fdisk /dev/sdb 命令启动fdisk工具,如果一切顺利的话,将会进入工具的交互界面:

看到工具欢迎界面英文提示了吗?直到你决定将所有的修改写入磁盘之前,这些修改内容也仅仅是留存在内存当中,所以请小心使用写入命令!

初来乍到,迟迟不知道如何迈出下一步该怎么办呢?试试看 m 帮助命令吧:

输出了一长串的帮助信息,主要是交互界面下各种命令的功能解释

这么多的帮助信息,更何况还都是英文,没个英语十级也看不下去呀![doge]

其实,主要看两大板块的命令就能基本满足日常磁盘分区操作了,Generic(通用命令)Save & Exit(保存与退出命令):

通用命令重点理解:d n p t 命令

通用操作命令中最重要的无非就是“增删改查”操作,d 删除一个磁盘分区,n 新增一个磁盘分区,p 打印磁盘当前分区信息,t 更改一个已有磁盘分区的类型。

保存与退出重点理解:w q 命令的区别

保存与退出区别在于,w 将分区表写入磁盘后退出,q 不保存修改并退出。

遇事不决就先探明一下磁盘当前分区情况:

模拟场景:磁盘当前已分配一个Linux类型分区

假定我需要重新分配磁盘分区,丢弃原有分区。如果磁盘空间已完全分配,请先使用 d 命令删除原先分区后释放磁盘部分空间;否则直接使用 n 命令新增磁盘分区:

还记得我之前说过,在将修改内容写入磁盘之前,这些操作仅仅是被记录在内存中的吗?所以你现在依旧拥有反悔的机会!

可以看到,原先磁盘中的仅有的一个分区已经被删除,再次查看磁盘当前分区信息用以验证。如果你的磁盘上原本含有多个分区,在使用 d 命令后,通过交互界面还会让你选择待删除的分区编号;当且仅当只存在一个待删除分区时,使用 d 命令才会自动默认删除仅有的分区。

重新创建一个磁盘分区,使用 n 命令:

进入n命令下的交互界面

选择创建的是一个主分区,还是扩展分区(针对MBR分区表应该都不陌生,MBR分区表最多创建4个主分区或3个主分区+1个扩展分区,扩展分区内部可创建若干逻辑分区),默认创建一个主分区,请按需选择。如果无特殊需求,直接回车:

分配分区编号

选择分区编号,默认分配编号视磁盘当前分区情况而定,若无特殊需求,直接回车:

选择分区起始扇区号

选择分区起始扇区号,默认起始扇区号视磁盘当前分区情况而定,若无特殊需求,直接回车:

选择分区末尾扇区号

选择分区末尾扇区号,默认结束扇区号为最大可分配扇区号,除了通过指定扇区号可以确定分区的末尾扇区,还可以指定大小决定分区结束位置,单位可以是KiB、MiB、GiB、TiB、PiB,形如 +8G ,表示从分区起始扇区开始算起的8GiB处作为分区结束位置:

创建了一个空间大小为8GiB的Linux类型的分区

至此,在磁盘中新创建了一个分区,默认分区类型为Linux。如果我想要创建一个其他类型的分区该怎么办呢?比如说FAT32类型的分区,又或是Swap分区(Linux交换分区,用于内存数据交换并暂时存放内存中长时间未曾访问的数据,以腾出更多内存空间,可以参考这篇文章CV9286537)又该如何创建?可以使用 t 命令修改已存在分区类型:

模拟场景:磁盘中仅有一个分区,默认修改此分区类型

此时需要输入待修改类型的 Hex code(十六进制代码),巧了,类型代码什么的我一概不知[doge],输入 L 命令列出全部类型的代码:

分区类型十六进制代码

FAT32分区类型代码 c ,Linux分区类型代码 83 等等,找到符合预期目标的代码:

将Linux类型的分区修改为FAT32类型分区

至此,修改新创建分区类型的工作也完成了,如果到此为止所有的分区工作都已完成,使用 w 命令将最终修改后的分区表写入到磁盘中吧,因为我用来演示的磁盘中还有其他重要数据,所以就使用 q 丢弃修改并退出工具交互界面了[doge]

应该会有一些思维敏锐的朋友发现我们所有的操作都是针对MBR格式的分区表进行修改,如果你已经提前预习过MBR分区表的特性,可能会觉得在给大容量硬盘分区(>2TiB)或者需要在一块磁盘上分配大于4个主分区的时候,MBR分区表并不能得心应手的帮助你完成目标。在使用fdisk工具的时候,发现还有一大类命令是用于创建不同类型分区表:

创建一个新的分区表,其中就包含GPT类型分区表和DOS(MBR)类型分区表

关于GPT分区表相比于MBR分区表的优势与特性,可以自行百度或谷歌,fdisk更加专注于对MBR分区表的操作,如果需要对GPT分区表进行操作,可以使用与之类似的命令工具gdisk,操作命令和交互界面几乎和fdisk一致:

fdisk与gdisk命令工具在功能上的区别

终于到第二步,在新创建的磁盘分区上建立文件系统了。单独只有一个磁盘分区是无法在上面进行数据读写操作的,如果说,创建磁盘分区决定了数据在磁盘中的物理存储形式,那么在磁盘分区中建立文件系统则是决定了数据在磁盘分区中的逻辑存储形式

建立文件系统使用到的命令工具是mkfs(make a Linux file system):

该工具是用于在磁盘分区上创建一个Linux文件系统

其实不仅仅是Linux文件系统,常见的FAT32文件系统也是可以使用这个工具建立的,参见mkfs的帮助文档 man mkfs

在你遇到陌生命令的情况下,请经常翻阅帮助文档

mkfs命令格式可以是 sudo mkfs -t <文件系统类型> <磁盘分区块文件路径>,实际上mkfs只是众多命令的前缀,可以使用 sudo mkfs.fstype <磁盘分区块文件路径> 等效替换,从帮助文档的说明中可以得知。

可等效替代mkfs的命令,直接指明待建立的文件系统类型

其中的mkfs.vfat命令是不是很眼熟?[doge]

使用 sudo mkfs -t vfat /dev/sdb1 或 sudo mkfs.vfat /dev/sdb1 命令即可对新建磁盘分区建立FAT32文件系统。因为用于演示的磁盘中有重要数据,这里我就不在演示了,命令一旦执行,新的文件系统将会建立。

至此,在Linux命令行环境下使用fdisk和mkfs工具分别创建磁盘分区和建立文件系统的工作全部完成!适当查阅在线帮助文档可以让你在使用Linux的同时如虎添翼;试着习惯纯英文环境下的Linux,这将有助于你的英语水平快速提升![doge]

另外,文章中出现的各类疏漏与错误欢迎在评论区批评指正,互相分享学习经验。

使用fdisk、mkfs工具给磁盘分区并创建文件系统的评论 (共 条)

分享到微博请遵守国家法律