SDフラッシュカードをUSBカードリーダーにマウントしてからカードを抜くと、ファイルシステムが「ダーティ」のままになります。
システム:
再現方法:
date >> /media/mogul/2E3E-AE54/d
_Sudo umount /dev/sdd1
_ステップ2から繰り返します。dmesgに注目してください。次のように表示されます。
[357207.805594] FAT-fs (sdd1): Volume was not properly unmounted. Some data may be corrupt. Please run fsck.
(新しいLinuxのサポート_dmesg -w
_)
ここで、umount
の後にアクションを追加すると
dd if=/dev/sdd1 skip=1000000 ibs=1 count=1 of=/dev/null
_ファイルシステムは存続しているようです。
これは私には少しハックなようですが、基本的なものが欠けていますか?
もっとエレガントな解決策はありますか?
私はeject
を使用したくないのですが、_umount, since
_ eject`だけがカードリーダーの電源を切ります。カードリーダーを再接続する前に、システムが新しいSDカードを検出しません。
ステップ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ポートから取り外してから、カードをリーダーから取り外すことです。
手順7でコマンドsync
を発行すると、バッファキャッシュがSDカードに書き込まれ、ファイルシステムがクリーンになります。