
2025.02.12
職員一人あたり52時間の残業削減に成功 kintone導入がもたらした富士吉田市の自治体DX“変革”ハウツー
リンクをコピー
記事をブックマーク
鈴ヶ嶺聡哲氏(以下、鈴ヶ嶺):よろしくお願いします。鈴ヶ嶺です。まず概要を説明します。macOSの「11 Big Sur」から、新しくLinux VM作成の高レベルAPIのVirtualization.frameworkが登場しました。本発表ではこれがメインになります。
Objective-CやSwiftのAPIが提供されていますが、「あれ? Rust APIがないなぁ」「みんなRust好きだよね」みたいな。ちょっと唐突な話になりますが(笑)。Rustのbindingsを今回作成したので、それの発表をします。
内容についてですが、仮想化技術についての基本的な背景と、macOSの仮想化技術の変遷や、仮想化技術を支えるツールについて説明します。次に、Rust bindingsのvirtualization-rsの説明と、Linux bootのデモをして、最後に従来の仮想化技術との性能比較を行いたいと思います。
アジェンダはこのようになっています。
自己紹介ですが、鈴ヶ嶺と言います。2020年4月にNTTコミュニケーションズに入社して、イノベーションセンターテクノロジー部門のAIインフラチームで働いています。興味のある技術分野は、クラウドに関することや、機械学習基盤、仮想化技術。言語は、Rustがけっこう好きです。 業務としては、パブリックやハイブリッドクラウドの技術検証や、機械学習基盤の技術検証をやったり、ほかに社外のコンテストに出場したり、アドベントカレンダーを書いたりしています。
まず、仮想化技術の背景を説明します。1974年に提唱された、仮想化を効率的に実現するための要件として、PopekとGoldbergの仮想化要件というのがあります。
VMMの3つの特性としては、等価性と効率性、資源管理があります。等価性とは、元のマシン上で直接実行された場合と、同じような挙動をすることを指しています。効率性は、統計的に多くの処理を、VMMソフトウェアの介入なしに実行できることが求められています。
最後の資源管理は、リソースを完全に制御可能であることが求められています。これは、明示的に割り当てられていないリソースはアクセスを不可能にして、すでに割り当てられているリソースの制御を取り戻せることが、“リソースを完全に制御可能である”ことになります。
Formal requirements for virtualizable third generation architectures
ここで、命令の分類は2つに分けられます。1つ目が特権命令、2つ目がセンシティブ命令です。特権命令は本当に特権命令で、プロセッサーがユーザーモードの場合にトラップされる命令になっています。センシティブ命令は、2つに分けられます。
1つ目が、制御センシティブ命令という、システムの資源に対する変更命令を指しています。2つ目は、動作センシティブ命令と呼ばれ、資源の構成に対して依存する命令になっています。
この論文で最も重要な定理である「センシティブ命令が特権命令のサブセットであれば、VMMが構築可能である」ことを、この論文では計算モデルによって証明しています。
ただ、当時のx86はその要件を満たしていないこともわかっています。x86のリングプロテクションという、トラップする機構はありますが、トラップできないセンシティブ命令が存在します。
このような背景があり、VMMを構築可能にする仕組みとして、Binary Translationや準仮想化、あとはIntel VT-xなどの技術がこれから登場します。
Analysis of the Intel Pentium's Ability to Support a Secure Virtual Machine Monitor
最初に、Binary Translationについて説明します。これはVMwareやVirtualboxなどで用いられている技術で、問題ない命令はそのまま実行しますが、センシティブな命令の場合、それをトラップして動的に書き換えて、ハードウェアで実行するかたちになっています。
動的な命令の書き換えと思ってもらえればいいです。この場合だと、OS側に特別変更することは不要になり、有用です。
次に、準仮想化と言われる技術があります。Xenなどで用いられている技術ですが、ハイパーバイザー向けに書き換えた専用のゲストOSが必要になっているので、先ほどとは違ってOSの変更コストが必要です。
ハードウェアを使うためには、システムコールのものを、ハイパーバイザーコールを発行して処理を依頼するかたちになっています。先ほどと違って、静的な命令の置き換えと考えてもらえればいいと思います。
次に、もともとx86は仮想化できないアーキテクチャでしたが、Intel VT-xはそれを仮想化可能なアーキテクチャにするための拡張技術です。
root modeとnon-root modeの2つがあり、各モード別々でリングを割り当てられるため、OSの変更が不要になります。non-root modeでセンシティブな命令を実行すると、root modeにトラップして、VM Exitしてくれるので、仮想化VMMが構築可能であることがわかります。
VMをExitする命令は、VMCSという構造体のconfigによって制御可能なので、“どこで”“なにで”“どの命令で”センシティブにするか、しないかを制御可能です。
Intel VT-xなどの技術を利用したものが、LinuxのKVMです。2008年に開発が開始されて、のちにRedHatに買収されますが、Linux Kernel 2.6.20から標準搭載になっています。/dev/kvmのように、Linux kernel moduleとして存在しています。
KVM自体はエミュレーションを行わないで、QEMUなどと組み合わせることで仮想マシンとして使えます。KVMの1つのメリットとしては、Linuxのdriverが資産としてそのまま使用可能なので、Linuxで使えたものがそのまま使えます。
余談ですが、AWSなどのクラウドは、将来的にはKVMベースのNitro Hypervisorに移行する見通しがあるそうです。
次に、FreeBSDでのbhyveがあります。これもLinuxのKVMのようなVMMです。NetAppが2011年に開発を開始して、FreeBSD 10.0でデフォルトで採用されています。
これもIntel VT-xを利用していて、VT-x命令を発行するカーネルモジュールのvmm.koと、VM実行プログラムのbhyveによって成り立っています。余談ですが、bhyveはもともとBHyVeという表記でしたが、シンプルな小文字のbhyveに置き換わった経緯があります。
ARMについても説明しておきます。ARMではもともとEL0、EL1というかたちでトラップする仕組みでしたが、その下にEL2というエクセプションのレベルを1つ追加して、EL0とEL1のセンシティブ命令がトラップ可能になったので、VMMが構築可能であることがわかりました。
次にmacOSの仮想化技術について説明します。macOSではHypervisor.frameworkという、3rd partyのkernel extensionsなしで、ユーザー空間でハイパーバイザーを実現する機能があります。
当初はIntel VT-xを制御するようなAPIでしたが、のちのApple Siliconなどが登場したうえで変わってきます。このようなライフサイクルでVMが動きます。
Hypervisor.frameworkのAPIは、IntelとApple Siliconでどうなっているのかの話ですが、実はAPIは共通ではありません。(スライドで)以下はVirtual MachineのManagement APIを示していますが、このようにぜんぜん違ったAPIになっています。そのため、アーキテクチャによって構造は変えていく必要が、現状はあります。
Michaelさんという、toy projectとしてHypervisor.framework上にDOSのエミュレーターなどを作っていた人がいますが、本格的なMac上のハイパーバイザーとして、Mac向けにFreeBSDのbhyveをポートとして、xhyveを実装しました。
現状、Big Surではちょっと動きません。初期のDocker for Macなどは、xhyve上のLinuxで実装されていました。このように、Dockerエンジンはxhyve上で動いています。
次に、hyperkitと呼ばれる、Dockerがxhyveをforkして開発しているツールがあります。VPNKitやDataKitと連携するためにforkして使用していますが、Intel MacのDockerではこのようなものが動いています。
現状のBig SurのIntel Macには対応していますが、アーキテクチャが違うApple Silicon(M1)は未サポートです。現状Intel MacでDockerなどを使用している方は、com.docker.hyperkitが動いています。
例えば、minikubeとか言われるk8sの小さなクラスタなどはhyperkitのdriverをサポートしているので、Hypervisor.framework上でk8sが構築可能です。このようにhyperkitでテストとしてTiny Core Linuxを動かすコマンド例もあるので、よかったら試してみてください。
(次回につづく)
関連タグ:
2025.02.13
“最近の新人は報連相をしない”という、管理職の他責思考 部下に対する「NG指示」から見る、認識のズレを防ぐコツ
2025.02.06
すかいらーく創業者が、社長を辞めて75歳で再起業したわけ “あえて長居させるコーヒー店”の経営に込めるこだわり
2025.02.13
AIを使いこなせない人が直面する本当の課題 元マッキンゼー・赤羽雄二氏が“英語の情報”を追い続ける理由
2025.02.12
マネージャーは「プレイング3割」が適切 チームの業績を上げるためのマネジメントと業務の比率
2025.02.12
何度言っても変わらない人への指示のポイント 相手が主体的に動き出す“お願い”の仕方
2025.02.13
「みんなで決めたから」を言い訳にして仲良しクラブで終わる組織 インパクトも多様性も両立させるソース原理
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2025.02.10
32歳で「すかいらーく」を創業、75歳で「高倉町珈琲」で再起業 「失敗したからすかいらーくができた」横川竟氏流の経営哲学
2025.02.14
報連相ができない部下に対するコミュニケーションの取り方 「部下が悪い」で終わらせない、管理職のスキル向上のポイント
2025.02.10
A4用紙を持ち歩いて殴り書きでアウトプット コクヨのワークスタイルコンサルタントが語る、2種類のメモ術
着想から2か月でローンチ!爆速で新規事業を立ち上げる方法
2025.01.21 - 2025.01.21
新人の報連相スキルはマネージメントで引きあげろ!~管理職の「他責思考」を排除~
2025.01.29 - 2025.01.29
【手放すTALK LIVE#45】人と組織のポテンシャルが継承されるソース原理 ~人と組織のポテンシャルが花開く「ソース原理」とは~
2024.12.09 - 2024.12.09
『これで採用はうまくいく』著者が語る、今こそ採用担当に届けたい「口説く」力のすべて
2024.11.29 - 2024.11.29
【著者来館】『成果を上げるプレイングマネジャーは「これ」をやらない』出版記念イベント!
2025.01.10 - 2025.01.10