n.yamamoto
2016年4月5日 9時43分
Yamamotoです。
SDカードを使用して、シャットダウン時に使用中のRAM-DiskファイルをSDにバックアップして、再起動時に戻して前回状態から実行するようにしています。
また、FTP受け渡し用に大きなファイルになる可能性のあるものもSD経由で受け渡すようにしています。(注意:サイズを小さくするためにtar圧縮もしています)
で問題なのですが、数日運転後にシャットダウンして再起動すると、ファイル不整合でSDからRAM-Diskへ戻せないファイルが発生します。(ほとんどが、実行状態を書き込んでいるログファイルなのですが)
以前発生した時にsync等を入れて同期を取ってからシャットダウンするようにして、ほぼ発生していなかったのですが、別の処理用に改造してから再発し始めました。
推測として、RAM-DiskのバックアップをSDに行った際に完全同期が取れていない状態でリセットしてSD内のファイルに不整合があるのではないかと思っており、シャットダウン前にSDが既に異常になっていないか確認してからシャットダウンして確認したと思っているのですが、験しにfsckでチェックしようとしたところ下記のようにスーパーブロックが無いと言われチェックできません。
何か方法は有りますでしょうか?
ちなみにSDは購入時のFAT32フォーマットのままです。
----------------------------------------------------------------
[root@armadillo460-0 (ttyp0) /home/guest]# fsck -r /dev/mmcblk0p1
fsck 1.25 (20-Sep-2001)
e2fsck 1.25 (20-Sep-2001)
/dev/mmcblk0p1 is mounted.
WARNING!!! Running e2fsck on a mounted filesystem may cause
SEVERE filesystem damage.
Do you really want to continue (y/n)? yes
Couldn't find ext2 superblock, trying backup blocks...
fsck.ext2: Bad magic number in super-block while trying to open /dev/mmcblk0p1
The superblock could not be read or does not describe a correct ext2
filesystem. If the device is valid and it really contains an ext2
filesystem (and not swap or ufs or something else), then the superblock
is corrupt, and you might try running e2fsck with an alternate superblock:
e2fsck -b 8193
----------------------------------------------------------------
コメント
n.yamamoto
Yamamotoです。
コメント有難うございます。
教えていただいた内容で確認しました。
これで正常と思われますが、合ってますでしょうか。
--------------------------------------------------------------
[root@armadillo460-0 (ttyp0) /usr/bin/zm]# fsck.vfat /dev/mmcblk0p1
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
/dev/mmcblk0p1: 687 files, 3536/59992 clusters
--------------------------------------------------------------
n.yamamoto
access.mihara
株式会社ACCESS 三原と申します。
ニュースグループ comp.os.linux.development.apps では "It will call sync then detach the filesystem from the OS in a safe way so there's no lost data. ... Umount is definitive." と記されています。
https://groups.google.com/forum/#!topic/comp.os.linux.development.apps/…
あくまで "はず" なのですが、実際にトラブルが起きましたでしょうか?
n.yamamoto
at_daisuke.sasaki
佐々木大輔です
H/W担当の方のコメントはおそらく、SDのバス上の通信が完了しても、
実際にNAND Flashへの書き込みが完了していない可能性があるから、
時間を置いたり それなりの処理をする必要があるという事ではないかと推測します。
A460のSDドライバは、書き込みコマンドの終了時に、
SDカードの内部ステータスのチェックをしており、NAND Flashへの書き込みが完了するまで
書き込み終了と判断しません。
最近別件で、umountを行うと(見たのはシャットダウン時に実行されるumountなのですが)、
この書き込みの完全な終了までは待たされている事をSD Analyzerでも確認しています。
現在おきている問題は、umountを実施しておく事で解決すると思います。
試してみてください。
n.yamamoto
n.yamamoto
Yamamotoです。
もう一点確認がありました。
同じような装置で開発環境を変えて使用しています。
でfsck.vfatをそれぞれで試したのですが、以下のように結果が変わっており、ドライバーも変わっているのでしょうか?
また、装置1側ではfsck.vfatも正常に実行してくれていないように見えます。
現在、SD不良状態が発生しやすいのが装置2側です。(SDへのアクセス条件が違うので、一概に発生頻度は比較できませんが)
装置1:結果
atmark-dist v1.28.2 (AtmarkTechno/Armadillo-460)
Linux 2.6.26-at15 [armv5tejl arch]
armadillo420-0 login: guest
Password:
[guest@armadillo420-0 (ttyp0) ~]$ su
Password:
[root@armadillo420-0 (ttyp0) /home/guest]# fsck.vfat /dev/mmcblk0p1
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
Seek to -273678848:Invalid argument
装置2:結果
atmark-dist v1.35.0 (AtmarkTechno/Armadillo-460)
Linux 2.6.26-at20 [armv5tejl arch]
armadillo460-0 login: guest
Password:
[guest@armadillo460-0 (ttyp0) ~]$ su
Password:
[root@armadillo460-0 (ttyp0) /home/guest]# fsck.vfat /dev/mmcblk0p1
dosfsck 2.11, 12 Mar 2005, FAT32, LFN
/dev/mmcblk0p1: 267 files, 620/120752 clusters
access.mihara
access.mihara
株式会社ACCESS 三原と申します。
> 装置1:結果
> atmark-dist v1.28.2 (AtmarkTechno/Armadillo-460)
> Linux 2.6.26-at15 [armv5tejl arch]
>
> armadillo420-0 login: guest
> Password:
> [guest@armadillo420-0 (ttyp0) ~]$ su
> Password:
> [root@armadillo420-0 (ttyp0) /home/guest]# fsck.vfat /dev/mmcblk0p1
> dosfsck 2.11, 12 Mar 2005, FAT32, LFN
> Seek to -273678848:Invalid argument
いま気づきましたが、atmark-dist は Armadillo-460 向けとのことですが、プロンプトに "armadillo420-0" と表示されていますよね。
装置1 のボードは A460 と A420 のどちらですか? Linux カーネル・ユーザランドはボードに対応したものですか?
access.mihara
n.yamamoto
n.yamamoto
access.mihara
n.yamamoto
kes-konishi
n.yamamoto
kes-konishi
kes-konishi
n.yamamoto
n.yamamoto
n.yamamoto
n.yamamoto
Yamamotoです。
"armadillo420-0" と表示されている件で、configを間違えているのかと思い.configファイルを確認したところ、460選択になっていました。
460選択なのに "armadillo420-0" と表示される事があるのでしょうか?
念のため.configを添付しておきます。
あと、初期に評価用で420を使用しその後460に変更したかもしれないので、初期のconfigは420で実施したかもしれません。
ファイル | ファイルの説明 |
---|---|
config.txt |
at_yuma.arakawa
> "armadillo420-0" と表示されている件で、configを間違えているのかと思い.configファイルを確認したところ、460選択になっていました。
> 460選択なのに "armadillo420-0" と表示される事があるのでしょうか?
"armadillo420-0"はコンフィグ領域のHOSTNAMEファイル(/etc/config/HOSTNAME)の内容を表示しています。
コンフィグ領域がArmadillo-420のユーザーランドでflatfsd -wしてしまった時のままなのではないでしょうか?
添付のコンフィギュレーションの状態でビルドしたユーザーランドで起動し、
flatfsd -sを実行し直し、再起動すると、"armadillo460-0"の表示になりませんか?
n.yamamoto
kes-konishi
2016年4月5日 9時52分
KES)小西です。
fsck.ext2が動いているので、EXT2でチェックされていると思います。
対象のSDはFAT32なので、fsck.vfatでチェックされたらいかがでしょうか?