Linux(Fedora 24)で、USBドライブまたはメモリカードのコントローラーを「未使用」として扱うように「リセット」することは可能でしょうか?
背景:/ dev/urandomからUSBドライブを上書きしました。つまり、(私が理解している限り)ほとんどのUSBドライブとメモリカードコントローラーはスペアブロックを保持していないため、すべてのブロックが書き込まれていると思います。ドライブ(ストレージコントローラーがATAトリムをサポートしているかどうか、またはUSBコントローラーがATAトリムをデバイスに渡すかどうかを確認する方法は?)はトリムをサポートしていません-fstrimはエラーをスローし、hdparmはトリムサポートを認識しません。
hdparm -I /dev/sdX | grep -i TRIM
したがって、USBフラッシュストレージ上のすべてのブロックを早期に使用可能としてマークし、すべてのセルでガベージコレクションを実行することは一般的に可能ですか?それとも、可能であれば、特定のコントローラー(USBとストレージコントローラー)のみに制限されていますか?
次の SDカードが消去された後、カードからどのような値が読み取られますか?すべてのビットがクリアされますか、それともすべてのビットが設定されますか? 少なくともSDカードはCMD38、これはクイックフォーマットとしてブロックをリセットします。
ただし、これまでのところ、このコマンドをデバイスに送信するための公式のWin/Macソフトウェアのみが見つかりました https://www.sdcard.org/downloads/formatter_4/
おそらく(試されていませんが)これはコマンドをパススルーするUSBコントローラーにも依存し、SDカードでのみ機能する可能性がありますが、必ずしもUSBドライブで機能するとは限りません。
これまでのところ、このCMD38コマンドをデバイスに簡単に送信するためのLinuxプログラムは見つかりませんでした。
必要なコマンドは blkdiscard です。パーティションまたはブロックデバイス全体をトリミングして完全に消去します。ただし、後者はトリムをサポートしていないと思うので、USBサムドライブではなくSDカードでのみ機能します。
util-linux
パッケージにfstrim
が必要です。
名前
fstrim
-マウントされたファイルシステム上の未使用のブロックを破棄します概要
fstrim [-a] [-o offset] [-l length] [-m minimum-size] [-v] mountpoint
説明
fstrim
は、マウントされたファイルシステムで使用され、ファイルシステムで使用されていないブロックを破棄(または「トリム」)します。これは、ソリッドステートドライブ(SSD)およびシンプロビジョニングされたストレージに役立ちます。デフォルトでは、fstrimはファイルシステム内の未使用のブロックをすべて破棄します。以下で説明するように、オプションを使用して、範囲またはサイズに基づいてこの動作を変更できます。
mountpoint
引数は、ファイルシステムがマウントされているディレクトリのパス名です。
fstrim
を頻繁に実行するか、mount -o discard
を使用することでさえ、低品質のSSDデバイスの寿命に悪影響を与える可能性があります。ほとんどのデスクトップおよびサーバーシステムでは、十分なトリミング頻度は週に1回です。すべてのデバイスがキュートリムをサポートしているわけではないため、各トリムコマンドは、その時点でディスクを使用しようとしている他のデバイスに対してパフォーマンスの低下を招くことに注意してください。
もちろん、これはドライブまたはカードスロットがTRIM
コマンドを受け入れる能力に依存します。安価なUSB大容量ストレージはそうしない傾向があります。新しいUAS(USB-attatched SCSI)は通常、TRIM
を受け入れることができます。 hdparm -i
を使用してサポートされているかどうかを確認できます。[コマンド/機能]見出しの下にある[データセット管理TRIMがサポートされています]を探します。