meta-something

論文とか研究とか趣味のネタとか

備忘録「Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話」

ラボの計算機がちょろっと古いLinuxOSで「dockerを入れようにもまずカーネルアップグレードの必要があって、そもそもOSのアップグレードは何処で断ち切れていて、じゃあ何処のノードなら依存関係なくて安全で…」という問題の根本原因を調査していたとき、以前Twitterのタイムラインで「Googleが数千台もある10年前のLinuxディストリをライブアップグレードした話」みたいなツイートを見かけたことを思い出した。
で、元ツイートは見つからなかったけれど、元論文を引用していると思われるはてなブログを見つけた。

blog.yuuk.io

元論文はこれ

MERLIN, M. Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One. In Proceedings of the 27th conference on Large Installation System Administration (LISA) (2013), pp. 105–114

web公開のPDF原稿

Live Upgrading Thousands of Servers from an Ancient Red Hat Distribution to 10 Year Newer Debian Based One | USENIX

書いた本人のスライドっぽいもの

http://marc.merlins.org/linux/talks/ProdNG-LC2013-JP/html/


紹介した記事が本当に詳細に説明してくれているので、ここでは述べない。ざっくり概要は

  • GoogleでもRedHat7.1に独自パッチを重ねて10年間運用していて
  • root領域の変更がアプリケーションに影響しないようにやり繰りしていたが流石に負の遺産が限界になり
  • DebianベースのProdNGという新しいディストリビューションに移行するときの作業

なのだけれど

Googleの本番Linuxカーネルデバイスドライバ、ユーザスペース、アプリケーションの3レイヤで管理されている。 カーネルデバイスドライバディストリビューションからは切り離されていて、頻繁に更新される。 このレイヤは別のチームがメンテナンスしており、今回の話には関係がない。

kernel更新はまた別のチームと書いてある。 原文では

Google’s production Linux OS is managed in three layers. The kernel and device drivers, user-space, and the running applications. The kernel and device drivers are updated frequently and separately from the operating system. These files are maintained, fleet-wide, by a different team. Aside from obvious touch points, this maintenance is unrelated to the work described in this paper.

kernelのライブアップグレードって普通ミッションクリティカルとかの分野ではどうやっているんだろう…?