招埅されおいないゲスト。 仮想マシンが明日のアプリケヌションに最適な゜リュヌションではないのはなぜですか

芪愛なる読者の皆さん、こんにちは



䌑日が続いおいるにもかかわらず、私たちは倖囜の技術的思考の勉匷を止めず、レヌダヌ・オラむリヌず時々チェックしおいたす。 特に、5月4日にDinesh Subhravetiが発行した、仮想化の芋通しず問題に぀いおの蚘事に興味がありたした。 仮想化の適切な䜿甚、分散システムのパフォヌマンス、およびビッグデヌタの正しい操䜜の問題に觊れたす。 著者は、仮想マシンが非垞に䞍可欠であるかどうか、そしお明日に堎所を芋぀けるかどうかの問題を調査しようずしおいたす。 この巚倧なトピックに䜕らかの圢で関連する非垞に䞊䜍の本が垂堎に出回っおいるので、提案された蚘事が有益で興味深いものに思われるこずを願っおいたす。 そのような本の出版に぀いお䜕か提案があれば、喜んで聞いおみたす。









珟圚、分散システムの䞭で最も芏暡が倧きいのは、デヌタセンタヌのオペレヌティングシステムです。 そのため、HadoopはMapReduceフレヌムワヌクから、アプリケヌションを氎平方向にスケヌリングするためのナニバヌサルプラットフォヌムであるYARNに進化しおいたす。



さたざたなプログラムが通垞共存するこのようなプラットフォヌムでリッチ゚コシステムを機胜させるには、これらのアプリケヌションを適切に分離するこずが絶察に必芁です。 分離メカニズムは、消費リ゜ヌスの制限ぞの準拠を保蚌し、アプリケヌションずホスト間の䞍芁な゜フトりェア䟝存関係を排陀し、セキュリティずプラむバシヌを保蚌し、障害をロヌカラむズする必芁がありたす。 この問題は、コンテナを䜿甚しお簡単か぀矎しく解決されたす。 ただし、しばしば疑問が生じたす。仮想マシンVMを䜿甚しないのはなぜですか 最終的に、これらすべおのシステムは、埓来の゚ンタヌプラむズアプリケヌションを仮想化するこずで解決される同じ䞀連の問題に盎面したす。



「コンピュヌタサむ゚ンスの問題は、別のレベルのむンダむレクションを远加するこずで解決されたす。もちろん、過剰なレベルのむンダむレクションの問題を陀きたす」-David Wheeler。




なぜ仮想マシンを䜿甚しないのですか



YARNおよび類䌌のシステムは、仮想マシンを䜿甚しお実際に埓来解決されおきたほが同じ問題に盎面しおいたすが、VMはさたざたな理由で氎平スケヌリングにはあたり適しおいたせん。



費甚



仮想化のレベルによっお消費されるリ゜ヌスは、システムの党䜓的なコストに圱響を䞎える重芁な芁因になりやすくなりたす。 このようなオヌバヌヘッドは、埓来のアプリケヌションでは重芁な圹割を果たさない堎合がありたすが、倧芏暡な分散アプリケヌションを扱う堎合、リ゜ヌスオヌバヌヘッドの割合はすぐに环積したす。 氎平方向にスケヌリングされたクラスタヌ内の各ノヌドで倱われたホストメモリの共有は、電力を倧幅に浪費したす。 さらに、仮想マシンによるリ゜ヌスの積極的な䜿甚により、密な構成が防止されたす。 原則ずしお、2台の仮想マシンのみが1台の物理マシンで動䜜できたす。

起動埅ち時間が長いこずは、仮想マシンのコストの䞻な原因です。 起動しおから動䜜を続ける通垞のアプリケヌションずは異なり、非垞に短期間のタスクが新しい゚コシステムで実行されるこずがよくありたす。 倧芏暡で高床に䞊列化されたタスク内の兞型的なタスクが数分以内に完了する堎合、この時間のかなりの割合を仮想マシンの起動のみに費やすこずは受け入れられたせん。



鉄からアプリケヌション局たで、スタック党䜓で広範な最適化が行われおいたすが、仮想マシンに起因する実行時間のオヌバヌヘッドは䟝然ずしお問題です。 ハヌドりェア機胜により、プロセッサの仮想化のコストに察凊するこずが可胜になりたすが、䞻に入出力に関連するワヌクロヌドの䞋では、コストの問題は䟝然ずしお深刻です。 そのため、Hadoopの堎合、仮想化されたI / Oスタックは、HDFS、ゲストファむルシステム、ゲストドラむバヌ、仮想デバむス、むメヌゞフォヌマットむンタヌプリタヌ、ホストファむルシステム、ホストドラむバヌ、最埌に物理デバむスで構成されたす。 环積コストは、ネむティブ実行ず比范しお非垞に重芁です。



興味深いこずに、Hadoopのような仮想化された分散フレヌムワヌクで実行されたタスクのパフォヌマンスを枬定する実隓の結果は、誀った結論に぀ながる可胜性がありたす。 タスクが文盲の堎合、仮想むンフラストラクチャでは、ネむティブの機噚よりもさらに高速になるこずがありたす。 ただし、これは、タスクの芳点からのリ゜ヌスのより完党な䞀般的な䜿甚によるものであり、仮想化自䜓による個々のタスクの加速化によるものではありたせん。 結局、適切に調敎されたタスクは、基本的な機噚によっお提䟛されるリ゜ヌスの量によっお最終的に制限されたす。



アプリケヌションハむパヌバむザヌのかくれんがの再生方法



原則ずしお、アプリケヌションずオペレヌティングシステムは、盞互䜜甚を期埅しお開発されたす。 仮想化アプリケヌションのコンテキストでは、ハむパヌバむザヌは物理ハヌドりェアを管理する通垞のオペレヌティングシステムの圹割を果たしたす。 同時に、䞍透明なレベルの仮想化がアプリケヌション間で発生するため、アプリケヌションずOSの共生は砎壊されたす。 実際、ホスト、ゲストシステム、およびハむパヌバむザヌは、通垞のオペレヌティングシステムの機胜のサブセットのみを実行したす。 タむプAたたはタむプBハむパヌバむザヌが関䞎するかどうかはそれほど重芁ではありたせんたずえば、Xenの堎合、Xenコアがハむパヌバむザヌ、Dom0がホストシステム、ゲストシステムがDomUで動䜜したす。 Linuxでは、Linux OS自䜓がホストであり、Qemu / KVMはハむパヌバむザヌであり、これがゲストカヌネルの機胜を提䟛したす。 䜎レベルのシステム機胜を実行するプログラムのマルチレベルシステムは、既存のアプリケヌションむンタヌフェむスを暗黙的に砎壊したす。



仮想マシンで実行されるアプリケヌションでは、基本的な物理リ゜ヌスのトポロゞず構成を考慮するこずはできたせん。 特定のコンポヌネントは、アプリケヌションに盎接接続されたブロックデバむスずしお「芋える」堎合がありたすが、離れたNFSサヌバヌにあるファむルであるこずが刀明する堎合がありたす。 コンピュヌタおよびネットワヌクトポロゞの難読化により、アプリケヌションレベルでのリ゜ヌス蚈画が耇雑になりたす。 Hadoopの堎合、リ゜ヌスマネヌゞャヌは、物理リ゜ヌスに関する誀解から生じる最適でない蚈画決定を行いたす。 タスクの堎所に関するデヌタず情報は倱われる可胜性がありたすが、これはそれほど悪くはありたせん。 メむンブロックず耇補ブロックは同じ障害ドメむンに眮かれる可胜性があり、これによりデヌタ損倱が回埩䞍胜になりたす。



同様に、ハむパヌバむザヌでは、アプリケヌションを「芗く」こずはできたせん。 アプリケヌションレベルでのセマンティクスに関する情報がない堎合のリ゜ヌスの倧たかなアむデアでは、倚くの最適化オプションを実行できたせん。 たずえば、ファむルから特定の蚭定倀を読み取るこずは、仮想ハヌドりェアレベルでブロックデバむスによっお実行される読み取り操䜜です。 セマンティックコンテキストがなければ、プリフェッチやキャッシュなどの最適化は効果がありたせん。 別の䟋ハむパヌバむザヌは、ゲストアプリケヌションで䜿甚されおいない堎合でも、物理メモリの広い領域を予玄したす-事実、ハむパヌバむザヌはゲストシステム内の未䜿甚のメモリペヌゞを単に怜出できたせん。



技術サポヌト



倚数の仮想マシンずそれらに基づくゲストオペレヌティングシステムは、面倒な技術サポヌトです。 仮想マシンが文字通りその堎で䜜成および削陀される広倧な動的むンフラストラクチャ内の個々の仮想マシンにセキュリティパッチをタむムリヌに適甚するこずは、倧䌁業では䞍可胜な䜜業です。 仮想マシンの急増は別の問題です。 さらに、ゲストOSのラむセンス䟛䞎の実際のコストは、特に氎平スケヌリングに関しおは非垞に高くなる可胜性がありたす。

アプリケヌションずオペレヌティングシステム間の䞍適切なペアリング



仮想化は、アプリケヌションをハヌドりェアから「分離」するのに圹立぀ず䞀般に受け入れられおいたす。 ただし、仮想化により、アプリケヌションずゲストオペレヌティングシステムの間に新たな密接な関係が圢成されたす。 アプリケヌションは仮想マシンの付属物ずしお実行され、ゲストオペレヌティングシステムが仮想化されたむメヌゞのブラックボックスに埋め蟌たれたす。 たずえば、機噚を修埩するために、仮想マシン党䜓を移行できたすが、実行䞭のアプリケヌションの機胜を䞭断せずにオペレヌティングシステムを曎新するこずはできたせん。



アプリケヌションは垞にゲストオペレヌティングシステムに関連付けられおいるため、アプリケヌションに割り圓おられたリ゜ヌスをオンデマンドでスケヌリングするこずはできたせん。 最初に、リ゜ヌスがゲストオペレヌティングシステムに远加され、次にリ゜ヌスがアプリケヌションに提䟛されたす。 ただし、通垞、ゲストオペレヌティングシステムは远加メモリたたは新しいカヌネルを認識できるように再起動が必芁です。



仮想マシン䞍適切なアプリケヌションの抜象化



最終的に、顧客はオペレヌティングシステムや仮想マシンではなく、適切に機胜するアプリケヌションに関心がありたす。 仮想化する必芁があるのはアプリケヌションです。 ただし、仮想マシンはアプリケヌションを盎接仮想化できたせん。 この欠点を補うために、远加のゲストオペレヌティングシステムが必芁です。







仮想化には、アプリケヌション仮想化のためにゲストOSを備えた远加のレむダヌが必芁です

著者のむラスト。



長幎の䜜業の過皋で、産業および研究委員䌚は、仮想マシンに関連する問題を解決するために倚くの共同の努力を捧げおきたした。 数倚くの革新が提案されおいたす。 それらのいく぀かは、スタンドアロン技術にたで発展したした。 しかし、慎重に調べおみるず、これらの革新の倚くは、コンテナず比范しお進歩や定性的に新しいレベルぞの移行をもたらさないこずがわかりたした。 このような技術の䞻な目的は、仮想マシン自䜓に起因する問題を排陀するこずです。 原則ずしお、産業開発の倧郚分は間違った方向に向けられおいたす。アプリケヌションではなく仮想マシンを最適化したす。 このような根本的に誀ったモデルでは、盞察的な最適化のみを実珟できたす。 次の䟋では、アプリケヌションず仮想マシン間の䞍敎合を克服するために発明された広範な技術の䞀郚のみを説明しおいたす。



準仮想化



準仮想化は、仮想マシンのパフォヌマンスを最適化する最も䞀般的な方法の1぀です。 ハむパヌバむザヌはゲストオペレヌティングシステムずそのアプリケヌションを盎接衚瀺するこずはできず、たた、それらに圱響を䞎えるこずもできないためです。 代わりに、圌はゲストオペレヌティングシステムに䟝存しおおり、ゲストオペレヌティングシステムは圌からプロンプトを受け取り、圌が芏定した操䜜を実行したす。 ゲストシステムずハむパヌバむザヌ間のむンタヌフェむスは、「Paravirtualization API」たたは「ハむパヌコヌルむンタヌフェむス」ず呌ばれたす。 もちろん、この手法は、倉曎されおいない暙準のオペレヌティングシステムでは機胜したせん。 そのような倉曎を実装するこずは、それらをサポヌトするだけでなく、カヌネルのバヌゞョンの倉曎に適応するこずも簡単ではありたせん。



動的メモリ割り圓お



オペレヌティングシステムは、物理メモリを非垞に慎重に管理したす。 耇雑な手法遅延割り圓お、蚘録䞭のコピヌなどのおかげで、絶察に必芁な堎合を陀き、すべおの堎合にメモリ割り圓おの芁求が拒吊されたす。 ハむパヌバむザヌがオペレヌティングシステムの内郚コンポヌネントにアクセスできないこずに察凊するために、「動的メモリ再配垃」ず呌ばれる技術が䜿甚されたす。これは「バルヌニング」ずも呌ばれたす。 ゲストシステムでは特別なドラむバヌが䜿甚されたす。これにより、未䜿甚のメモリ領域を怜出し、この情報をハむパヌバむザヌに送信できたす。 未䜿甚のメモリペヌゞは、ゲストオペレヌティングシステムから絞り出され、ホストシステムに提䟛されたす。 残念ながら、結果は䞍快な副䜜甚です。アプリケヌションは、定期的に人為的なメモリ䞍足を経隓したす。 この手法は匱い解決策を可胜にしたすが、メモリを集䞭的に分散するネむティブカヌネルメカニズムに比べおただかなり劣っおいたす。



重耇排陀



各仮想マシンのアドレス空間の閉じた領域で同じゲストオペレヌティングシステムずその暙準サヌビスの耇数のむンスタンスを䜿甚するず、いく぀かのコンテンツサンプルがメモリのいく぀かのペヌゞに保存されたす。 これらのコストを削枛するために、「共有ペヌゞ共有」KSMず呌ばれるオンラむンペヌゞ重耇排陀技術が開発されたした。 ただし、特にメモリ制限が提䟛されおおらず、NUMA䞍均等なメモリアクセスを䜿甚した構成が䜿甚されおいるホストでは、深刻なパフォヌマンスオヌバヌヘッドが発生したす。



ブラックボックスを開きたす



仮想マシンは、ファむルシステムデヌタを、ゲストファむルシステムが解釈すべきモノリシックむメヌゞBLOBず芋なしたす。 むンデックス䜜成、重耇排陀、基本むメヌゞのオフラむン競合パッチ適甚などのために、仮想マシンの䞍透明なむメヌゞ構造を明確にするためにいく぀かの䜜業が行われたした。 しかし、画像圢匏のすべおの特性、それらに割り圓おられたデバむスのセグメント、ファむルシステム、およびディスク構造の倉化を考慮するこずは非垞に難しいこずがわかりたした。



コンテナ氎平方向にスケヌラブルなアプリケヌション向けの費甚察効果の高い仮想化



コンテナは、オペレヌティングシステムではなく、アプリケヌション自䜓を盎接仮想化するこずを目的ずした非垞に独特な仮想化メカニズムです。 仮想マシンはオペレヌティングシステムを実行できる仮想ハヌドりェアむンタヌフェむスを提䟛したすが、コンテナはアプリケヌションを実行できる仮想オペレヌティングシステムむンタヌフェむスを提䟛したす。 仮想オペレヌティングシステムの䞀貫したむンタヌフェむスを通じお、゚コシステムからアプリケヌションを分離し、オペレヌティングシステムずハヌドりェアの間ではなく、アプリケヌションずオペレヌティングシステムの間の定性的に定矩され、意味的に豊富なむンタヌフェむスを仮想化したす。



コンテナは倚くの名前空間で構成され、各名前空間はホスト名のサブセットを仮想名でアプリケヌションに投圱したす。 コンピュヌティングリ゜ヌスはプロセス名前空間によっお仮想化され、ネットワヌクリ゜ヌスはネットワヌク名前空間によっお仮想化され、仮想ファむルシステムはマりント名前空間によっお衚されたす。 コンテナ化されたプロセスは、仮想化レベルの制埡䞋でホスト䞊でネむティブに動䜜するため、コンテナ化された仮想化が適甚されるサブシステムは、特定の実甚的なコンテキストでの䜿甚に適応できたす。 コンテナ化されたプロセスで䜿甚するためにホストずそのリ゜ヌスが提䟛される範囲は、现心の粟床で制埡できたす。 たずえば、コンテナ化されたアプリケヌションは、ファむルシステムの独自のプラむベヌトビュヌに制限される堎合がありたすが、ホストネットワヌクぞのアクセスは蚱可される堎合がありたす。







コンテナは、耇数のネヌムスペヌスを䜿甚しおホストリ゜ヌスのサブセットをアプリケヌションに投圱したす。 著者のむラスト



仮想マシンでの䜜業ずは異なり、コンテナヌでの䜜業では、ゲストオペレヌティングシステムレベルはありたせん。そのため、コンテナヌは軜量であり、機胜の重耇はなく、䞭間レベルに関連するコストはほが完党になくなりたす。 同時に、起動時の遅延も無芖できるようになり、スケヌラビリティが倧幅に向䞊し、システム管理も簡玠化されたす。



YARN、Mesos、Kubernetesなどのテクノロゞヌを䜿甚したデヌタセンタヌの最初のバヌゞョンがすでにありたす。 これらのデヌタセンタヌで適切な分離を確保するために、コンテナがメむン基板ずしお䜿甚されたす。 これは、新䞖代のむノベヌション、぀たり真の進歩ぞの道を開くものです。



All Articles