如果我想将一些文件复制到外部硬盘驱动器并做而不是,物理上会发生什么?或者当通过用零覆盖驱动器来擦除驱动器时,和之间有区别吗?AFAIK,意思是“磁盘”和它上面的第一个分区。从计算机科学的角度来看,两者似乎都表示文件(或 OOP 术语中的对象),但我并不真正理解从物理角度来看有什么区别。cp -a [file] /dev/sdX
cp -a [file] /dev/sdX1
dd if=/dev/zero of=/dev/sdX
dd if=/dev/zero of=/dev/sdX1
sdX
sdX1
sdX
sdX1
PS.:这个问题可能类似于以 FAT 格式化的驱动器与以 Ext4 格式化的驱动器有何不同的问题。我的猜测是 99,99% 是相同的,它只是一个不同的小文件(分区表?)(格式化驱动器通常只需要几秒钟)。所以操作系统(?)将读取格式化信息,然后根据特定于该格式的协议继续写入数据。
假设您具有适当的权限,则这两个命令都不会以易于检索的方式写入文件。
这两个命令都会导致 的内容
file
直接写入 LBA(又名扇区)并绕过任何文件系统约定。没有文件名、没有文件大小、没有所有者、没有创建时间、没有权限、没有任何类型的属性与写入的数据相关联。
第一个带有目标/dev/sd X 的命令将从物理驱动器的第一个 LBA 开始顺序写入文件内容。这会破坏 MBR(主引导记录)和分区表,并使所有文件系统的内容无法访问。
第二个命令,目标为/dev/sd X 1,将从分区号 1 的第一个 LBA 开始顺序写入文件内容。这将破坏分区的引导扇区,并可能损坏该分区的文件系统,使文件系统(及其所有文件)无法访问。
换句话说,这两个命令之间的主要区别在于写入开始的 LBA(又名扇区号)。
第一个带有目标/dev/sd X 的命令将完全清零驱动器的所有 LBA。任何信息都将不再可读(没有一些据称非凡的技术)。
第二个命令,带有目标/dev/sd X 1,会将分区号 1 的所有 LBA 清零。尽管分区的定义仍然存在,但该分区(及其文件)的文件系统已被覆盖并且没有更长的访问时间。此分区外的 LBA 不受影响。
它指的是驱动器。
SSD 和闪存驱动器没有“磁盘”。
并非所有操作系统都将设备视为文件(例如 MS Windows)。
这些设备名称(实际上是设备节点)代表存储设备的顶级逻辑布局。IBM PC 和 MS DOS 建立的约定是将 PC 大容量存储设备划分为逻辑分区。(软盘,又名软盘,不受此约定的约束。)
每个分区由起始 LBA(也称为扇区号)和结束 LBA 定义,因此具有大小(LBA 或扇区的数量)。当分区被格式化时(对于那个文件系统),每个分区也被分配了一个文件系统类型的识别码。
根据分区方案(例如 MSDOS 或 GPT),有可选的标志和(卷)名称。
整个驱动器由/dev/sd X 设备节点表示。除了驱动器大小(即 LBA 的数量)和分区表(如果有)之外,该设备没有任何其他用户关注的显着属性。
不,那些不是类似的。
文件系统存在于驱动器分区之上的抽象层。
文件系统的复杂性比分区方案高几个数量级。您还选择了两个在复杂性和功能上完全相反的文件系统。
你的猜测不正确。计算机执行一个程序所花费的持续时间并不是衡量该操作复杂性的可靠标准。
ext4 文件系统具有文件所有权和权限。脂肪没有。
ext4 文件系统具有日志功能,可确保断电后的稳健性。脂肪没有。
还有更多的差异。
附录
坚持比较不同的文件系统类似于驱动器与分区是愚蠢的。驱动器中包含一个分区;没有驱动器,分区就不能存在。
而文件系统是互斥的,尤其是 FAT 与 ext4(尽管 ext2/ext3/ext4 文件系统之间的关系是规则的例外)。一个分区中只能存在一个文件系统。您可以安装其中一个文件系统,然后忘记并且永远不要使用另一个。
您试图将注意力转移到存储在介质上的静态信息(即分区表和您认为存在于某处的一些模糊文件系统数据)是没有意义的。
首先制定分区开始和结束位置(或要安装什么文件系统)的定义。
然后该信息以某种方式存储在介质上的某个地方。
当操作系统必须在读取和写入文件时对分区执行 I/O 时,真正的工作就开始了。
换句话说,分区表(在挂载分区时不会更改)和文件系统结构(将从格式化期间安装的初始化形式更改/增长)不是分区和文件系统的显着组件(分别)。
关注这些数据类似于跑马拉松的策略,只依赖于你的起始位置(即在人群的前面),而忽略接下来的 42 公里。
(仅供参考,很久以前在一家 UNIX 公司工作时,我编写了一个 FAT 格式实用程序。所以在某个时间点,我确切地知道磁盘格式化需要什么。)
附录 2
不会。
分区表仅包含操作系统使用的(参数)数据。
“规则”由包含操作系统算法的代码实现。
这些算法使用数据。
数据不是算法(或“规则”)。
分区的文件系统 ID 安装文件系统处理程序,它将处理该挂载点的所有后续打开、读取、写入、lseek 和关闭系统调用。
格式化期间写入的初始化结构(例如空分配表、空根目录)随着文件系统创建、写入和删除文件而更新。执行打开、读取、写入、lseek 和关闭文件操作
的“规则”在文件系统处理程序的代码中实现。
所有文件系统 I/O 操作都将通过分区层(以执行 LBA 转换)。
LBA 转换器的伪代码(即将
lba
文件系统“设备”(device_mounted
)的给定 LBA()转换为实际/物理设备的 LBA)可以是:处理分区只是一个简单的映射。
文件系统是具有用户界面、需要资源并执行 I/O 的子系统。
使用一些微小的共性并不是一个明智的比较基础。
像 /dev/sdX 这样的磁盘可以看作是字节数,其中字节数与磁盘大小相匹配。在像 /dev/sdX 这样的磁盘上,您可以放置某种分区表,但您不必在磁盘上放置分区表,如果您愿意,可以简单地将 /dev/sdX 作为普通文件访问或您可以将文件系统直接放在 /dev/sdX 上。
对于某种分区表,/dev/sdX 的开头将用于描述 /dev/sdX 的不同部分是如何分配给不同分区的分区表的空间每个分区都会小于整个磁盘/dev/sdX。
同样,分区可能包含一些文件系统或像普通文件一样被访问。
示例:
因此,如果您擦除 /dev/sdX,您将擦除所有分区以及分区表。如果您擦除 /dev/sdX1,您只会擦除该分区。
文件系统是使用磁盘或分区等连续设备的某种方式,它允许您为目录结构中的不同文件动态分配部分空间。正如您所了解的,有许多方法可以实现文件系统,该文件系统通常会创建某种带有数据的链表。