12月版 ついに仮想化がカーネル標準機能に!?
上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2006/12/27
カーネル2.6.20に仮想化機能がマージされる
10月19日、Avi Kivityは「KVM(Kernel-based Virtual Machine)」の仕組みを提案するために「KVM:Kernel-based Virtual Machine」というメールをLKMLに投稿しました。KVMは、カーネルのデバイスドライバとして実装され、/dev/kvmというキャラクタデバイスを提供します。アプリケーションは、/dev/kvmをmmap()したりioctl()で操作したりすることで仮想化対応CPU(Intel VTやAMD-V)の機能を利用して、Linux上で仮想マシンモニタを実装できます。
KVMに対応したQEMUを利用すれば、Intel VTやAMD-Vを活用してQEMUを動かすことができます(注)。Avi Kivityのコメントによると「まだパフォーマンスチューニングが十分でない」とのことですが、QEMUでエミュレーションされたCPUで動作させるよりも、実CPU上での直接実行が多くなるため格段に高速です。また、i386 Linux上ではi386の仮想マシン、x86_64 Linux上ではx86_64の仮想マシンが動作するそうです。Linuxカーネルをお手軽な仮想マシンモニタに変えることができるKVMパッチ。これはXenやLinux+VMWareに対応したものをそれぞれKVM用に改変したLinux+Qemuで実装しようというもので、夢が広がります。
注:実CPUで仮想マシンの命令を直接実行して、CPUの機能で仮想化対象の命令をエミュレーションする。 |
KVMを使うには、CONFIG_KVMを選択してコンパイルしたカーネルで/dev/kvmを利用できる状態にして、KVMアプリケーションを通常のQEMUを使用するのと同じように実行するだけです。
$ kvm -localtime -hda windows.cow -m 400 -redir tcp:3389::3389 |
このパッチは、2.6.19-rc5-mm1と2.6.20-rc1にマージされました。このまま順調にいけば2.6.20の目玉機能になりそうですね。
参考: | |
KVMのWebページ http://kvm.sf.net |
X起動時のパニックメッセージの出力方法とは?
Linuxカーネルは、システムを停止するしかない深刻なエラーに遭遇した場合、panic()関数を利用してパニックメッセージを画面に出力して停止します。しかし、Xが起動していて画面がグラフィックモードになっている場合、カーネルはパニックメッセージを画面に出力できません。そこで、「深刻なエラーが発生してシステムが停止しているのにエラーメッセージが表示できないのはまずい」という議論に発展しました。
一般的な解決方法は、シリアルポートにメッセージを出力するように設定することです(カーネルの機能として設定が可能)。しかし、シリアルポートへの出力を設定していない場合が多く、問題として浮上してきたのです。
Arjan van de Venは「テキストモードに切り替えできるようにカーネルの中にドライバを持たせればよいのでは」と提案しました。また、Matthew Garrettは「既存のint10インターフェイスを活用すれば問題ないのでは」と発言しました。しかし、それらの意見に対してDave Airlieは「複雑な構成も多いため、画面モードを切り替えるには現実的ではない。例えば、複数のモニタを利用している場合にテキストモードに切り替えるのは非常に難しい」と反論しました。「それよりも現在のフレームバッファのビット数などの情報を用いて、グラフィック画面に文字を出力する方法を模索する方が現実的だろう」と付け加えました。
結局、具体的な実装方法の議論にまでは至りませんでした。とはいえ、パニックメッセージを出力するために毎回シリアルポートの設定をするのは面倒ですから、早くXの画面上でパニックメッセージが出力できるようにしてほしいものです(そもそもパニックが発生しないようなシステムが理想ですが……)。
2.6.18.yと2.6.16.yのリリースに動きが
11月は、2.6.18.yカーネルと2.6.16.yカーネルに動きがありました。
Adrian Bunkが管理している2.6.16.yは、-rc1をリリース後それをそのまま正式版としてリリースするというプロセスを毎回踏んでいます。また、2.6.16.yは-stableにもかかわらず新しいドライバや機能が追加されているため、以前から批判されていました。2.6.16.34は明らかに新機能が追加されているので、また批判が出るかもしれません。
2.6.18.yはChris Wrightが管理しており、今回は-rc1を準備してから正式版をリリースしています。
また、Willy Tarreauは-stableツリーに提案されたパッチの一部について「2.4系列にバックポートしてもよいか」という確認のメールを出し、一部のメンテナからその返答をもらっていました。
- 2.6.18.2(11月3日)
・自己書き換えしたコードの場合、別スレッドでforkした際のCOWの競合を修正
・各種ドライバの各種修正
・ipv6:/proc/net/ip6_flowlabelのロックアップ修正(CVE-2006-5619)
など62パッチ
- 2.6.18.3(11月18日)
・security/seclvl.cの時刻のwrapを修正(CVE-2005-4352)
・cciss、cpqarrayのiostat対応
・SparcでNR_SYSCALLSがfutex用に増やされていなかったことの修正
など29パッチ
- 2.6.18.4(11月29日)
・net/bridgeのget_fdb_entriesのオーバフロー(CVE-2006-5751)
以上、1パッチ
- 2.6.16.31(11月7日)
・Netfilter:ip6_tables関連のバグ(CVE-2006-4572)
・ipv6:/proc/net/ip6_flowlabelのロックアップ修正(CVE-2006-5619)
・s390:ユーザー空間から初期化していないカーネルメモリを読み出せる(CVE-2006-5174)
など9パッチ
- 2.6.16.32(11月15日)
・ia64とSparcで不正なELFでDoS可能だったのを修正(CVE-2006-4538)
・スケジューラのロードバランスを修正
・sata_sil24にSil3124の新しいPCI IDを追加
など32パッチ
- 2.6.16.33(11月22日)
・security/seclvl.cの時刻のwrapの修正(CVE-2005-4352)
・powerpc:alignment例外がoopsの原因になり得たのを修正
・sis900のサポートにPHYを追加
など18パッチ
- 2.6.16.34(11月29日)
・ALSA:echoaudioのサウンドドライバを追加
・hptiop:HighPoint RocketRAID 3xxx controller driverを追加
・sys_getppidがデバッグカーネルでoopsするのを修正
など26パッチ
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」コマンドです。
|
|