Podman、Buildah、およびCRI-Oの最近のバージョンは、新しいカーネル機能である揮発性オーバーレイマウントを利用し始めています。この機能を使用すると、ディスクに同期しないように指示するフラグを使用してオーバーレイファイルシステムをマウントできます。
オーバーレイマウントの使用法と利点についてのリマインダーが必要な場合は、昨年の夏の私の記事をご覧ください。
同期とは何ですか。なぜそれが重要なのですか?
Linuxでは、ファイルまたはディレクトリに書き込むときに、カーネルがデータをディスクに即座に書き込むことはありません。代わりに、大量の書き込みをバッファリングしてから、定期的にデータをディスクに保存してパフォーマンスを向上させます。これは同期と呼ばれます 。これに伴う問題は、プロセスが考えるということです。 書き込みが完了するとデータは保存されましたが、実際にはカーネルがそのデータを同期するまで保存されません。これは、データを書き込んでカーネルがクラッシュした場合、データが保存されなかった可能性があることを意味します。
このため、多くのファイルシステムは定期的に同期され、ツールは同期を頻繁に要求することができます。同期が発生すると、カーネルはロックを使用してデータの処理を停止し、すべてのデータをディスクに同期します。もちろん、これによりパフォーマンスが低下します。同期を頻繁に発生させるプロセスがある場合、ジョブのパフォーマンスが大幅に低下する可能性があります。 RPMなどの特定のツールでは、すべてのファイルがディスクに書き込まれた後に同期が必要になるため、そのファイルのすべてのダーティページがフラッシュされ、かなりのオーバーヘッドが発生します。
[コンテナを使い始めますか?この無料コースをチェックしてください。コンテナ化されたアプリケーションのデプロイ:技術的な概要。 ]
コンテナは同期する必要がない場合があります
コンテナの世界では、データが保存されているかどうかを気にしない多くのユースケースがあります。カーネルがクラッシュした場合でも、書き込まれたデータは使用されません。
buildah bud
を実行する場合 またはpodman build
、コンテナイメージはオーバーレイマウントポイントに書き込まれ、多くの場合DNFまたはYUMを使用します。イメージの作成中にカーネルがクラッシュした場合、オーバーレイレイヤーに書き込まれたコンテンツは役に立たないため、ユーザーがクリーンアップする必要があります。書き込みに失敗したものはすべて削除されます。ただし、ビルドが完了すると、オーバーレイレイヤーはイメージバンドルにまとめられ、ディスクに同期できるようになります。
揮発性オーバーレイマウントのもう1つの使用例は、--rm
を使用してPodmanを実行することです。 国旗。 --rm
フラグは、コンテナが完了したときにコンテナとオーバーレイマウントポイントを破棄するようにPodmanに指示します。コンテナがクラッシュすると、ユーザーがすでに使用していないことを示したコンテンツが残るため、書き込みが成功したかどうかを気にする必要はありません。
Kubernetesの世界では、CRI-Oがコンテナエンジンです。 Kubernetesは、ほとんどの場合、起動時にすべてのコンテナを削除するように設定されています。基本的には、クリーンな状態から始めたいと考えています。これは、データがオーバーレイマウントに書き込まれているときにカーネルがクラッシュした場合、システムが起動するとすぐにこのデータが破棄されることを意味します。データは通常、実行時に「揮発性」フラグの影響を受けない外部ボリュームに書き込まれるため、ステートフルコンテナでこのような構成を使用することも安全です。
揮発性オプションの追加
コンテナチームエンジニアのGiuseppeScrivanoは、これらのユースケースに気づき、Linuxカーネルのオーバーレイファイルシステムに揮発性オプションを追加してこの動作を実装することで、パフォーマンスを向上させることができると考えました。その結果、Buildah、Podman、およびCRI-Oの新しいバージョンでは、デフォルトでこれらのユースケースで揮発性フラグが使用され、パフォーマンスが向上することが期待されます。
コンテナにマウントされたボリュームは、通常のファイルシステムのデフォルトの同期動作を引き続き維持するため、永続ストレージに書き込まれたデータが失われることを心配する必要はありません。
以下のグラフは、yum install -y texlive
を実行するコンテナーで書き込みIOPSの数がどのように減少するかを示しています。 16GBのRAMを搭載したマシン。さらに、揮発性フラグをオンにしてコンテナを実行すると、実時間も影響を受け、より速く終了します。
ダーティ比率またはiノードタイムアウトのいずれかが期限切れになると、これらの設定は揮発性マウントフラグの影響を受けないため、ダーティページは最終的にストレージに書き込まれます。
まとめ
コンテナテクノロジーにより、Linuxシステムが処理できる範囲を常に広げ、新しいユースケースを試すことができます。カーネルのオーバーレイファイルシステムに揮発性オプションを追加すると、パフォーマンスが向上し、コンテナが進化し続け、より大きなメリットが得られるようになります。
[無料ダウンロード:高度なLinuxコマンドのチートシート。 ]