会# 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 有分区表的辅助副本在驱动器的末尾,因此仅覆盖驱动器头部的部分可能还不够。
(不过,您不必使用dd
。head -c10000 /dev/zero > /dev/sda
orcat /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:驱动器可以在内部将逻辑块重新映射到物理介质的不同部分,但该映射对于操作系统来说是不可见的(并且不重要)。