m-h
2024年10月28日 15時58分
eMMCの書き込み頻度を抑えるため、アプリケーションのログを一旦tmpfs(/tmp)に保存し、一定のサイズに達した段階で/var/app/volumes/に移動させる運用にしています。
SWUpdateを実行する際に、swdesc_command_nochrootを使用して、/tmp内のログを/var/app/volumes/にバックアップした後、アプリケーションのアップデートを行いたいと考えていますが、マニュアル上では"nochroot"を使用することは非推奨とされています。
この方法を使用した場合、どのような影響が考えられるか、ご教示いただけますでしょうか?
コメント
太田様
ご回答いただきありがとうございます。
> 太田です。
>
> お世話になっております。
>
> > マニュアル上では"nochroot"を使用することは非推奨とされています。
>
> nochrootは動作中の環境でコマンドを実行するので、万が一取り返しのつかないコマンド(必要なファイルを削除してしまうなど)を間違って実行してしまった場合に復元不可能になるため非推奨としていました。
>
> > この方法を使用した場合、どのような影響が考えられるか、ご教示いただけますでしょうか?
>
> swupdateが失敗した場合でもコンテナは稼働し続けるので、その状態で書き込みをし続けるとログデータが壊れる可能性があることにご注意ください。
承知いたしました。
上記の点、注意いたします。
> ちなみに/tmpにログを書きこむことでeMMCの書き込み頻度を抑えたい理由はありますでしょうか?
> linuxはeMMCにデータを書き込む前にバッファに数十秒ほど貯めたあとに、eMMCへの書き込み処理を実行します。
> そのため、ログデータであれば/var/app/volumesに直接書き込んでもeMMCの寿命に影響はないと思われます。
数年の長期運用を想定しておりますので、eMMCの寿命を考え、/tmpに一旦書き込む構成にしました。
寿命に影響はないという事ですので、直接書き込む方法も検討いたします。
ちなみにeMMCの寿命について、定量的に判断できるものはございますでしょうか?書き込み回数などがあればご教授いただければと思います。
お手数おかけしますが、よろしくお願いいたします
at_satoshi.ohta
太田です。
Armadillo-IoT G3に関する過去のフォーラムですが、こちらのフォーラムが参考になると思います。
A6Eでもそれほど変わらないはずです。
https://armadillo.atmark-techno.com/forum/armadillo/22121
単純な計算ですが、
例えば、eMMCが30K回のP/Eサイクルに対応する場合、eMMCに書き込む領域が2.5GBの領域であれば
(30*10^3)回*(2.5*10^9)バイト=7.5*10^13バイト分のデータを書き込めるはずです。
30秒に一回4KBのデータを書き込むとすれば、1年間で (365*24*60*2)回*(4*10^3)バイト=4.2*10^9バイト分のデータ量が書き込まれます。
つまり、eMMCの仕様にもよるので正解ではありませんが(7.5*10^13)/(4.2*10^9)=約17.6K年は持つ計算になり、全く気にする必要は無いかと思われます。
どうぞよろしくお願いいたします。
at_satoshi.ohta
at_satoshi.ohta
2024年10月28日 18時06分
太田です。
お世話になっております。
> マニュアル上では"nochroot"を使用することは非推奨とされています。
nochrootは動作中の環境でコマンドを実行するので、万が一取り返しのつかないコマンド(必要なファイルを削除してしまうなど)を間違って実行してしまった場合に復元不可能になるため非推奨としていました。
> この方法を使用した場合、どのような影響が考えられるか、ご教示いただけますでしょうか?
swupdateが失敗した場合でもコンテナは稼働し続けるので、その状態で書き込みをし続けるとログデータが壊れる可能性があることにご注意ください。
ちなみに/tmpにログを書きこむことでeMMCの書き込み頻度を抑えたい理由はありますでしょうか?
linuxはeMMCにデータを書き込む前にバッファに数十秒ほど貯めたあとに、eMMCへの書き込み処理を実行します。
そのため、ログデータであれば/var/app/volumesに直接書き込んでもeMMCの寿命に影響はないと思われます。
どうぞよろしくお願いいたします。