如何在Linux上使用mkfs命令

您必须先创建文件系统,然后才能使用连接到Linux计算机的任何数据存储设备。了解如何使用mkfs和其他实用程序对所有类型的文件系统执行此操作。我们教你怎么做。

*mkfs制造文件系统

mkfs命令创建文件系统。在其他操作系统上,创建文件系统称为格式化。无论其名称如何,它都是准备分区以便其可以存储数据的进程。是的,分区需要一种存储文件的方式。但它还需要一种机制来存储这些文件的名称和位置,以及它们的元数据,如文件创建时间戳、文件修改时间戳、文件大小等。一旦mkfs构建了处理和存储文件元数据所需的框架,您就可以开始向分区添加文件。

语法非常简单。您只需告诉mkfs您想要在其上创建文件系统的设备分区,以及您想要什么类型的文件系统。在幕后,情况有点不同。一段时间以来,在大多数Linux发行版上,mkfs一直是mke2fs的包装器。mkfs命令调用mke2fs命令并将您指定的选项传递给它。可怜的老mke2fs做了所有的工作,但没有得到任何荣誉。

mkfs的语法已更新,旧格式已弃用。这两种形式都可以,但在本文中我们将使用现代风格。

文件系统的选择

现代使用mkfs的方式是键入“mkfs”。然后输入要创建的文件系统的名称。

要查看mkfs可以创建的文件系统,请键入“mkfs”,然后按Tab键两次。“mkfs”后面没有空格,只需按Tab键两次。

可用文件系统列表显示在终端窗口中。截图来自Ubuntu18.04LTS。其他发行版可能会提供或多或少的选择。“我们将详细介绍这些选项,并对每个选项进行简要描述。在简短地介绍了一下日记之后。

日志记录是文件系统中的一个重要概念。文件系统将挂起的文件写入记录到日志。写入每个文件时,日志都会更新,挂起的写入记录也会更新。这允许文件系统修复由于灾难性事件(如断电)而发生的损坏的、部分写入的文件。某些较旧的文件系统不支持日志记录。那些没有更新日志的磁盘写入频率较低,因为它们不需要更新日志。它们可能执行得更快,但由于文件写入中断,它们更容易受到损坏。

ext2:Linux的第一个文件系统是Minix文件系统。后来,它被有史以来第一个专门为Linux编写的文件系统所取代,即Ext。ext2是Ext的继任者。ext2不是日志文件系统。 ext3:这是ext2的继任者,可以将其视为具有日志功能的ext2,它可以保护您的文件系统免受崩溃和突然断电造成的数据损坏。 ext4:ext4是May Linux发行版的标准文件系统。它是一个可靠、可靠、可靠的文件系统。它具有减少文件碎片的特性,并且可以用于比ext3更大的驱动器、分区和文件。 bfs:这是Boot File System,它设计用于且只有一个任务:处理引导分区中的文件。手动创建引导文件系统的情况很少见。您的Linux安装过程将为您完成此任务。 FAT:文件分配表文件系统是由一个计算机业重量级组织为软盘设计的。它是在1977年推出的。您使用此非日志文件系统的唯一原因是为了与非Linux操作系统兼容。 NTFS:新技术文件系统是随Windows NT一起引入的Microsoft日志文件系统。它是FAT的继任者。您使用此文件系统的唯一原因是为了与非Linux操作系统兼容。 Minix:最初由Andrew S.Tanenbaum创建,作为教育辅助工具,Minix是一个“mini-Unix”操作系统。如今,它的目标是提供一个自我修复和容错的操作系统。Minix文件系统被设计为Unix文件系统的简化版本。如果您正在Linux计算机上进行交叉开发,并且目标是Minix平台,那么您可能会使用此文件系统。或者,由于其他原因,您可能需要与Minix计算机兼容。我对Linux计算机上这个文件系统的用例并不感兴趣,但它是可用的。 虚拟文件分配表(VFAT:Virtual File Allocation Table)是在Windows95中引入的,它取消了文件名的八个字符限制。最多255个字符的文件名成为可能。您使用此文件系统的唯一原因是为了与非Linux操作系统兼容。 CRAMFS:压缩ROM文件系统是专为嵌入式系统和专家只读用途设计的只读文件系统,例如在Linux计算机的引导过程中。通常,首先加载一个小的、瞬时的文件系统,以便可以启动引导进程,为挂载“真正的”引导系统做好准备。 MSDOS:微软磁盘操作系统的文件系统。它发布于1981年,是一个最基本的文件系统。第一个版本甚至没有目录。它在计算史上占有突出的地位,但除了与遗留系统兼容外,今天几乎没有理由使用它。

相关:您应该使用哪种Linux文件系统?

尝试文件系统的安全方法

在分区上创建文件系统会破坏可能已驻留在该分区上的任何数据。使用备用硬盘-甚至是备用计算机-是尝试创建和使用不同文件系统的最佳方式。当然,很多人并没有闲置的硬件等待试验。

但是,我们可以创建一个映像文件并在其中创建文件系统。一旦我们挂载了它,我们就可以像使用常规分区一样使用它。我们可以在不需要备用硬件的情况下探索和试验文件系统。“我们将使用dd命令创建我们的映像文件。

图像文件是通过获取源数据并将其放入图像中来创建的。“我们需要告诉dd从哪里获取其源数据。”我们将使用if(输入文件)选项告诉dd使用/dev/零作为输入数据源。这将是一串零。

Of(输出文件)选项允许我们提供图像文件的名称。我们称它为“howtogek.img”。

图像文件的大小由我们添加到其中的块的大小和数量决定。*我们使用bs(块大小)选项请求1 MB的块大小,使用Count t选项请求250个块。这将为我们提供一个250MB的文件系统。发出此命令时,请调整块数以满足您的需要和Linux计算机上的空闲容量。

dd if=/dev/zero of=~/howtogeek.img bs=1M count=250

该文件是为我们创建的,dd报告根据我们的请求为我们创建了250个块。

我们可以使用ls查看我们的图像文件:

ls -hl

它和预期的一样是250MB,这是令人鼓舞的。

创建文件系统

让我们选择要使用的文件系统。我们将回到过去,使用ext2,这是这个mkfs实现可以创建的最早的Ext版本。这是一个非日志文件系统,因此在没有其他地方备份的情况下,不要在其中存储任何宝贵的东西。我们使用mkfs命令的mkfs.ext2变体,并告诉它使用我们的图像文件作为目标。

mkfs.ext2 ~/howtogeek.img

将创建文件系统,并显示文件系统的一些详细信息。

正如您从突出显示的文本中看到的那样,mke2fs出现了。

现在,我们有了文件系统的容器-图像文件-在此场景中它代替了硬盘驱动器。在该容器内,我们创建了一个文件系统。现在我们需要挂载文件系统,以便可以使用它。

这是一个临时设置,因此我们将在/mnt中创建一个名为“geek”的挂载点。我们吃完后会把它移走的。

sudo mkdir /mnt/geek

现在我们可以挂载映像文件了。

sudo mount ~/howtogeek.img /mnt/geek

我们需要更改挂载点的文件所有权,以便拥有对它的读写访问权限。

sudo chown dave:users /mnt/geek/

现在我们应该可以使用我们的新文件系统了。让我们切换到文件系统,并将一些文件复制到其中。

cd /mnt/geekcp ~/Documents/Code/*.? .

这会将~/Documents/Code目录中具有单个字母扩展名的所有文件复制到我们的新文件系统中。让我们检查一下它们是否被复制。

ls

文件已复制,因此我们的文件系统已创建、挂载和使用。或者说我们是这么认为的。我们再检查一遍。从我们的主目录中,我们将卸载文件系统。注意:umount中只有一个“n”。

sudo umount /mnt/geek

现在,如果我们弹回/mnt/geek并检查文件,我们应该找不到任何文件,因为它们在我们的映像文件中,并且该文件已经卸载。

cd /mnt/geekls

相关:如何从Linux终端挂载和卸载存储设备

进一步探索

现在我们已经制定了流程,尝试另一个文件系统应该很容易。这次我们将使用Minix文件系统。在我们的主目录中,我们可以在现有的映像文件中创建一个新的文件系统。

小心!*如果镜像文件内的文件系统中有任何重要文件,请挂载镜像文件,并在创建新文件系统之前将其检索。

mkfs.minix ~/howtogeek.image

没有任何提示询问您“是否确定”,新文件系统将在旧文件系统上创建。“我们可以使用与以前完全相同的命令挂载我们的映像文件:

sudo mount ~/howtogeek.img /mnt/geek

让我们在/mnt/geek切换到新的文件系统,看看是否可以创建一个文件。

touch geek.txtls -ahl geek.txt

而且,就像这样简单快捷地,我们已经创建了一个新的文件系统,并挂载了它,我们就可以使用它了。

删除装载点

等你们都做完了,我们就可以移除“极客”挂载点了。为此,我们将使用rmdir:

cd /mntsudo rmdir geek

与火玩耍

与大多数事情一样,使用Linux时,您可以从实践中学习。某些命令的问题在于它们具有潜在的破坏性。两难境地是如何练习使用它们,而不会让您的系统或数据处于风险之中?

现在,您有了一种简单的方法,可以使用mkfs创建和试用文件系统,而不会影响您的计算机。

相关文章