没有分区号的 mkfs 可以吗?

Ala*_*ler 15 linux filesystems mkfs

我有一个笔式驱动器和一个分区:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda      8:0    0 931.5G  0 disk 
??sda1   8:1    0 931.5G  0 part /
sdb      8:16   1   7.5G  0 disk 
??sdb1   8:17   1   7.5G  0 part
Run Code Online (Sandbox Code Playgroud)

我已经用命令格式化:

   # mkfs.fat -n A /dev/sdb
Run Code Online (Sandbox Code Playgroud)

它工作正常。

但在那之后,我浏览了 mkfs 的手册页:

   mkfs is used to build a Linux filesystem on a device,  usually  a  hard
   disk  partition.   The  device argument is either the device name (e.g.
   /dev/hda1, /dev/sdb2),  or  a  regular  file  that  shall  contain  the
   filesystem.   The  size argument is the number of blocks to be used for
   the filesystem.
Run Code Online (Sandbox Code Playgroud)

它说mkfs应该使用分区号。我的问题是为什么我的操作没有错误提示?

Gil*_*il' 17

在整个磁盘而不是分区上创建文件系统是可能的,但不寻常。该文档仅明确提及分区,因为这是最常见的情况(它确实说通常)。您可以在任何足以充当固定大小文件的文件系统上创建文件系统,即如果您在某个位置写入数据并从同一位置读回,那么您将获得相同的数据。这包括整个磁盘、磁盘分区和其他类型的块设备,以及常规文件(磁盘映像)。

完成后mkfs.fat -n A /dev/sdb,该磁盘上不再有分区。请注意,内核仍然认为磁盘有分区,因为它会将分区表缓存在内存中。但是你不应该再尝试使用/dev/sdb1了,因为它已经不存在了;写入它会破坏您在其上创建的文件系统,/dev/sdb因为它/dev/sdb1是其中的一部分/dev/sdb(除了开头的几百字节之外的所有内容)。partprobe以 root 身份运行命令告诉内核重新读取分区表。

虽然可以在整个磁盘上创建文件系统,但我不建议这样做。某些操作系统可能会遇到问题(我认为 Windows 可以应对,但某些设备(如相机)可能不会),并且您失去了创建其他分区的可能性。另请参阅无分区文件系统的优点


dha*_*hag 10

如果您不打算在您的设备上拥有多个文件系统,通常可以将文件系统放在整个设备上,而不是对分区进行分区和格式化。你只需要保持一致;由于您将文件系统放在sda而不是 上 sda1,因此您也必须安装sda,因为sda1根本不存在。

您问题中的设备似乎是一个 FAT 格式的可移动驱动器:如果它将与嵌入式设备一起使用,这些设备可能对如何挂载文件系统有或多或少的详细概念,则可能值得测试它们在事实上支持没有分区表的整个设备文件系统。(例如,相机倾向于创建单个分区并对其进行格式化;他们完全有可能宣布无分区存储卡无法使用。)