logo

Dockerのoverlayfsドライバーによる性能向上

CTC教育サービスはコラム「Dockerのoverlayfsドライバーによる性能向上」を公開しました。

###
はじめに
 前回のコラムでは、Dockerのストレージバックエンドの性能比較として、1000個のコンテナーを起動/停止するベンチマークの結果を紹介しました。その中で、オーバーレイ型のファイルシステムを利用した、overlayfsドライバーの性能が優れていることがわかりました。今回は、このoverlayfsドライバーについて解説したいと思います。

overlayfsの仕組み
 overlayfsは、2014年の年末に公開されたLinuxカーネル3.18で正式採用されており、Linuxの標準機能として利用することができます。たとえば、Fedora22では、標準でoverlayfsが利用可能になっています(*1)。

 overlayfsは、「Lowerレイヤー」と呼ばれる既存のディレクトリーの上に、「Upperレイヤー」と呼ばれる新しいディレクトリーを被せた状態で、ファイルシステムをマウントする機能を提供します。次は、「/old」ディレクトリーに「/upper」ディレクトリーを被せて、「/new」ディレクトリーにマウントする例になります。「/work」は、overlayfsが内部的に使用する作業用ディレクトリーです。

# mount -t overlay overlay -o upperdir=/upper,lowerdir=/old,workdir=/work /new
 /newの中を見ると/old同じ内容が見えますが、/newに書き込んだ内容は、上に被せた/upperの方に保存されます。つまり、既存のディレクトリーに透明なビニールシートを被せて読み書きしているようなもので、既存のディレクトリーの内容を破壊することなく、自由に読み書きすることが可能になります。この時、1つのLowerレイヤーに対して、異なるUpperレイヤーを用いて、複数のマウントポイントにマウントすることも可能です。これは、Lowerレイヤーのディレクトリーについて、複数のスナップショットコピーを作成して、同時に読み書きするような使い方になります。

Dockerのoverlayfsドライバー
 Dockerでoverlayfsドライバーを利用すると、ローカルにダウンロードしたDockerイメージは、それぞれ、ディレクトリー「/var/lib/docker/overlay/<イメージID>/root」の下に展開されます。この時、ベースイメージから派生したイメージの場合、ベースイメージに含まれるファイルについては、ベースイメージのディレクトリーにあるファイルへのハードリンクを使用することで、ディスク使用量を削減します。

この続きは以下をご覧ください
リンク

本プレスリリースは発表元企業よりご投稿いただいた情報を掲載しております。
お問い合わせにつきましては発表元企業までお願いいたします。