仮想OS「User Mode Linux」活用法
 〜 技術解説からカーネルカスタマイズまで 〜

Linux上で仮想的なLinuxを動かす「User Mode Linux」。仕組みからインストール/管理方法、そしてIPSecやIPv6に対応させるためのカーネル構築までを徹底解説。


宮本 久仁男<miyamotokn@nttdata.co.jp>
NTTデータ システム開発事業本部
基盤システム事業部 第一ソリューション技術担当

2002/5/25


User Mode Linuxとは?

 User Mode Linux(以下UML)は、サーバの仮想化技術とビジネス展開の可能性でも紹介された、Linuxの上で動作するLinux OSです。厳密にいうと「Linux OS」とは少し違いますが、環境としてはこう表現しても差し支えないでしょう。

 日本語による情報源としては、「User Mode Linux紹介」(http://www.digitalinfra.co.jp/uml/index.html)があります。ここには、実際に使うに当たって必要とされる情報などがあります。2002年5月現在では未翻訳の部分もかなりありますが、UMLの使用に必要な部分は翻訳されているので、あまり支障はありません。

 なお、本稿では便宜上、UMLを動かすOSを「Host OS」、UMLによって提供されるOS(環境)を「Guest OS」と呼びます。

UMLの機能概要

 UMLでは、どのような機能が用意されているのでしょうか。ざっと目立つ機能を挙げると、

  • UMLによるプロセスの独自スケジューリング(
  • ネットワーク機能のフルサポート(Universal TUN/TAPドライバ経由)
  • ディスクイメージファイル上に構築されたLinux環境
  • 差分ファイルへのディスクイメージ変更履歴取得
  • hostfs機能による、Host OS環境上のファイル資源へのアクセス
  • 仮想化されたシリアル・ドライバ経由でのUMLへのログイン

などがあります。

 ほかにもたくさんの機能がありますが、そもそも「Linux Full Featuring」な仮想OSなので、全部挙げるとLinuxの基本機能+UML特有の機能の紹介になってしまいます。

注:ドキュメントには、「Host OSから独立したスケジューラ」と記述されています。

UMLのプロセス/メモリ管理

1.メモリ管理

 UMLは、Host OSの上で動作するプロセス群でその環境が構成されます。従って、最終的なメモリ管理はHost OSが実施します。なお、デフォルトで認識するメモリは32Mbytesとなっていますが、カーネルに与えるパラメータで、

linux mem=96M

とすると認識するメモリサイズを変更できます。このパラメータは、実際にHost OSが認識しているメモリサイズとは無関係に与えることが可能です。Host OSが認識しているメモリサイズ以上の容量をGuest OSに認識させることも可能ですが、あまり意味があるとも思えません。それに、あまり大きなメモリサイズを指定すると、UML自体がエラーを出力して起動しません。筆者の環境(メモリ128Mbytes、スワップ256Mbytes)では、480Mbytes以上を指定したところで起動しなくなりました。

2.プロセス構造

 UMLは、独自にプロセス管理を行いますが、最終的には、

「UML上で動作している1プロセス」≒「Host OS上の1プロセス」

というマッピングがなされます。感じとしては、図1のようになります。当然、プロセス資源は有限なので、UMLを動かす数とアクティブなプロセス数が増えると、プロセススイッチのためにより多くの時間がかかることになります。

図1 UML利用時のプロセスの状態

 この点、VMWareは図2のように、ハードウェアを1つのプロセス上でエミュレートするような形になるため、仮想マシンのOS環境上でいくらプロセスが増えてもHost OSのプロセス数が増えることはありません。

図2 VMware利用時のプロセスの状態

 
1/5

Index
仮想OS「User Mode Linux」活用法
 〜 技術解説からカーネルカスタマイズまで 〜
Page 1
User Mode Linuxとは?
 UMLの機能概要
 UMLのプロセス/メモリ管理
  Page 2
UMLを動かしてみよう
 RPMによるインストール
 動かしてみる
 動かした後のHost OSとGuest OS
 Host Filesystemの利用
  Page 3
UMLで使用可能なツール
 uml_mconsole
 uml_switch
  Page 4
非標準カーネルモジュール/パッチの組み込み
 FreeS/WANの組み込みと動作
 USAGI UMLカーネルの構築
  Page 5
UMLの展望と問題点
参考資料

Linux Square全記事インデックス


 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カーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間