没有分区号的mkfs可以吗?


10

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

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

并且我已经用命令格式化了:

   # mkfs.fat -n A /dev/sdb

而且效果很好。

但是之后,我浏览了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.

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


1
使用整个设备而不是单个分区没有问题。如果您想要3.5 G脂肪和4G ext3 / luckfs /其他任何东西,这将更有意义,那么您将不得不分开并格式化每个部分。
Archemar '17

1
如果将其放在期望存在分区表的设备中,则可能会要求您格式化...即使没有严格要求,通常最好有一个分区表。
frostschutz

1
手册页上说该设备通常是硬盘分区。整个硬盘也是合适的块设备。
Toby Speight

Answers:


10

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

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

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


8

如果您不打算在设备上使用多个文件系统,通常最好将文件系统放在整个设备上,而不是对分区进行分区和格式化。您只需要保持一致即可;因为您将文件系统放在sda而不是上 sda1,所以您也必须挂载sda,因为sda1根本不存在。

您所质疑的设备似乎是FAT格式的可移动驱动器:如果要与可能对文件系统如何安装有更多详细概念的嵌入式设备一起使用,则值得对其进行测试。实际上支持不带分区表的整个设备文件系统。(例如,相机往往会创建一个分区并格式化该分区;完全有可能宣布无分区存储卡不可用。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.