k.sato
2025年6月6日 11時56分
==========
製品型番:
ABOSバージョン:3.21.3-at.12
カーネルバージョン:5.10.237-0-at
==========
佐藤と申します。
お世話になっております。
現在、SDカード書込中のArmadillo電源断の検証をしています。
SDカードへ毎分平均値ファイルへ追記、
アラーム発生時にアラームファイルへ追記としています。
●コンテナ内からSDカードをフォーマット
https://armadillo.atmark-techno.com/forum/armadillo/19531
上記で教えていただきこのような動作になっているかと思います。
1. /var/app/volumes/sd ディレクトリを作成
2. /etc/fstabに下記を追加
/dev/mmcblk1p1 /var/app/volumes/sd ext4 defaults,noauto 0 0
3. app.confにて
mount /var/app/volumes/sd
①現在のジャーナリングモードはどうやって確認できますか?
何も指定していないのでordered
なのでしょうか?
②どうやってjournal
に設定できますか?
mount -t ext4,data=journal /var/app/volumes/sd
上記のように変更してArmadilloを再起動してみましたが
mountコマンドではジャーナリングモードは確認できないのでしょうか?
armadillo:~# mount | grep ext4 /dev/mmcblk0p3 on /var/log type ext4 (rw,noatime) /dev/mmcblk1p1 on /var/app/volumes/sd type ext4 (rw,relatime) armadillo:~#
③journal
とすることでファイルが壊れることを軽減できるのでしょうか?
以上、よろしくお願い致します。
コメント
k.sato
マルティネ様
佐藤です。
> エラーするべきコマンドです。busybox mount の確認不足でエラーしませんが、 -t は type (ext4 だけ), data=journal を -o で設定してください。
> また、 /etc/fstab のオプション(「defaults,noauto」を記載した値)にも追加できます。
ありがとうございます。
mount -o data=journal /var/app/volumes/sd
-o
オプションでdata=journal
を設定することでmount
で表示されるようになりました。
armadillo:~# mount | grep ext4 /dev/mmcblk0p3 on /var/log type ext4 (rw,noatime) /dev/mmcblk1p1 on /var/app/volumes/sd type ext4 (rw,relatime,nodelalloc,data=journal)
> > ③journal
とすることでファイルが壊れることを軽減できるのでしょうか?
> ファイルが「壊れる」という言葉の意味によりますが、そうですね。
> デフォルトでは metadata だけを journal に書いて data は直接に書いてますので、fsync 等の同期命令を利用しない場合は電源切断の際にファイルを読んでもデータがなかったり、上書きの場合は途中で上書きされたデータが保存されてる可能性もありますので、ファイルが壊れます。
> data=journal ではデータも journal に書いてからファイル内にもう一度かいてますので、再起動後にマウントする時に journal が書き込まれていたデータを確認して再適用されます。
> ただし、大量のデータを書く場合(例えばアーカイブを展開するなど)は一部のファイルしか書いてない状態、あるいはファイルは途中までしか書いてない状態はまだ可能ですので、個人的ンは data=ordered のままでもデータを一時的に書いて、書き込み完了後にファイルをリネームするなどの2段書き込みの方が明確でわかりやすいと思います(データの書き込みも半分になるので性能もいいはずです)
> また、データの保証がきになる場合はチェックサムを計算する btrfs を検討するのもいいかと思います。
> (btrfs の場合は data=journal オプションがないですが、sync を明確に実行しない場合は「flushoncommit」と「commit=<間隔>」をご確認ください)
他の方法についても検討してみます。
ありがとうございました。
at_dominique.m…
2025年6月6日 12時29分
佐藤さん
お世話になっています、
マルティネです。
> ①現在のジャーナリングモードはどうやって確認できますか?
> 何も指定していないので
ordered
なのでしょうか?はい、デフォルトは data=ordered となります。
mount
コマンドの出力になにdata=xx
が表示されなければ ordered です。変更した場合は表示されます:
②どうやって
journal
に設定できますか?エラーするべきコマンドです。busybox mount の確認不足でエラーしませんが、 -t は type (ext4 だけ), data=journal を -o で設定してください。
また、 /etc/fstab のオプション(「defaults,noauto」を記載した値)にも追加できます。
> ③
journal
とすることでファイルが壊れることを軽減できるのでしょうか?ファイルが「壊れる」という言葉の意味によりますが、そうですね。
デフォルトでは metadata だけを journal に書いて data は直接に書いてますので、fsync 等の同期命令を利用しない場合は電源切断の際にファイルを読んでもデータがなかったり、上書きの場合は途中で上書きされたデータが保存されてる可能性もありますので、ファイルが壊れます。
data=journal ではデータも journal に書いてからファイル内にもう一度かいてますので、再起動後にマウントする時に journal が書き込まれていたデータを確認して再適用されます。
ただし、大量のデータを書く場合(例えばアーカイブを展開するなど)は一部のファイルしか書いてない状態、あるいはファイルは途中までしか書いてない状態はまだ可能ですので、個人的ンは data=ordered のままでもデータを一時的に書いて、書き込み完了後にファイルをリネームするなどの2段書き込みの方が明確でわかりやすいと思います(データの書き込みも半分になるので性能もいいはずです)
また、データの保証がきになる場合はチェックサムを計算する btrfs を検討するのもいいかと思います。
(btrfs の場合は data=journal オプションがないですが、sync を明確に実行しない場合は「flushoncommit」と「commit=<間隔>」をご確認ください)
よろしくお願いします。