2015-01-10
RHEL Atomic Hostのバージョン管理方式
RHEL Atomic Hostとは
RHEL Atomic Hostは、Dockerを利用するために専用に設計されたLinuxディストリビューションです。RHEL7をベースとして、Dockerの利用に必要なパッケージ、および、etcdなど、Kubernetesから管理するための前提パッケージが含まれた構成になっています。現在、Red Hatから、パブリックベータが公開されています。
RHEL/CentOSに普通にDockerをインストールした場合、Docker Imageの保存領域(dm-thinで管理するディスク領域)がスパース形式のディスクイメージファイルという、ちょっとイケてない構成になりますが、RHEL Atomic Hostでは、専用の論理ボリュームがイメージの保存領域として用意されるなど、Dockerの利用に特化したカスタマイズ/チューニングも行われています。
RHEL Atomic Hostのバージョン管理方式
驚くことに、RHEL Atomic Hostには、「yumコマンド」が入っていません。Docker専用OSなので、個別パッケージの追加などのカスタマイズは不要という発想なのです。ただし、RHEL Atomic Hostそのもののバージョンアップは存在します。初期バージョンは「7.0.0」ですが、現時点では、マイナーバージョン「7.0.1」がリリースされています。バージョンアップ処理は、次の「atomic」コマンドを利用します。
まず、現在のバージョンを確認します。
# atomic status VERSION ID OSNAME REFSPEC * 7.0.0 dcf0c846ff rhel-atomic-host rhel-atomic-host:rhel-atomic-host/7/x86_64/standard
次のコマンドで、最新バージョンをRHN(Red Hat Network)から取得します。(事前にRHNへのサブスクリプション登録が必要です。)
# atomic upgrade ...(中略)... Updates prepared for next boot; run "systemctl reboot" to start a reboot
最後のメッセージにあるように、次回のリブート時は、新しいバージョンで起動してきます。リブート前にステータスを確認すると、次のように2つのバージョンが存在することが分かります。
# atomic status VERSION ID OSNAME REFSPEC 7.0.1 18a9998c80 rhel-atomic-host rhel-atomic-host-beta-ostree:rhel-atomic-host/7/x86_64/standard * 7.0.0 dcf0c846ff rhel-atomic-host rhel-atomic-host-beta-ostree:rhel-atomic-host/7/x86_64/standard
リブート後にステータスを確認すると、「7.0.1」で起動していることが分かります。
# atomic status VERSION ID OSNAME REFSPEC * 7.0.1 18a9998c80 rhel-atomic-host rhel-atomic-host-beta-ostree:rhel-atomic-host/7/x86_64/standard 7.0.0 dcf0c846ff rhel-atomic-host rhel-atomic-host-beta-ostree:rhel-atomic-host/7/x86_64/standard
やっぱり元のバージョンに戻したくなった時は、次のコマンドでOKです。
# atomic rollback 7.0.0
中の仕組み
ついにバージョンアップ後のロールバック機能が実装されたのかと胸熱になりますが、内部的には、rpm-ostreeという、Gitと類似の仕組みを使っています。(レイヤー型ファイルシステムのようなことはしていません。)複数バージョンのディレクトリーツリーをマージしたリポジトリーを内部に用意しておき、それぞれのバージョンのファイル群を個別のディレクトリーに「チェックアウト」(ostree用語で「デプロイ」)しています。システム起動時は、指定のバージョンがチェックアウトされたディレクトリーにchrootして起動してきます。
なお、「/var」は、rpm-ostreeの管理対象外となっているので、バージョンアップで消える(変更される)と困るファイルは、/var以下に保存する必要があります。ルートディレクトリーを見ると、次のように、書き込みが発生するディレクトリーは、/varの下に移動された構成になっていることが分かります。
# ls -l / | grep var lrwxrwxrwx. 1 root root 8 Jan 9 19:38 home -> var/home lrwxrwxrwx. 1 root root 7 Jan 9 19:38 mnt -> var/mnt lrwxrwxrwx. 1 root root 7 Jan 9 19:38 opt -> var/opt lrwxrwxrwx. 1 root root 12 Jan 9 19:38 root -> var/roothome lrwxrwxrwx. 1 root root 7 Jan 9 19:38 srv -> var/srv drwxr-xr-x. 24 root root 4096 Jan 9 19:19 var
「/etc」については、また違う特別扱いで、バージョンアップ時は、既存のファイルとバージョンアップ後の内容がマージされるようになっています。
そして、通常、書き込みが発生しない「/usr」は、Readonlyでマウントされており、この中のファイルは変更ができません。そのため、複数バージョンで同じ内容のファイルは、内部的に同一ファイルへのハードリンクを用いて、重複排除するようになっています。
- 48 https://www.google.co.jp/
- 13 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB8QFjAA&url=http://d.hatena.ne.jp/enakai00/20140712/1405139841&ei=RYGwVNWDFaXLmwXu14KQCQ&usg=AFQjCNExSoIJ147cQx7KKK1lijD4kkYK3g&sig2=r1NeoRPhFJR7CX2EvklV6g
- 9 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCYQFjAB&url=http://d.hatena.ne.jp/enakai00/20120528/1338209840&ei=tYawVLnlMcPlmAXsh4GADQ&usg=AFQjCNH_-JDbTvkRdkbBA0EyqejhKPUnoA&bvm=bv.83339334,d.dGY
- 5 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CCkQFjAC&url=http://d.hatena.ne.jp/enakai00/20131215/1387109226&ei=komwVKy3EcWzmAXs14HQCA&usg=AFQjCNEmJr8YXeMG1DKYNnJNCHKB6G0VEA&sig2=HsHJ4hiC2JIqzEdBwoUlpw
- 4 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CDsQFjAD&url=http://d.hatena.ne.jp/enakai00/20130917/1379374797&ei=KpywVJGOGKXFmwWyjILoCQ&usg=AFQjCNFji_gOzfLajfpFU34oyjZHAsivXw&bvm=bv.83339334,d.dGY&cad=rja
- 3 http://pipes.yahoo.com/pipes/pipe.info?_id=VPw6npu13RGKo15vBRNMsA
- 3 http://www.google.co.jp/url?url=http://d.hatena.ne.jp/enakai00/20110307/1299464439&rct=j&frm=1&q=&esrc=s&sa=U&ei=gL2wVJLuD6WxmwXOkIJo&ved=0CDIQFjAFOAo&usg=AFQjCNFJaVDrBDnYfHKNbwYNzvKOi5te3g
- 2 http://equj65.net/tech/systemd-boot/
- 2 http://feedly.com/i/latest
- 2 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=2&ved=0CCMQFjAB&url=http://d.hatena.ne.jp/enakai00/20140728/1406504163&ei=unywVOTDBIHImAWvrILIAQ&usg=AFQjCNHGa0sEPAEVBew1jx_6ujmiJI2EKQ
- 2015-01-05 とあるプログラマの日記 @s025236 5/77 6%
- 2015-01-08 試したこととか困ったこととか 5/85 5%