使用 Linux 格式化磁盘的最快方法?

voi*_*ces 0 linux sd-card formatting dd fdisk

它用于 bash/shell 脚本。基本上,我想格式化或擦除 USB(或 SD)存储设备;使用单个命令行。

我本来打算使用fdisk,但它似乎需要用户交互来实现我想要的自动化。

所以我决定尝试用以下方法将其归零
dd if=/dev/zero of=/dev/<target disk>
但它似乎只将 2.0 GB 的空闲或未使用的磁盘空间清零。


root@linux:~# dd if=/dev/zero of=/dev/mmcblk0
dd: writing to '/dev/mmcblk0': No space left on device
3842249+0 records in
3842249+0 records out
1967230976 bytes (2.0 GB, 1.8 GiB) copied, 2.9054 s, 677 MB/s
Run Code Online (Sandbox Code Playgroud)

.iso理想情况下,我谈论的是重新格式化任何可移动存储设备,和/或准备使用图像文件对其进行成像(通过dd)。

并不总是需要重新格式化,但它也会删除数据;无论如何,清除设备中任何存储的数据可能应该是默认行为/标准程序。

use*_*686 5

所以,这取决于

\n\n
    \n
  1. 您对驱动器“格式化”的定义;
  2. \n
  3. 该驱动器的类型。
  4. \n
\n\n
\n\n

事实上,“格式”可能是消费技术中最令人困惑的术语之一。即使你的帖子已经混淆了两三个不同的操作......

\n\n

一般情况下它涵盖三个层次:

\n\n
    \n
  1. 准备介质本身(例如将扇区标记写入 HDD) \xe2\x80\x93 现在通常由工厂完成,但至少在 IBM PC 时代,它可以由 PC 本身完成。这通常称为“低级格式化”。

  2. \n
  3. 将分区表(空白或带有某些分区)写入磁盘 \xe2\x80\x93 的前几个扇区,这就是所做的事情fdisk

  4. \n
  5. 将空白文件系统写入每个分区 \xe2\x80\x93 这就是执行的format c:操作mkfs。这曾经被称为“高级格式化”。

  6. \n
\n\n

除了有些人将步骤 #2 称为“低级格式化”,因为现在已经不再有步骤 #1 了。有时人们将擦除整个磁盘称为“格式化”,即使它没有在其中写入任何实际格式的内容。有时,即使所有文件都保持不变,人们也将重新安装 Windows 称为“格式化”。

\n\n
\n\n

无论如何,剩下的答案取决于你想要的结果:

\n\n
    \n
  • 如果您希望磁盘完全空白(例如数据恢复应用程序可能找不到的任何内容),您有两个选择:丢弃或手动擦除。

    \n\n

    “丢弃”功能在 SSD 中称为 TRIM,SD 卡也支持 \xe2\x80\x93,它告诉磁盘本身丢弃所有数据。在 Linux 上,该blkdiscard工具可用于此目的 \xe2\x80\x93 指定一个设备,并在几秒钟内它为空。(类似的工具mkfs.ext4也会在将新文件系统写入分区之前自动丢弃分区的内容。)

    \n\n

    如果磁盘不支持丢弃\xe2\x80\x93,例如,如果它是磁性HDD,或者它是大容量存储接口不理解命令的USB闪存驱动器\xe2\x80\x93那么您唯一的其他选择是手动消隐每个扇区,即/dev/zero像您已经完成的那样填充它。

    \n\n

    虽然丢弃通常只需要几秒钟,但手动填零的速度不能比磁盘本身接受写入的速度快(毕竟,您正在写入大量数据)。

  • \n
  • 如果你不关心残留数据,而只是想让操作系统看到一个空磁盘,你可以直接清空分区表所在的区域。对于 MBR 来说,它总是扇区 0,但不要忘记许多磁盘使用 GPT 分区表。

    \n\n

    这是一种非常快的方法,因为您最多只需擦除几千字节。在 Linux 上,该wipefs命令将通过外科手术使磁盘内容不再被操作系统识别。(默认情况下,该工具仅打印出删除的内容 \xe2\x80\x93 使用该选项--all使其实际执行此操作。)

  • \n
\n\n

无论哪种方式,现在您都有一个操作系统认为是空的磁盘。

\n\n
    \n
  • 如果您希望擦除的磁盘有一些分区,请使用fdisk或parted等分区工具。虽然常规 fdisk 是交互式的,但有很多可以轻松编写脚本的工具 \xe2\x80\x93 sfdisk, sgdisk,parted是几个例子。Windows 有diskpart.

  • \n
  • 如果您还希望分区具有文件系统,请使用mkfs.ext4或 等工具mkfs.vfat(相当于 Windows\' format)。

  • \n
\n\n
\n\n

最后,正如上面评论中提到的:如果您打算只将映像(.iso 文件)写入磁盘,那么您根本不需要做任何准备。

\n\n

这种图像写入从扇区 0 开始,因此它会破坏磁盘上之前的所有内容(最多为图像的大小)。无论它有分区和文件,还是空白,都没关系\xe2\x80\x93 它只是被图像自己的分区和所有内容覆盖。

\n\n

超出图像大小的所有内容都将保持原样,但操作系统不会关心它\xe2\x80\x93,因为图像的分区表表明那里没有分区。当然,如果您要将磁盘送给其他人,则丢弃或清空磁盘仍然是一个好主意。

\n