AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1571045
Accepted
david
david
Asked: 2020-07-24 10:52:04 +0800 CST2020-07-24 10:52:04 +0800 CST 2020-07-24 10:52:04 +0800 CST

写入 /dev/sdX 而不是 /dev/sdX1

  • 772

如果我想将一些文件复制到外部硬盘驱动器并做而不是,物理上会发生什么?或者当通过用零覆盖驱动器来擦除驱动器时,和之间有区别吗?AFAIK,意思是“磁盘”和它上面的第一个分区。从计算机科学的角度来看,两者似乎都表示文件(或 OOP 术语中的对象),但我并不真正理解从物理角度来看有什么区别。cp -a [file] /dev/sdXcp -a [file] /dev/sdX1dd if=/dev/zero of=/dev/sdXdd if=/dev/zero of=/dev/sdX1sdXsdX1sdXsdX1

PS.:这个问题可能类似于以 FAT 格式化的驱动器与以 Ext4 格式化的驱动器有何不同的问题。我的猜测是 99,99% 是相同的,它只是一个不同的小文件(分区表?)(格式化驱动器通常只需要几秒钟)。所以操作系统(?)将读取格式化信息,然后根据特定于该格式的协议继续写入数据。

hard-drive partitioning
  • 2 2 个回答
  • 302 Views

2 个回答

  • Voted
  1. Best Answer
    sawdust
    2020-07-24T13:28:12+08:002020-07-24T13:28:12+08:00

    如果我想将一些文件复制到外部硬盘驱动器并执行 cp -a [file] /dev/sdX 而不是 cp -a [file] /dev/sdX1,物理上会发生什么?

    假设您具有适当的权限,则这两个命令都不会以易于检索的方式写入文件。
    这两个命令都会导致 的内容file直接写入 LBA(又名扇区)并绕过任何文件系统约定。
    没有文件名、没有文件大小、没有所有者、没有创建时间、没有权限、没有任何类型的属性与写入的数据相关联。

    第一个带有目标/dev/sd X 的命令将从物理驱动器的第一个 LBA 开始顺序写入文件内容。这会破坏 MBR(主引导记录)和分区表,并使所有文件系统的内容无法访问。
    第二个命令,目标为/dev/sd X 1,将从分区号 1 的第一个 LBA 开始顺序写入文件内容。这将破坏分区的引导扇区,并可能损坏该分区的文件系统,使文件系统(及其所有文件)无法访问。

    换句话说,这两个命令之间的主要区别在于写入开始的 LBA(又名扇区号)。


    或者当通过用零覆盖驱动器来擦除驱动器时,dd if=/dev/zero of=/dev/sdX 和 dd if=/dev/zero of=/dev/sdX1 之间是否有区别?

    第一个带有目标/dev/sd X 的命令将完全清零驱动器的所有 LBA。任何信息都将不再可读(没有一些据称非凡的技术)。
    第二个命令,带有目标/dev/sd X 1,会将分区号 1 的所有 LBA 清零。尽管分区的定义仍然存在,但该分区(及其文件)的文件系统已被覆盖并且没有更长的访问时间。此分区外的 LBA 不受影响。


    AFAIK,sdX 的意思是“磁盘”...

    它指的是驱动器。
    SSD 和闪存驱动器没有“磁盘”。

    从计算机科学的角度来看,sdX 和 sdX1 似乎都代表文件

    并非所有操作系统都将设备视为文件(例如 MS Windows)。

    ...但我真的不明白从物理角度来看有什么区别。

    这些设备名称(实际上是设备节点)代表存储设备的顶级逻辑布局。IBM PC 和 MS DOS 建立的约定是将 PC 大容量存储设备划分为逻辑分区。(软盘,又名软盘,不受此约定的约束。)

    每个分区由起始 LBA(也称为扇区号)和结束 LBA 定义,因此具有大小(LBA 或扇区的数量)。当分区被格式化时(对于那个文件系统),每个分区也被分配了一个文件系统类型的识别码。
    根据分区方案(例如 MSDOS 或 GPT),有可选的标志和(卷)名称。

    整个驱动器由/dev/sd X 设备节点表示。除了驱动器大小(即 LBA 的数量)和分区表(如果有)之外,该设备没有任何其他用户关注的显着属性。


    PS.:这个问题可能类似于以 FAT 格式化的驱动器与以 Ext4 格式化的驱动器有何不同的问题。

    不,那些不是类似的。
    文件系统存在于驱动器分区之上的抽象层。
    文件系统的复杂性比分区方案高几个数量级。您还选择了两个在复杂性和功能上完全相反的文件系统。

    我的猜测是 99,99% 是相同的,它只是一个不同的小文件(分区表?)(格式化驱动器通常只需要几秒钟)。

    你的猜测不正确。计算机执行一个程序所花费的持续时间并不是衡量该操作复杂性的可靠标准。

    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)可以是:

    if (device_mounted == drive)  
        then  
            if (lba >= drive_size)  
                then  reject translation
                else  actual_lba = lba
    
        else if (device_mounted == valid_partition_number)
            then  
                if (lba >= partition_size)  
                    then  reject translation
                    else  actual_lba = lba + partition_start
    
    return (actual_lba)
    

    处理分区只是一个简单的映射。
    文件系统是具有用户界面、需要资源并执行 I/O 的子系统。
    使用一些微小的共性并不是一个明智的比较基础。

    • 2
  2. Henrik Carlqvist
    2020-07-24T13:12:34+08:002020-07-24T13:12:34+08:00

    像 /dev/sdX 这样的磁盘可以看作是字节数,其中字节数与磁盘大小相匹配。在像 /dev/sdX 这样的磁盘上,您可以放置​​某种分区表,但您不必在磁盘上放置分区表,如果您愿意,可以简单地将 /dev/sdX 作为普通文件访问或您可以将文件系统直接放在 /dev/sdX 上。

    对于某种分区表,/dev/sdX 的开头将用于描述 /dev/sdX 的不同部分是如何分配给不同分区的分区表的空间每个分区都会小于整个磁盘/dev/sdX。

    同样,分区可能包含一些文件系统或像普通文件一样被访问。

    示例:

    |---/dev/sdX-------------------------------------------------------------|
    | partition table |--/dev/sdX1-------|--/dev/sdX2------------------------|
    

    因此,如果您擦除 /dev/sdX,您将擦除所有分区以及分区表。如果您擦除 /dev/sdX1,您只会擦除该分区。

    文件系统是使用磁盘或分区等连续设备的某种方式,它允许您为目录结构中的不同文件动态分配部分空间。正如您所了解的,有许多方法可以实现文件系统,该文件系统通常会创建某种带有数据的链表。

    • 1

相关问题

  • 5 年后我应该更换/升级我的硬盘吗?

  • 我应该对用于存储的辅助(非操作系统)SSD 进行分区吗?[关闭]

  • 在 Windows 10 中运行 CrystalDiskMark 会导致 BSOD

  • “写悬崖”现象是否只发生在SSD盘上?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    fixer1234 “HTTPS Everywhere”仍然相关吗? 2019-10-27 18:06:25 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve