dd if=/dev/zero of=/dev/sda 会清除预先存在的分区表吗?

dd if=/dev/zero of=/dev/sda 会清除预先存在的分区表吗?

# dd if=/dev/zero of=/dev/sda清除预先存在的分区表吗?

或者是相反,即

# fdisk /dev/sda g(对于 GPT)

擦除/dev/zero?写入的零

答案1

dd if=/dev/zero of=/dev/sda清除预先存在的分区表吗?

是的,分区表位于驱动器的第一部分,因此覆盖它会破坏它。如果您让它运行,这dd将覆盖整个驱动器(因此这将需要相当长的时间)。

类似的东西dd bs=512 count=50 if=/dev/zero of=/dev/sda足以覆盖前 50 个扇区,包括 MBR 分区表和主 GPT。尽管至少根据维基百科,GPT 有分区表的辅助副本在驱动器的末尾,因此仅覆盖驱动器头部的部分可能还不够。

(不过,您不必使用ddhead -c10000 /dev/zero > /dev/sdaorcat /bin/ls > /dev/sda会产生相同的效果。)

(对于 GPT)是否会fdisk /dev/sda g清除 /dev/zero 写入的零?

也可以(前提是您保存更改)。

(然而,标题中的措辞只是令人困惑,/dev/zero其本身并没有任何比任何常规存储更多的东西。)

答案2

分区表存储在(逻辑2 )磁盘设备的开头1附近。

用任何内容(来自零/dev/zero或任何其他数据)覆盖该区域都会将分区表替换为乱码,因此设备上的分区从哪里开始将不再明显。
不过,人们仍然可以扫描整个磁盘并尝试识别标记文件系统开始的“魔术字节”。

相反,如果您使用fdisk(或任何其他分区工具)创建新的分区表,该工具将覆盖磁盘的前几个字节来存储该新表。

磁盘只有一个开头,因此无论您最后做什么都会“粘”在那里。

但请注意,某些分区表格式(如 GPT)会将备份副本保存在不同的位置(例如,GPT 位于磁盘的末尾),可以从中恢复一些分区信息。

1:例如在MBR 的前 512 字节或者GPT 的第一个和最后一个 17408 字节
2:驱动器可以在内部将逻辑块重新映射到物理介质的不同部分,但该映射对于操作系统来说是不可见的(并且不重要)。

相关内容