web-dev-qa-db-ja.com

カード/ USBフラッシュストレージ:頻繁に使用した後にトリム/破棄/リセットする方法は?

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プログラムは見つかりませんでした。

2
THX

必要なコマンドは blkdiscard です。パーティションまたはブロックデバイス全体をトリミングして完全に消去します。ただし、後者はトリムをサポートしていないと思うので、USBサムドライブではなくSDカードでのみ機能します。

3
user3188445

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がサポートされています]を探します。

1
Toby Speight