USB 闪存盘显示容量较少 GiB(无分区)

USB 闪存盘显示容量较少 GiB(无分区)

好吧,我的问题是,我有一个 Jetflash 32 GB USB 闪存驱动器,它曾经有 32,000,000,000 字节,换句话说,它的容量是 29.8 GiB。我以前可以在 Windows 上右键单击,然后看到 29.8 这个数字。

现在我确实通过 Linux 制作了一个可启动的 USB,以便在某人的计算机上安装 Manjaro。我不记得当时我对闪存驱动器做了什么。长话短说,当我在计算机上格式化 USB 时(发生在上述事件发生几周后),我的闪存驱动器现在有 28 GiB 的存储空间。

gparted所以我损失了将近 2 GiB!使用任何 Windows 工具或在 Linux 中我都看不到任何分区或未分配的空间。

有没有低级可以删除任何 mbr/lba 或任何标志数据并逐个检查我的扇区以确定我的原始容量的工具?

我在互联网上没有找到任何东西。所有与“我的 USB 笔显示较少 GB”相关的主题都是用于解决出现较小分区的问题,而其余空间只是未分配但对磁盘管理器或分区管理器等“可见”,而gparted我的情况并非如此。

答案1

dd之前在闪存驱动器上使用过类似 mkusb 的灵感工具,例如mkusb Ubuntu 帮助页面显示他们:

“使用整个设备”,实际上只有头端(iso 文件的大小),但设备的其余部分不可用。mkusb 只是从 iso 文件中克隆 ISO 9660 文件系统及其内容。此 ISO 9660 文件系统适用于 CD/DVD 磁盘,也适用于 USB 驱动器。使用这样的 USB pendrive 后,您创建新的分区表和文件系统,如果您想将其用于其他用途。

链接链向下延伸至帮助格式化 USB 闪存盘。创建一个新的分区表,然后分区应该可以解决问题,除非您遇到闪存设备出现问题的“特殊情况”。我遇到的那个设备根本听不进去,在格式化和重新使用几个月后,偶尔会拾取旧 ISO 文件系统的残余。

覆盖第一个 GB (ISO 最初的所在位置)解决了我的问题,但是如果你想覆盖整个 USB,这也应该可行(代价是减少一次对闪存的终身写入),或者只覆盖第一个 MB 也应该可行...

使用 Linux 的计划dd应该可以做到。首先,请 100% 确定您拥有正确的设备(例如/dev/sdx,使用lsblkgparted或或在插入设备时gnome-disk-utility查看系统日志应该会告诉您)dmesg

  • 如果只覆盖第一个兆字节(1M,其中 M =1024*1024),你可以这样做

    dd if=/dev/zero of=/dev/sdx bs=1M count=1
    

    要覆盖更多 M,请使用更大的计数。

  • 要覆盖第一个千兆字节(1G,其中 G =1024*1024*1024)

    dd if=/dev/zero of=/dev/sdx bs=1G count=1
    
  • 要覆盖整个设备,不要使用任何 bs 或 count,只需执行

    dd if=/dev/zero of=/dev/sdx
    

    完成后dd会告诉您在到达设备末端之前可以写入多少内容,让您了解实际可写入的内容量,类似于:

    1+0 records in
    1+0 records out
    1048576 bytes (1.0 MB) copied, 0.000838339 s, 1.3 GB/s
    

如果dd花费的时间很长,您可以“向正在运行的‘dd’进程发送 USR1 信号,使其将 I/O 统计信息打印到标准错误,然后恢复复制。”如果您很小心,请使用killandpgrepps pkillhtop或 even killall,或者参见man dd以下示例:

$ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep 1; kill $pid

18335302+0 records in 18335302+0 records out 9387674624 bytes  (9.4  GB)  copied,
34.6279 seconds, 271 MB/s

完成后dd,写入新分区表并创建新分区并格式化。我会使用gparted,它在菜单中有一个创建分区表选项,通常效果很好。

相关内容