SVX日記
2015-02-16(Mon) 抜くと元に戻るSDカード
土曜日、もうひとつ帽子を作ってもらおうと、岡崎に向かった。たまたま、近日中に中学の友人と会う機会があるので、愛用のX100Sを持ち出す。オイラは岡崎の中学に通っていたのだよね。いま、学校がどんな様子なのか、写真を眺めて酒の肴にしようって寸法だ。
で、家に帰って驚いた……写真がダウンロードされない……最初、自作のスクリプトのバグかと思い、カメラの再生モードで写真を探すが……やっぱりない……えー、まじー!? 先日自作したバッテリ充電器の写真が最後になっている。撮ってない……わけないよな……撮った直後に再生モードでピントチェックとかもしたよな……な、なんで!?
と、あれこれしているうちに、なんと問題が再現した。撮って、電源を切って、電源を入れて、再生モードにすると、撮ったはずの写真がないのだ。撮った直後、電源を切らないうちは、再生モードで撮った写真が確認できる。なんだこの症状。記録したつもりで記録していないってこと? カメラのバグか?
X100Sはプロユースの機器とまでは言えないが、準フラッグシップの位置づけだろう。メーカーもさすがに「まぁ、なんていうの、そんなこともあるよね」などとはいわないはず。とりあえず、富士フイルムに依頼を依頼するメールを出してみた。
で、今日、さらに問題の切り分けを行った。具体的には、問題が起きているSDカードをPCに挿し、その内容を別のSDカードにddでフルコピーする。でもって、フルコピーしたSDカードをカメラに入れて、同様の事象が起こるか確認する。これで問題が再現すれば、SDカード上の記録内容に問題があるという事になり、カメラ被疑の可能性が高くなる……が、同様の事象は起こらなかった。
# SD カードを挿す
bragza /root # mount /dev/sdb1 /mnt/temp
bragza /root # ls -n /mnt/temp
合計 32
drwx------ 3 1000 1000 32768 10月 18 23:00 DCIM/
bragza /root # cp google-chrome-38-0-2125-104-64-bits-multi-ubu.deb /mnt/temp
※そこそこの大きさのファイルを書き込む
bragza /root # ls -n /mnt/temp
合計 46592
drwx------ 3 1000 1000 32768 10月 18 23:00 DCIM/
-rw-r--r-- 1 1000 1000 47670984 10月 30 23:10 google-chrome-38-0-2125-104-64-bits-multi-ubu.deb
bragza /root # echo 3 > /proc/sys/vm/drop_caches
※キャッシュをドロップ
bragza /root # md5sum google-chrome-38-0-2125-104-64-bits-multi-ubu.deb
a2b61a623da973f12e1cb18674b9fb93 google-chrome-38-0-2125-104-64-bits-multi-ubu.deb
bragza /root # md5sum /mnt/temp/google-chrome-38-0-2125-104-64-bits-multi-ubu.deb
a2b61a623da973f12e1cb18674b9fb93 /mnt/temp/google-chrome-38-0-2125-104-64-bits-multi-ubu.deb
※そこそこ時間を要したことから、キャッシュの影響ではないことが確認できる
bragza /root # umount /mnt/temp
# SD カードを抜き差しする
bragza /root # mount /dev/sdb1 /mnt/temp
bragza /root # ls -n /mnt/temp
合計 32
drwx------ 3 1000 1000 32768 10月 18 23:00 DCIM/
※記録されてない……そんなアホな!?
bragza /root #
ちょっとググると、なんと同様の症状の報告があるではないか。「SDカードが壊れました!コピーや削除してもカードを抜くと元に戻ります!フォーマットもできません!」。マジかよ。
ちなみに、オイラのSDカードもTranscend。microSDHC 4GB class6だから、かなり古い。にしても、こんな嫌がらせのような壊れ方はないんじゃないか。しかも、上記の例がSDXCだという事を考えると「現象を知りつつ、長らく改善してない」ってことになる。ふざけんな。記録できてないなら、記録できてない旨を応答するだけのことだろ。フェールセーフ的にありえない設計だ。製品として腐っていると言ってよいのではないか。
数10MBの書き込みが行われた場合、カメラ上のキャッシュや、SDカード上のキャッシュの影響により「書き込まれたかのように見える」という事はないだろう。それほどの量のデータを保持できるほどのキャッシュ容量を持っているとは思えないからだ。間違いなく、SDカードのフラッシュメモリにまで記録は行われ、カメラはフラッシュメモリからその記録を読んで画像を再生しているはず。PCでmd5を実行した場合に、そこそこ時間を要したこともそれを裏付けている。
とすれば、考えられるのは、SDカード上のメタデータ管理にまつわる不具合だ。フラッシュメモリは同じ場所に書き込むとメモリセルの疲弊が進むことから、実は上書き動作は行わず「別の場所」に書いて、メタデータを書き換えることで、あたかも上書きしたかのように振る舞う。いわゆるウェアレベリングというやつだ。今回の問題は、そのメタデータ部分のみ、記録しない動作になってしまっているため、電源を切るまでは「別の場所」にアクセスできるが、電源を切ると「別の場所」に書いたこと自体を忘れてしまう、という状態なのではないか。これをやられると、カメラやPC側からそれを検知する術はない。完全にSDカードのファームウェアロジックのバグだといえよう。SuperDoahoカード。
「元に戻る」ってなんじゃ?と思ってリンク先みたら...なるほど。そんな現象が!!<br><br>関係ないけどニコン~マイクロフォーサーズのマウントアダプター買いました。<br>昔のレンズが色々遊べそうです。
Windows2000でUSBメモリを停止しないで引っこ抜くとファイルが保存されない、って現象があったのを思い出しました。