USBメモリのフォーマットでは消せない領域

フォーマットでは、USBメモリのMBRが消えない。

USBメモリをDOS起動ディスクとして使ったりしていると、Windowsによるフォーマットではリセットされない領域がでてきます。

USBメモリ用のDOS起動ディスク作成ソフトを使用し、容量がどう変わるのかを調べてみました。

  • 作業1: RufusでFreeDOS起動ディスクを作成
  • 作業2: RMPrepUSBでFreeDOS起動ディスクを作成

    RMPrepUSBの場合はさらに3種類の設定で試行。

    • no MBR (MBRなし)
    • with MBR (MBRあり)
    • 2PTN(パーティションを2つ作成。内一つは隠しパーティション)

使用したUSBメモリは500MB。フォーマットはWindowsの標準機能で行っています。

USBメモリの容量表示の変化
エクスプローラ上の容量(MB) フォーマット画面の容量(MB)
初期化直後 - 492
初期化→フォーマット[基準] 491 492
作業1→フォーマット 490 491
作業1→フォーマット→作業2(2PTNS)→フォーマット 470 470
作業2(no MBR)→フォーマット 491 492
作業2(with MBR)→フォーマット 477 477
作業2(2PTNS)→フォーマット 470 470
作業2(2PTNS)→フォーマット→作業1→フォーマット 490 491

上の表のように、MBRなしで処理したもの以外は、1度フォーマットし直した後も容量が回復できていません。

USBメモリのブートセクタや隠しパーティションは、フォーマットでは消せずに残っています。エクスプローラからは見えませんが、バイナリエディタで見ることができます。

USBメモリの内容をバイナリエディタで見る方法

HxDを使う場合。

HxD - Freeware Hex Editor and Disk Editor
https://mh-nexus.de/en/hxd

HxD Download page
https://mh-nexus.de/en/downloads.php?product=HxD

HxDはフリーのバイナリエディタで、ストレージの内容を直接見ることができます。インストール版とポータブル版があります。

  1. HxD.exeを管理者として実行
  2. メニューのエクストラ(X)→ディスクを開く(D)
  3. 論理ディスクのUSBメモリ、または物理ディスクのリムーバブルディスクの中からUSBメモリに該当するものを選ぶ
  4. ok

USBメモリの先頭セクタを消去

バイナリエディタを使って手作業ですることできますが、ソフトを使う方が簡単です。コマンドでも可能です。

ソフトで消去

いくつかありますが、私が普段使っているソフトだけ紹介します。

HDD LLF Low Level Format Tool - HDDGURU.com
http://hddguru.com/software/HDD-LLF-Low-Level-Format-Tool

USBメモリ・SDカード等のフラッシュメモリやHDDに対して使用可能。

シェアウェアですが、個人・ホームユースの場合は無料で使えます。(処理速度制限あり、50MB/sまで。USBメモリの容量なら気にしないでよいでしょう。USB2.0以下なら50MB/s未満です)

  1. HDDLLF.4.40.exeを起動
  2. 消去したいUSBメモリを選択
  3. Continue
  4. LOW-LEVEL FORMATタブ選択
  5. Perform quick wipe (just remove partitions and MBR)にチェック
  6. FORMAT THIS DEVICE

前回の記事で挙げたRMPrepUSB Portable版でも、Cleanボタンで消去することができます。

Cleanコマンドで消去 (Windowsの場合)

  1. コマンドプロンプト(cmd.exe)を管理者として起動
  2. diskpart
  3. list disk
    (USBメモリのdisk番号を確認)
  4. select disk (上で確認した数字)
  5. clean
  6. このままではフォーマットできないため、パーティションを作成 *

    create partition primary

Diskpart→Cleanコマンドで消去

* cleanコマンドを実行後に、USBメモリをフォーマットしようとすると、容量が「不明な容量」と表示されます。

この状態では、Windowsでフォーマットしようとしても失敗し、「Windowsはフォーマットを完了できませんでした。」と表示されます。(RufusやRMPrepUSB等で起動ディスクを作成する場合は問題なし)

いったんdiskpart、またはディスクの管理(diskmgmt.msc)[あるいはコンピューターの管理→記憶域→ディスクの管理(ローカル)]からパーティションを作成してからフォーマットしなければなりません。

HDDLLFで消去した場合 … フォーマット可能

HDDLLFで消去後はパーティション有

Cleanコマンドで消去した場合 … フォーマット不可

Cleanコマンドで消去した直後はパーティション無

Cleanコマンドで消去した後、パーティションを作成 … フォーマット可能

Cleanコマンド→パーティション作成後

やり方によって消される範囲は少し違うようですが、ちゃんとMBRや隠しパーティション領域が解放されるので問題ありません。

左: 消去前の状態
右: HDDLLFでQuick Low-Level Format。セクタ0、セクタ1ともに消去。

bin_USBflash_b4_wipeMBR.png< HDDLLFでQuick Low-Level Format

左: RMPrepUSBでClean処理。セクタ0消去、セクタ1残存。
右: WindowsでCleanコマンド使用。セクタ0残存、セクタ1消去。

RMPrepUSBでClean処理したUSBメモリの内容 WindowsでCleanコマンド使用後のUSBメモリの内容

※ とりあえずセクタ0と1だけ比較。他のセクタについては未確認。

USBメモリ全体を消去 (先頭セクタも含めて)

先頭セクタ等だけでなく、USBメモリの全領域をきれいさっぱり消したい時に。

前章のHDD LLF Low Level Format Toolでローレベルフォーマットすれば、先頭セクタも含めて全部消されます。

  1. HDDLLF.4.40.exeを起動
  2. 消去したいUSBメモリを選択
  3. Continue
  4. LOW-LEVEL FORMATタブ選択
  5. Perform quick wipe (just remove partitions and MBR) チェックなし
  6. FORMAT THIS DEVICE
関連記事