USBドライブの安全でない取り外しによるデータ破損に関するいくつかのテストを行っていますが、特定の時間にドライブを一貫して取り外す方法が必要です。バッファやキャッシュをフラッシュせずにドライブを物理的にプルするのと同じコマンドはありますか?
答え1
一部の(いくつかの)USBハブには、ポート電源制御のためのハードウェアサポートがあります。幸いなことに、これを行うポートがある場合は、個々のポートの電源を切り、そのポートに接続されているデバイスの取り外しをシミュレートできます。
この機能を制御できるプログラムのソースコードについては、次のリポジトリを参照してください。https://github.com/codazoda/hub-ctrl.c
答え2
このタイプの研究では、ブロックデバイスエミュレータは実際のUSBデバイスよりもうまく機能します。
仮想ブロックデバイスを設定し、ここにファイルシステムを作成し、そこにいくつかのファイルをコピーしたり、他の書き込みアクティビティを実行したり、デバイスのランダムスナップショットを撮ることが可能でなければなりません。
重要なのは、書き込み中にデバイスを読み取るのではなく、デバイスに入って固定してからスナップショットを撮る必要があることです。
デバイスの書き込み速度を制限できれば役に立ちます。
一部のファイルシステム作成者は、これらの破損のテストベンチを作成した可能性があります。 (@Austin Hemmelgamに感謝します)dm_log_writesデバイスマッパーコンポーネントは、仮想ブロックデバイスを越えて書き込みストリームを提供する。このストリームをすべてのポイントで簡単に切り取って再生することで、破損したファイルシステムを得ることができます。
答え3
(DIY)ハードウェアソリューションは、プログラム的にUSB延長ケーブルの5Vラインにスイッチを配置することです。私は次を使うでしょう:
- 1-2ビットハードウェアIO(USB-232アダプタのステータスライン)が必要な場合は、一般的なトリックを使用して5Vコイル電圧を使用する常時クローズドリードリレーです。ほとんどすべてのプログラミング言語で簡単に書くことができます。
- 光絶縁体(私が使用するもの)このプロジェクトはカメラのリリースに関するものです。(この回路は簡単に適応できます。)USBスティックが引き込む電流を処理できない場合があります。