IT・技術研修ならCTC教育サービス

サイト内検索 企業情報 サイトマップ

研修コース検索

コラム

クラウド時代のオープンソース実践活用

CTC 教育サービス

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes 

第59回 Docker専用のLinux - RHEL Atomic Hostが登場!(パート2) (中井悦司) 2015年1月

はじめに

 前回は、「RHEL Atomic Hostが登場!(パート1)」と題して、「Red Hat Enterprise Linux Atomic Host(RHEL Atomic Host)」のバージョン管理方式を解説しました。今回は、ディスクパーティションの構成とDockerイメージの保存方式について解説を進めます。

RHEL Atomic Hostのディスク構成

 前回説明したように、RHEL Atomic Hostでは、RPMパッケージの個別管理は行わず、ディレクトリーツリーをまるごと切り替えてバージョンアップを行います。この時、RHEL Atomic Host本体が導入されるディスク領域は、かなりコンパクトにおさえられています。筆者の手元の環境では、ルートファイルシステム用のパーティションは3GBです。その他には、スワップ領域とブート領域(/bootファイルシステム)があり、これらを除いた残りのディスク領域は、すべてDockerイメージの保存用に確保されています。

 これらの領域は、論理ボリュームマネージャーで管理されており、次のような論理ボリュームが確認できます。

# lvs
  LV          VG           Attr       LSize  ...
  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

 この中にある「docker-data」と「docker-meta」がDockerイメージの保存領域となりますが、実際のイメージはどのような形で保存されているのでしょうか? 実は、「Device Mapper Thin-Provisioning(dm-thin)」という機能で、これらの論理ボリュームの上に、さらに多数の「論理デバイス」が作られるようになっています。この後の図1にあるように、1つのDockerイメージは、1つの「論理デバイス」として保存されます。

Device Mapper Thin-Provisioningの機能

 dm-thinは、ベースとなるデータ用デバイス(今の場合は、論理ボリューム「docker-data」)の上に、任意の数の「論理デバイス」を定義していく機能を提供します。ただし、論理デバイスを定義しただけでは、実際の物理デバイスは消費しません。図1のように、論理デバイスに書き込みがあると、データ用デバイス(ブロックプール)から、一定サイズのブロックを切り出して割り当てていきます。1つのDockerイメージに対して、10GBの論理デバイスが割り当てられますが、実際に書き込みがあった分だけ物理ディスクを消費するので、物理ディスクの使用量が節約されます。論理デバイスに対するブロックの割り当て情報は、別途、メタデータ用デバイス(今の場合は、論理ボリューム「docker-meta」)に記録されます。

fig01

図1 dm-thinによるDockerイメージの管理

 また、Dockerでは、Dockerイメージのスナップショットコピーを多用します。たとえば、CentOS6のDockerイメージを元に、Apache Webサーバー(httpdパッケージ)を導入したイメージを作成する場合を考えます。はじめに、CentOS6のDockerイメージのスナップショットコピーが作成されて、これにhttpdパッケージを追加したものが、Apache WebサーバーのDockerイメージになります。

 Dockerイメージのスナップショットを作成する際は、dm-thinの機能でスナップショットコピーを作成します。そして、dm-thinのスナップショットでは、実際にはデータのコピーは行われません。図2のように新しい論理デバイスを定義して、コピー元の論理デバイスと同じブロックを割り当てます。どちらの論理デバイスも同じブロックを参照しているので、当然ながら、同じ内容が見えることになります。

fig02

図2 dm-thinによるスナップショットコピーの作成

 その後、どちらかに書き込みが発生すると、その部分にだけ新しいブロックが割り当てられます。つまり、CentOS6のイメージをコピーして、Apache Webサーバーのイメージを作成した場合、CentOS6に含まれる内容は両方のイメージでブロックを共有する形になります。後から追加した、httpdパッケージの保存部分のみが新しいブロックとして割り当てられます。

 この仕組みは、Docker Hubからイメージをダウンロードした場合でも有効です。CentOS6をベースに作成したイメージを複数ダウンロードした場合、内部的には、CentOS6のベースイメージとなる論理デバイスが1つ用意された後に、そのスナップショットコピーに対してそれぞれのイメージの差分が展開されるようになっています。この部分の詳細は、筆者のBlog記事を参考にしてください(*1)。

次回予告

 今回は、RHEL Atomic HostにおけるDockerイメージの保存形式について解説しました。ちなみに、RHEL Atomic Hostを使用せずに、普通のRHEL7/CentOS7にDockerをインストールするとどうなるのでしょうか? この場合は、docker-dataとdocker-metaに相当するディスクイメージファイルが用意されて、これをループバックマウントしたものが使用されます。このディスクイメージファイルは、スパース形式になっているため、論理ボリュームよりも処理性能は劣ります。このあたりは、最初からDocker専用に構成されたRHEL Atomic Hostの優位点と言えるでしょう。

 次回は、RHEL Atomic Hostのパフォーマンスチューニングに利用される「tunedプロファイル」を紹介します。

参考資料

(*1) 「Dockerイメージのレイヤー構造について

 

++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
 CTC教育サービス Linuxのページ
 http://www.school.ctc-g.co.jp/linux/
 

Linux研修トレーニングならCTC教育サービス


 

筆者書籍紹介

Software Design plusシリーズ
「独習Linux専科」サーバ構築/運用/管理
  ――あなたに伝えたい技と知恵と鉄則

本物の基礎を学ぶ!新定番のLinux独習書

中井悦司 著
B5変形判/384ページ
定価3,129円(本体2,980円)
ISBN 978-4-7741-5937-9
詳しくはこちら(出版社WEBサイト)
「独習Linux専科」サーバ構築/運用/管理

 [IT研修]注目キーワード   Python  UiPath(RPA)  最新技術動向  Microsoft Azure  Docker  Kubernetes