Armadilloフォーラム

hawkbitを使用したアップデート配信について

nakayama244

2023年5月10日 17時46分

Swupdate を行った際に処理が完了しないため原因について確認したいです。

FAQにあったSwupdate が終了しない場合に該当していました。
https://armadillo.atmark-techno.com/faq/swupdate-troubleshooting-abos

Waiting for btrfs to flush deleted subvolumesのログ以降にログが出力されていませんでした。

現状の状態として
armadillo:~# service swupdate-hawkbit status での状態が status: crashedとなっていました。

FAQ にあったbtrfs subvolume syncのプロセスを
armadillo:~# ps aux | grep btrfs
で検索しましたがありませんでしたので起動していないようです。

プロセスが起動していないため不要かもしれませんが添付ファイルにて
findmntの内容を記載します。

以上、よろしくお願いいたします。

ファイル ファイルの説明
findmnt.txt
コメント

情報の追加として
hawkbitサーバーを使用してRolloutを実行しています。
実行後、armadillo側のログにswupdate 開始のログが出ているのでサーバからの接続などはできているように思います。
一定時間経過後、swupdate-hawkbitのステータスがstartedからcrashedになっていました。
hawkbitのGUI画面のstatusは黄色のバーのままになっています。

at_dominique.m…

2023年5月11日 11時06分

nakayama244さん

ご連絡ありがとうございます、
アットマークテクノのマルティネです。

順番を少し変えて答えます。

> Waiting for btrfs to flush deleted subvolumes / btrfs subvolume sync

ハングではなく、クラッシュした模様ですので、ここで固まっていないと思います。findmnt の出力にも問題なさそうです。

> armadillo:~# service swupdate-hawkbit status での状態が status: crashedとなっていました。

これは気になりますね。アップデートが失敗しても swupdate が停止しないはずですので、swupdate のバグですね…
もう少し情報を伺ってもよろしいでしょうか?

1- baseos のバージョンを確認させてください。

armadillo:~# cat /etc/atmark-release 
3.17.3-at.5
armadillo:~# apk list swupdate
swupdate-2022.12_git20230414-r0 aarch64 {swupdate} (GPL-2.0-or-later) [installed]

2- swupdate の実行ログ、最後は waiting for btrfs とおっしゃっていましたが
まわりのメッセージに何かヒントになるものがないかを確認したいと思いますので、
最後の実行すべての内容をお願いします。アップデートの URL やファイル名を消しても構いません。

armadillo:~# grep -i swupdate /var/log/messages

3- 再現できますか?
hawkbit側ではまだアップデート中ですので、swupdate-hawkbit サービスを再実行する(restart)と再びアップデートを試すと思います。
毎回同じ不具合でしたら 「

ulimit -c unlimited;  cd /var/tmp; SWUPDATE_HAWKBIT=1 /usr/bin/swupdate -u '-e -c 0'

」で実行してもらえると何か分かるかもしれません。サービス経由では一部の出力が失っている可能性もありますし、segmentation fault の場合は ./core ファイルが作成されて問題の修正にはすごく役立ちます(公人情報はいってるかもしれませんので、とりあえずあるかどうかだけをお願いします)

お手数ですがよろしくお願いします。

マルティネ様

以下に回答いたします。
> 1- baseos のバージョンを確認させてください。
添付テキスト「バージョン情報.txt」

> 2- swupdate の実行ログ、最後は waiting for btrfs とおっしゃっていましたが
> まわりのメッセージに何かヒントになるものがないかを確認したいと思いますので、
> 最後の実行すべての内容をお願いします。アップデートの URL やファイル名を消しても構いません。
添付テキスト「swupdate_log.txt」
ログを出力してテキストファイルにまとめました。ご確認お願い致します。

> 3- 再現できますか?
> hawkbit側ではまだアップデート中ですので、swupdate-hawkbit サービスを再実行する(restart)と再びアップデートを試すと思います。
> 毎回同じ不具合でしたら 「

ulimit -c unlimited;  cd /var/tmp; SWUPDATE_HAWKBIT=1 /usr/bin/swupdate -u '-e -c 0'
> 

」で実行してもらえると何か分かるかもしれません。サービス経由では一部の出力が失っている可能性もありますし、segmentation fault の場合は ./core ファイルが作成されて問題の修正にはすごく役立ちます(公人情報はいってるかもしれませんので、とりあえずあるかどうかだけをお願いします)

こちらのコマンドはhawkbitを実行しているPCの方で実行でしょうか。

以上、よろしくお願いいたします。

ファイル ファイルの説明
バージョン情報.txt 1.回答内容
swupdate_log.txt 2.回答内容

at_dominique.m…

2023年5月22日 11時08分

nakayama244さん

返事が遅くなって申し訳ございません、休日をいただいた間にうまく連携をできてませんでした。

> > 1- baseos のバージョンを確認させてください。
> 添付テキスト「バージョン情報.txt」

バージョン情報ありがとうございました。
最新ではありませんが、とりあえず hawkbit の対応コードに更新がなかったことを確認できました。残念ながらこちらの動作確認にも特に問題を見つかりませんでした。

> > 2- swupdate の実行ログ、最後は waiting for btrfs とおっしゃっていましたが
> > まわりのメッセージに何かヒントになるものがないかを確認したいと思いますので、
> > 最後の実行すべての内容をお願いします。アップデートの URL やファイル名を消しても構いません。
> 添付テキスト「swupdate_log.txt」
> ログを出力してテキストファイルにまとめました。ご確認お願い致します。

ありがとうございます。
無事にインストールできた場合もありましたが、「Jan 2 08:55:45」の行あたりのことですね。(時間をネットワークで取得できない環境ですしたね?)
「Waiting for btrfs to flush deleted subvolumes」の後だけではなく、その直前の「No base os update: copying current os over」との間でも失敗していたようですね…ネットワーク接続のメッセージが気になっていましたがが、その二つの行の間にネットワークを使っていないはずですのでお手数ですがもう少し情報が必要になりそうです。

以下の 3- の後に追加質問をさせていただきました。

> > 3- 再現できますか?
> > hawkbit側ではまだアップデート中ですので、swupdate-hawkbit サービスを再実行する(restart)と再びアップデートを試すと思います。
> > 毎回同じ不具合でしたら 「ulimit -c unlimited;  cd /var/tmp; SWUPDATE_HAWKBIT=1 /usr/bin/swupdate -u '-e -c 0'
> > で実行してもらえると何か分かるかもしれません。サービス経由では一部の出力が失っている可能性もありますし、segmentation fault の場合は ./core ファイルが作成されて問題の修正にはすごく役立ちます(公人情報はいってるかもしれませんので、とりあえずあるかどうかだけをお願いします)
>
> こちらのコマンドはhawkbitを実行しているPCの方で実行でしょうか。

すみません、Armadillo側です。
ご使用のバージョンでは停止前にログが出力されない場合もありますので、-vも追加してくだされば失敗の理由が分かるかもしれません:

armadillo:~# rc-service swupdate-hawkbit stop
armadillo:~# ulimit -c unlimited
armadillo:~# cd /var/tmp
armadillo:/var/tmp# SWUPDATE_HAWKBIT=1 /usr/bin/swupdate -u '-e -c 0' -v

また、追加質問です:
4- 前回聞くべきでしたが SWU を作成していた時の mkswu のバージョン(ATDE上で mkswu --version)もお願いします。そちらの失敗の時に必ずログが出力されるはずですので聞きませんでしたが、念のために確認します。
5- その後の May 10 18:23:52 等の成功したアップデートも同じ物でしたか?USBメモリでインストールを行っていましたか?そうでしたら、hawkbit で必ず失敗する認識ですが、あっていますか?ちょうど先週に別の案件でアップデートのタイムアウトが失敗の原因につながらないかという疑問があったので、時間あれば「swdesc_command --version test 1 true」 の何もしない .desc ファイルを作っていただいて、そのファイルから作った swu で試していただけたらと思います。こちらでも大きいイメージを作ってみてネットワークエラーの環境で試してみたいと思います。

よろしくお願いします。