📝

yum(apt)のupdateを高速化したい

2023/08/29に公開

https://qiita.com/items/af63c7797d096e160978


お詫び

Qiitaの元記事にて、区切り線を「---」で書いている場所があり、これがZennの記法に干渉して一部うまく表示できない記事がある事を認識しています。
全ての記事を精査しきれていないため、お手数ですがお見かけの際は教えていただけると大変喜びます。


Dockerコンテナを建てる時にとりあえず入れている

yum update && yum -y upgrade

を、コンテナを作るたびに実施させていたら、これだけで時間を多く取られる事になります。
また、実行したタイミングによって、開発中も保守中も常にバージョンが安定しない可能性があるので、これを解消しようという狙いです。
Dockerfile自体はgitなりでバージョンを管理している想定です。

手順

https://orebibou.com/2015/04/ubuntu-server-14-04-ltsでaptサーバaptリポジトリミラーサーバを構築/
https://yosida95.com/2013/05/19/003744.html
を参考に進めてます。

作業をする前に136GB以上の容量を確保しておく、ぐらいでしょうか。
構築時に恐ろしく時間が掛かるので、気長にやりましょう。

構築自体は難しくないんですが、運用を考えた時に落とし穴が多いので、その話を。

運用のイメージについて

yum(apt)のミラーをローカルに持つ

このコンテナ(サーバー)でupdate && upgradeを実施するタイミングを管理するために準備する。
実施タイミングが手動なら手動でも良いでしょう。

LAN内のコンテナはyum(apt)を見るようにする

外のサーバーにデータを取りに行くのと比べるまでもなく速くなりました。
また、例えば1時間ずれただけでバージョンが更新されていた、なんてウッカリもないです。[1]

普通にyum(apt)

サクッと書いてますが、ちゃんと切り替え出来てるよね?という確認をしたい場合は一時的にyum(apt)サーバーのバージョンを古くして、そちらと同じバージョンになっている事を確認する必要があります。
あるいは、一週間寝かすぐらいがいいと思います。

が、本記事としては、そんな確認のために時間を掛けるよりは、起こっちゃったら環境を作り直したほうがなんぼか早いんじゃないでしょうか?
取り返しがつく範囲での運用が前提です。[2]

サーバーをupdateした場合

運用として、

  • 全部updateする
  • 来るべき時まで触らない

が考えられますが、さっさと上げてバグ取りした方が有意義な気がします。
というのも、いつの間にかバージョンが大きく変わって修正箇所が大量に!なんてことも考えられるからです。[3]
サーバーの数が多ければ多いほど大変な作業になります。
ウッカリupdate && upgradeが出来たから大丈夫、と思って運用を継続すると気付かないところにバグがあった、なんてことも。
1サーバーずつupdate && upgradeして、運用に問題がない事を確認した方が安全です。

参考

https://orebibou.com/2015/04/ubuntu-server-14-04-ltsでaptサーバaptリポジトリミラーサーバを構築/
https://yosida95.com/2013/05/19/003744.html

読了後いいね!をお願いします。

どれだけの方に読んでもらっているか知りたいので、お手数をおかけしますがご協力いただけると嬉しいです。

脚注
  1. バージョンの差異はない:aptサーバーが同期してるので運用を間違えなければおかしくならないはず。 ↩︎

  2. 取り返しがつく運用:データは割れ物だと思って運用してほしいものです… ↩︎

  3. 全然メンテされてない某バージョン管理サーバーのバージョンアップが恐ろしく大変だったのも、今となってはいい思い出 ↩︎

GitHubで編集を提案

Discussion