Armadilloフォーラム

差分SWUの作成、差分アップデート方法について

t-fukumoto

2024年8月22日 13時31分

お世話になっております。

Armadillo-IoT G4を使用したアプリケーションを作成しております。

端末をオンラインでアップデートしたいのですが、コンテナの容量が1GBほどあるため
差分アップデートにて対応したいと考えております。
しかし御社のマニュアル等を拝見しましたが、差分SWUを作成する項目が見当たりませんでした。
(フォーラムでいくつかの知見は確認できました。)

差分SWUの作成方法、差分アップデートの基本的なやり方をご教授頂けないでしょうか。

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

コメント

at_dominique.m…

2024年8月22日 15時16分

t-fukumotoさん

お世話になっています、
マルティネです。

> 端末をオンラインでアップデートしたいのですが、コンテナの容量が1GBほどあるため
> 差分アップデートにて対応したいと考えております。
> しかし御社のマニュアル等を拝見しましたが、差分SWUを作成する項目が見当たりませんでした。

申し訳ございません、マニュアルにはここの複雑な説明しかありません:
https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-iotg-g4_pro…

> 差分SWUの作成方法、差分アップデートの基本的なやり方をご教授頂けないでしょうか。

コンテナの作りとしてアップデート内奥を「レイヤー」に収めることができたら上記のリンクの様に差分アップデートを構築できますが、例えば ABOSDE による VSCode をご利用の場合にはまだこういうレイヤーの作りを対応してないため、あまり推奨できない状態です。

代わりに、大変お手数ですがコンテナのサイズを最適化した方が目指しやすいと思います。
具体的に:
* アプリが大きいデーターを使う場合(動画ファイル等)、そういうファイルをコンテナの中ではなく、/var/app を活用していただければ差分として転送可能です
(初期のインストールのみに転送して、次のアップデート以降はアップデートにデーターを含まずにコンテナ起動に必要に応じて欠けているファイルをダウンロードする等)
* OSイメージを最適化して、不要な依存の削除(コンテナの作りとしてはファイルを削除してもサイズが減らないので、squashかあらかじめ作り直す必要があります)

期待通りの返事できなくて申し訳ございません。
何か具体的な質問があれば何でも回答できますので遠慮なく聞いてください。

よろしくお願いします。

マルティネ様

お世話になっております。ご回答ありがとうございます。
資料を拝見したところ、弊社でやっている方法(podman commit, podman save)と同じなので差分アップデートが可能かと思いました。
つきましては、podman_partial_imageコマンドの仕様・使い方を教えて頂けますでしょうか。そうすればトライできるかと思います。

>>代わりに、大変お手数ですがコンテナのサイズを最適化した方が目指しやすいと思います。
おっしゃる通りです。ただPythonの機械学習ライブラリの容量が大きくどこまで減らせるかといったところです。
差分アップデートと並行して進めていきたいと思います。

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

at_dominique.m…

2024年8月23日 17時30分

t-fukumotoさん

マルティネです。

> 資料を拝見したところ、弊社でやっている方法(podman commit, podman save)と同じなので差分アップデートが可能かと思いました。

すでにご存知かと思いますが、podman commit が重なるとレイヤーが増えてもう見えないデーターでもpodman save に保存されてますので、その点だけはご注意ください。

> つきましては、podman_partial_imageコマンドの仕様・使い方を教えて頂けますでしょうか。そうすればトライできるかと思います。

すみません、マニュアル以上の説明はあまりないです。
仕様としては、podman save で普通にコンテナを保存した後にベース(armadillo にすでにあるイメージのレイヤー)を手動に削除しているだけです。
podman がそのやり方をサポートしているわけではなく、podman の仕様を利用したシェルスクリプトなでかなので、興味があればご確認ください。

使い方に関しては
- 少し古いですがこのブログでもコマンドが紹介されています:
https://armadillo.atmark-techno.com/blog/15288/12148
(マニュアルより新しい情報はあまりないと思います)
- --helpの内容をコピーして日本語にすると

Usage: /usr/bin/podman_partial_image [-b base [-b base...]] [-o out.tar] archive [archive..]
base = image name recognizable by podman image inspect, to be removed from archive
archive = image name recognizable by podman save
 
By default intermediate copies are stored in /var/tmp,
set TMPDIR to change that directory
 
-b でベース(アーカイブから削除する、armadillo にすでにあるイメージ)を何回か指定できます。
-o で出力ファイルを指定できます
追加パラメターで保存するイメージ名を何回か指定できます(複数の場合は複数のイメージを同じアーカイブに組み込みます)

申し訳ございませんが、試していただいて何か苦労する点があれば聞いてください。

> ただPythonの機械学習ライブラリの容量が大きくどこまで減らせるかといったところです。

学習モデルが大きい場合はそれだけをコンテナの外(/var/app/rollback/volumes下)で管理すればコンテナの管理自体がだいぶ楽になると思いますので、ぜひ試してみてください。

よろしくお願いします。