9月版 IDEハードディスクが「/dev/hda」ではなくなる日
上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/9/26
実ハードでも仮想化環境でも動くカーネル
Rusty Russelはparavirtパッチを提案しました。これは、VMwareやXenなどで仮想化されるOSとしてLinuxを実行する際に必要な機構を統合するべく登場した仕組みです。彼の目指すところは、カーネルが起動された環境を自動で検出して挙動を切り替え、同じカーネルのバイナリが仮想化環境でも実ハードウェア環境でも使えるようにしたいということのようです。
仮想化環境で実行する場合は、OSから見てハードウェアが直接利用できる状況ではありません。そのまま実行してはまずい命令がいくつかあり、それらはハイパーバイザー呼び出しなどで仮想的に実現されます。
仮想化した場合の問題について、割り込み禁止命令を例に説明しましょう。まず、割り込み禁止命令を1つの仮想OSが実行したからといって、実ハードウェアシステム全体で割り込み禁止になってしまうと、その仮想OSに無関係な割り込みまで禁止されてしまうので問題です。そのため、その命令をハードウェア的にトラップし、仮想マシンモニタ側で割り込み処理を実施させないようにフラグを立てるなどの処理をします。疑似仮想化の場合はOS自体を変更し、ハイパーバイザーを呼び出すように変更します。しかし、割り込み禁止は、タイミング的に重要な部分で頻繁に使われる処理です。オーバーヘッドが大きいと、全体的なパフォーマンスに影響が出ます。
Linuxカーネル自身が、自分が仮想化環境で実行されているのかそうでないのかを検知して、条件分岐してハイパーバイザーコールを発行するか、通常の命令を呼び出すかを判断すればいい。その仕組みを実装するのがparavirt_opsです。仮想化環境向けに置き換えが必要だと思われる関数について、関数ポインタを提供します。Linuxカーネルで呼び出しが必要な場合は、直接そのマシン語命令を呼び出すのではなく、関数ポインタを利用して関数を呼びます。
「VMwareやXenなどの仮想マシンモニタとのインターフェイスをどう実装するのか」という点については議論が続いており、なかなか同意は取れません。しかし、この部分の実装を統一するためのフレームワークについては、両陣営とも前向きなようです。
Rusty Russelは、一連のパッチのついでに「lhype」という仮想マシンモニタのサンプル実装を作り始めたと発表しました。既存の仮想マシンモニタであるXenもVMwareも、Linuxカーネルのツリーにマージされるようなものではありません。そのため、議論の内容が抽象的になりがちでした。実際にカーネルハッカーたちが触りやすいように、カーネルツリーにマージできるような小さな実装を目指したとのことです。XenやVMwareとは別の、さらなる選択肢を提供することを目標としているわけではないようです。これが開発に良い影響を与えるとよいですね。
参考: | |
paravirtのmercurialリポジトリ http://ozlabs.org/~rusty/paravirt/?cl=tip |
|
仮想化メーリングリストログ http://lists.osdl.org/pipermail/virtualization/ |
-stableの進ちょく
2.6.17がリリースされ、しばらくは2.6.16系の-stableリリースもGreg KHらがメンテナンスしていました。しかし、2.6.16.27が7月17日にリリースされてからは、新しいリリースが出ていません。従来と同様、Greg KHたちはそもそも並行してメンテナンスを継続し続ける予定ではなかったのです。
これを受けて、2.6.16系統の-stableリリースをAdrian Bunkが引き継ぐという発表がありました。彼は、8月12日の2.6.16.28-rc1をはじめとする3回のRCリリースを出した後、8月26日に2.6.16.28をリリースしました。パッチの出し方がGreg KHのやり方と違うなど戸惑いもありましたが、今後安定してリリースを出せるとよいですね。
- 2.6.16.28(8月25日)
・sctpにあった特権の昇格の問題の修正(CVE-2006-3745)
・デッドロック問題があるため、UDFは現状1Gbyte以上のextentをサポートしていないことにする(CVE-2006-4145)
・PPC970のHID0 attention enableを起動時にオフにする(CVE-2006-4093)
・cdrom:cgc.buflenの不正な割り当て(CVE-2006-2935)
ほか22パッチ
- 2.6.17.8(8月6日)
・ALSA:互換性のためPCM OSSデバイスが読み込み専用/書き込み専用であってもO_RDWRでのopenを受け付ける
・stableブランチをMAINTAINERSファイルに追記
・ext3:NFS経由で不正なファイルハンドルを与えられたときにext3_errorを発動しないように修正
ほか23パッチ
- 2.6.17.9(8月18日)
・PPC970のHID0 attention enableを起動時にオフにする(CVE-2006-4093)
- 2.6.17.10(8月22日)
・デッドロック問題があるため、UDFは現状1Gbyte以上のextentをサポートしていないことにする(CVE-2006-4145)
・sctpにあった特権の昇格の問題の修正(CVE-2006-3745)
・elv_unregisterがモジュールアンロード時にクラッシュする可能性があるのを修正
- 2.6.17.11(8月23日)
・IEEE1394がppcで動作しないのを修正
・mdドライバのいくつかの修正
・swuspで最初のswapデバイスしか利用できなかった問題の修正
・ia64とsparcにて、不正なELFファイルでシステムがクラッシュするバグの修正
ほか20パッチ
2/2 |
|
|
||||
|
連載 Linux Kernel Watch |
Linux Squareフォーラム Linuxカーネル関連記事 |
連載:Linux Kernel Watch(連載中) Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします |
|
連載:Linuxファイルシステム技術解説 ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する |
|
特集:全貌を現したLinuxカーネル2.6[第1章] エンタープライズ向けに刷新されたカーネル・コア ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する |
|
特集:/procによるLinuxチューニング[前編] /procで理解するOSの状態 Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する |
|
特集:仮想OS「User
Mode Linux」活用法 Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説 |
|
Linuxのカーネルメンテナは柔軟なシステム カーネルメンテナが語るコミュニティとIA-64 Linux IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った |
|
|
- 【 pidof 】コマンド――コマンド名からプロセスIDを探す (2017/7/27)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、コマンド名からプロセスIDを探す「pidof」コマンドです。 - Linuxの「ジョブコントロール」をマスターしよう (2017/7/21)
今回は、コマンドライン環境でのジョブコントロールを試してみましょう。X環境を持たないサーバ管理やリモート接続時に役立つ操作です - 【 pidstat 】コマンド――プロセスのリソース使用量を表示する (2017/7/21)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、プロセスごとのCPUの使用率やI/Oデバイスの使用状況を表示する「pidstat」コマンドです。 - 【 iostat 】コマンド――I/Oデバイスの使用状況を表示する (2017/7/20)
本連載は、Linuxのコマンドについて、基本書式からオプション、具体的な実行例までを紹介していきます。今回は、I/Oデバイスの使用状況を表示する「iostat」コマンドです。
|
|