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」の下に展開されます。この時、ベースイメージから派生したイメージの場合、ベースイメージに含まれるファイルについては、ベースイメージのディレクトリーにあるファイルへのハードリンクを使用することで、ディスク使用量を削減します。
この続きは以下をご覧ください
http://www.school.ctc-g.co.jp/columns/nakai/nakai69.html
ソーシャルもやってます!