SDカードをアンマウントすると、fat-fsが汚れます。

SDカードをアンマウントすると、fat-fsが汚れます。

USBカードリーダーからSDフラッシュカードをマウント解除してからカードを取り外すと、ファイルシステムは「汚れた」ままになります。

システム:

  • RPiまたはxubuntu 16.04.3
  • カードリーダーは非常に手頃な中国のカードリーダーです。私はいくつかの他のことを試しました
  • いろんなSDカードを使ってみました。

再現方法:

  1. カードリーダーの接続
  2. vfatを含むSDカードを最初のパーティションに挿入します。
  3. システムがSDカードを検出するのを待ちます。
  4. システムがファイルシステムを自動的にマウントするか、手動でマウントするのを待ちます。
  5. ランダムファイルを更新するには:date >> /media/mogul/2E3E-AE54/d
  6. 削除:sudo umount /dev/sdd1
  7. (プレースホルダー、ここでは何もしないでください)
  8. カードリーダーからSDカードを取り外します。

ここで手順2を繰り返します。 dmesgに注目すると、次のようになります。

[357207.805594] FAT-fs (sdd1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.

(最新のLinuxサポートdmesg -w

今、私がumount

  1. SDカードから任意のバイトを読み込みます。例:dd if=/dev/sdd1 skip=1000000 ibs=1 count=1 of=/dev/null

ファイルシステムがまだ存在しているようです。

これは私に少し遅れているようです。基本的なものを見逃していますか?

よりエレガントなソリューションはありますか?

カードリーダーを使用したくありませんが、取り出しejectumount, since電源を切ると、カードリーダーを再挿入するまでシステムは新しいSDカードを検出しません。

ベストアンサー1

ステップ7で以下を試してください。

echo 1 | sudo tee /sys/block/sdd/device/delete

またはrootとして実行している場合

echo 1 > /sys/block/sdd/device/delete

これは、デバイスがすぐに削除される予定であることをカーネルに通知し/dev/sdd、ファイルシステムの破損を防ぐために、カードに残っているすべての書き込みバッファを制御されたフラッシュでトリガーする必要があります。

これにより、このコマンドと同様にリーダーの電源が切れることがありますeject。そのような場合、デバイスがすぐに削除されるという意味ではなく、バッファをフラッシュすることが代替策になる可能性があります。これは次のコマンドを使用して達成できますblockdev

sudo blockdev --flushbufs /dev/sdd

それでも役に立たない場合は、カードリーダーがホットスワップ可能なカードをサポートしていない可能性があります。これは安い読者にとって可能です。このタイプのカードリーダーを使用する唯一の安全な方法は、まずUSBポートからカードリーダーを取り外してから、カードリーダーからカードを取り外すことです。

おすすめ記事