私はUSBフラッシュドライブusb 3を持っており、読み取り速度は書き込み速度よりはるかに高速です。フラッシュの99%がすでにゼロで埋められていると仮定すると、100%まですべてのメモリフラッシュをゼロで上書きしてゼロで埋めたいと思いますdd if=/dev/zero of=/dev/FLASH
。
このプロセスは時間がかかり、フラッシュドライブの予想寿命を最小限に抑えます。
どの領域がゼロでないかを確認し、ゼロ以外の領域をゼロで覆う方が速いと思いました。
これを行う方法はありますか?興味深い場合は、セキュリティ上の理由からこれらすべてが必要です。
答え1
安全上の理由はさておいてそのままやってみよう。私たちはGNUを(乱用)することができますddrescue
。
ゼロセクタを検出するのに--generate-mode
便利です。
ddrescue
options で呼び出されると、--generate-mode
デフォルトの「構造モード」とは異なる「ビルドモード」で実行されます。つまり、この--generate-mode
オプションを使用するとddrescue
何も保存されません。後で使用するために作成しようとしますmapfile
。[… ]
ddrescue
場合によっては、sumの(部分的な)コピーであるsummapfile
から近似値を生成できます。これは、単に全てゼロを含むセクタが記憶されていないと仮定して行われる。infile
outfile
mapfile
[… ]
ddrescue --generate-mode infile outfile mapfile
(源泉)
outfile
あなたのデバイスが最後ddrescue
に実行されたデバイスであるとしましょう。私たちはそれを使用することはできませんinfile
(同じファイルの場合は動作を拒否するためddrescue
)。ダミーファイルが必要です。デバイスの物理セクタサイズを知って、オプションで使用する必要があります。このコマンドが役に立ちます。infile
outfile
/dev/zero
-b
lsblk -o NAME,PHY-SEC /dev/FLASH
ここで私はそれだと仮定します512
。
ddrescue -b 512 --generate-mode /dev/zero /dev/FLASH flash.map
各セクタはゼロで満たされているかどうかによってflash.map
試行されない(?
)または完了()として説明されます。+
次のステップは、ゼロ以外のセクタをゼロで埋めることです。--fill-mode
これは仕事に適しています。
ddrescue
options で呼び出されると、--fill-mode
デフォルトの「回復モード」とは異なる「塗りつぶしモード」で実行されます。つまり、この--fill-mode
オプションを使用するとddrescue
何も保存されません。状態文字がオプション引数で指定されたタイプ文字のいずれかに一致するinfile
ブロックから読み取られたデータのみを埋めます。outfile
mapfile
--fill-mode
(源泉)
-b
出力デバイスと同じ値を使用し、さらに--generate-mode
出力--force
デバイスをオーバーライドする必要があります。これはコマンドです:
ddrescue -b 512 --force --fill-mode=+ /dev/zero /dev/FLASH flash.map
今回/dev/zero
は、単純なダミーパラメータではなく、デバイスに書き込まれた実際のデータソース(0)です。
これで/dev/FLASH
ゼロで埋められます。デバイスを物理的に切断する前にバッファをフラッシュする必要があるかもしれません(有用なリンク:1、2、サム)。