Red Hat Enterprise Linux Atomic Host のご紹介 レッドハット株式会社 v1.1 2015-02-09 RHEL Atomic Host のご紹介
自己紹介 中井悦司 ( なかいえつじ ) Twitter @enakai00 日々の仕事 Senior Solution Architect and Cloud Evangelist at Red Hat K.K. 企業システムでオープンソースの活用を希望される お客様を全力でご支援させていただきます 好評発売中! 昔とった杵柄 素粒子論の研究 ( 超弦理論とか ) 予備校講師 ( 物理担当 ) インフラエンジニア (Unix/Linux 専門 ) 2
Contents Red Hat Enterprise Linux Atomic Host の概要 Red Hat Enterprise Linux Atomic Host の特徴 参考資料 (*) 本資料の内容は Public Beta 版の RHEL Atomic Host の仕様に基づいています GA 版では仕様が変更される可能性があります 3
Red Hat Enterprise Linux Atomic Host の概要 RHEL Atomic Host のご紹介
Docker に対する Red Hat の貢献 Red Hat の開発協力により RHEL 対応とさらなる機能拡張を継続 RHEL7 での正式サポート RHEL の Thin Provisioning 機能対応 ( ディスク性能の向上 ) RHEL7 のプロセス管理機能 (systemd) との統合 Docker 専用 Linux ディストリビューションの提供 5
RHEL Atomic Host とは? Red Hat Enterprise Linux 7 をベースに Docker の実行環境として最適化した Linux ディストリビューション Kubernetes で管理するための前提パッケージを追加 Docker 用に最適化したディスク構成でインストール Docker イメージ保存領域を専用の論理ボリュームで構成 Docker 用の tuned プロファイル提供 rpm-ostree による一括アップデート機能 RPM パッケージの個別管理が不要 アップデート後のロールバック ( 以前のバージョンへの復帰 ) が可能 アップストリームの開発プロジェクトは PROJECT ATOMIC http://www.projectatomic.io/ 6
Red Hat Enterprise Linux Atomic Host の特徴 RHEL Atomic Host のご紹介
RHEL Atomic Host のディスク構成 RHEL Atomic Host インストール直後の論理ボリューム構成例 # lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert docker-data rah_atomic01 -wi-ao---- 26.64g docker-meta rah_atomic01 -wi-ao---- 36.00m root rah_atomic01 -wi-ao---- 3.00g swap rah_atomic01 -wi-ao---- 2.03g データ用デバイスとして使用メタデータ用デバイスとして使用 ルートファイルシステム (3GB) Swap 領域以外は すべて Docker イメージ保存領域として確保 Device Mapper Thin-Provisioning(dm-thin) で作成する 論理デバイス のブロックプールとして利用 Docker イメージ Docker イメージ 論理デバイス #1 論理デバイス #2 論理デバイスへの個々のブロックの割り当てを記録 8 データ用デバイス ( ブロックプール ) メタデータ用デバイス
( 参考 )dm-thin のスナップショット機能 Docker は Docker イメージのスナップショットコピーを多用しますが RHEL Atomic Host(RHEL7) 対応の Docker では dm-thin のスナップショット機能を用いて コピーを作成します 差分領域のみに新しいブロックが割り当てるため高速にコピーを取得すると共に ディスク使用量を節約する効果があります スナップショット作成直後 書き込み発生 A B C A B C A B C A B D A B C ブロックプール A B C D ブロックプール 書き込んだ部分は新しいブロックを割り当てる 9
RHEL Atomic Host のアップデート方法 RHEL Atomic Host 自体のアップデートは 次の atomic コマンドで実施します RPM パッケージを個別に追加 / アップデートすることはできません ホスト全体として一括でバージョンアップします # atomic status 現在のバージョンを確認 VERSION ID OSNAME REFSPEC * 7.0.0 dcf0c846ff rhel-atomic-host rhel-atomic-host:... # atomic upgrade 最新バージョンにアップデート... Updates prepared for next boot; run "systemctl reboot" to start a reboot # reboot # atomic status 再起動するとバージョンが変わっている VERSION ID OSNAME REFSPEC * 7.0.1 18a9998c80 rhel-atomic-host rhel-atomic-host-beta-ostree:... 7.0.0 dcf0c846ff rhel-atomic-host rhel-atomic-host-beta-ostree:... 以前のバージョンの構成も保存されているため 次のコマンドで以前のバージョンに戻すことも可能です # atomic rollback 7.0.0 10
rpm-ostree によるバージョン管理 (1) RHEL Atomic Host のバージョンアップは rpm-ostree の機能で実現されています 複数バージョンのファイルを 内部リポジトリ に保存してあり ここから 各バージョンのルートファイルシステムを個別のディレクトリーに展開 ( デプロイ ) します システム起動時に特定バージョンのディレクトリーに chroot します 特に /usr はリードオンリーでマウントされるようになっており 複数バージョンで共通のファイルは 内部リポジトリの同一ファイルへのハードリンクとして展開されます 複数バージョンの内容を同時に保持してもディスクの使用量が節約されるようになっています このため /usr 以下にファイルを追加することはできません Docker 専用環境のためアプリケーションの追加などは想定されていません 内部リポジトリ /sysroot/ostree/repo 起動時に chroot でルートファイルシステムを選択 デプロイ デプロイ /sysroot/ostree/deploy/<v7.0.0> /sysroot/ostree/deploy/<v7.0.1> 11
rpm-ostree によるバージョン管理 (2) /var 以下はバージョン管理の対象外となっており /var 以下に保存したファイルは バージョンアップをしてもそのまま残ります 下図のように いくつかのディレクトリーは /var 以下へのシンボリックリンクになっています # ls -l / grep '^l' lrwxrwxrwx. 1 root root 7 Jan 9 19:38 bin -> usr/bin lrwxrwxrwx. 1 root root 8 Jan 9 19:38 home -> var/home lrwxrwxrwx. 1 root root 7 Jan 9 19:38 lib -> usr/lib lrwxrwxrwx. 1 root root 9 Jan 9 19:38 lib64 -> usr/lib64 lrwxrwxrwx. 1 root root 9 Jan 9 19:38 media -> run/media 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 14 Jan 9 19:38 ostree -> sysroot/ostree lrwxrwxrwx. 1 root root 12 Jan 9 19:38 root -> var/roothome lrwxrwxrwx. 1 root root 8 Jan 9 19:38 sbin -> usr/sbin lrwxrwxrwx. 1 root root 7 Jan 9 19:38 srv -> var/srv lrwxrwxrwx. 1 root root 11 Jan 9 19:38 tmp -> sysroot/tmp /etc 以下はバージョンごとに個別に用意されますが バージョンアップの際 既存の設定内容 ( デフォルトから変更しているファイル ) は 新バージョンのディレクトリーにコピーされます バージョンごとにディレクトリーが分かれているので 過去のバージョンにロールバックした際は 過去の設定内容に戻ります 12
Atomic Host 専用 tuned プロファイル tuned は Linux の各種パラメータを環境に応じて自動チューニングするサービスです サーバーの使用目的に応じて プロファイルを選択してチューニング方針を変更することができます RHEL Atomic Host では Docker 環境専用のプロファイルが 2 種類用意されています atomic-guest : 仮想マシン上で RHEL Atomic Host を使用する際に自動選択されます atomic-host : 物理ホスト上で RHEL Atomic Host を使用する際に自動選択されます それぞれ virtual-guest / latency-performance プロファイルをベースに下図の追加設定が行われます [selinux] avc_cache_threshold=65536 13
参考資料 RHEL Atomic Host のご紹介
参考資料 RHEL Atomic Hostのバージョン管理方式 http://d.hatena.ne.jp/enakai00/20150110/1420852188 Docker 専用の Linux - RHEL Atomic Host が登場!( パート 1) http://www.school.ctc-g.co.jp/columns/nakai/nakai58.html Docker 専用の Linux - RHEL Atomic Host が登場!( パート 2) http://www.school.ctc-g.co.jp/columns/nakai/nakai59.html Docker 専用の Linux - RHEL Atomic Host が登場!( パート 3) http://www.school.ctc-g.co.jp/columns/nakai/nakai60.html 15
Thank you RHEL Atomic Host のご紹介