LoginSignup
0
0

More than 1 year has passed since last update.

Linux BIOSと仮想化について(自分用メモ

Posted at

●BIOS
BIOS(Basic I/O System)は最もハードウェアに近い部分を司るシステムで、物理的なハードウェア(マザーボード)上に書き込まれています。コンピュータの電源を入れると、まずBIOSが起動し、周辺機器の制御を行います。
最近のシステムでは、BIOSよりも高機能なUEFI(Unified Extensible Firmware Interface)への移行が進んでいます

コンピュータの起動時に特定のキー(DEL、F2など)を押すことで呼び出せるBIOS/UEFIセットアップ画面では、主に以下の設定ができます。
・日付と時刻
・電源管理
・起動デバイスの優先順位
・組み込みデバイスの有効/無効化

仮想化(Virtualization)とは、コンピュータリソースを実際の物理的な構成にとらわれず、論理的に分割・統合して提供する技術です。
仮想化の実現方法の1つである仮想マシン(VM:Virtual Machine)は、仮想化のための専用のソフトウェア上で仮想的なハードウェア(仮想マシン)を起動し、ゲストOS(仮想マシンにインストールしたOS)を動作させる方式です。

【libvirt】
libvirtはオープンソースの仮想化管理用のライブラリです。libvirtを利用するプログラムとしては、GUIの仮想マシン管理ソリューションであるvirt-managerや、CLIのvirshコマンドなどがあります。
また、libvirtは以下のような数多くの仮想化ソフトウェアに対応しています。

Xen、KVM、OpenVZ、LXC、Oracle VM VirtualBox、VMware など

仮想化の種類
仮想化を実現する方法には、大きく分けて仮想マシンとコンテナがあります。

・仮想マシン(VM:Virtual Machine)
ハイパーバイザーという仮想化ソフトウェア上で仮想的なハードウェア(仮想マシン)を起動し、ゲストOS(仮想マシンにインストールしたOS)を動作させる方式。ゲストOSからは通常の物理マシン上で動作しているように見えるため、これまでのサーバにOSをインストールしているのと同様に環境を構築したり、運用できます。ハイパーバイザーがサポートしているOSであれば、ホストOSと異なる種類のゲストOSを使用できます。

ハイパーバイザーの種類には、ネイティブ型(またはベアメタル型)とホスト型があります。

[ネイティブ型(Type1)]
ハードウェア上でハイパーバイザーを直接起動し、その上で仮想マシンとゲストOSを動作させます。
ホストOS(物理マシンにインストールした通常のOS)を介さないため、ホスト型に比べてパフォーマンスが良く、近年の企業における仮想化の主流。
ネイティブ型の仮想化ソフトウェアには、Xen、MicrosoftのHyper-V、VMwareのvSphere Hypervisorなどがあります。

[ホスト型(Type2)]
ホストOS上にアプリケーションの一つとして仮想化ソフトウェアをインストールし、その上で仮想マシンとゲストOSを動作させます。
既に利用しているコンピュータ上に手軽に仮想環境を構築できますが、ホストOSを介してハードウェアにアクセスするため、ネイティブ型に比べて仮想化のオーバーヘッド(余分な処理の量)が大きくなります。
ホスト型の仮想化ソフトウェアには、Oracle VM VirtualBox、VMware Workstation、Parallels Desktopなどがあります。

・コンテナ
ホストOSのリソースを隔離して「コンテナ」という仮想環境を作成する方式です。
ホストOSのカーネルを共有することで、仮想マシンやゲストOSを起動せずにアプリケーションの実行環境を構築できます。ただし、ホストOSと異なるOSをコンテナで使用することはできません。
コンテナはホストOSのプロセスとして動作するので、仮想マシンに比べてリソース消費が少なく、軽量で起動が速いのが特徴です。作成したコンテナはDockerイメージのように、別の環境に配布して実行することも可能です。

コンテナ型仮想化では、Linuxカーネルの機能によってコンテナごとのユーザ管理やリソース制御を行います。例えば、cgroups(Control Groups)はグループごとにCPUやメモリなどのリソースを割り当て・制限し、コンテナのリソースを管理します。
また、コンテナ内のrootユーザはホスト上でもroot権限を持つことになりセキュリティ上望ましくありません。Linuxのユーザ名前空間(User Namespace)の機能を使うことで、コンテナ内のrootユーザをホスト上の一般ユーザとして扱うことができ、コンテナとホスト間でユーザ権限の分離ができるようになります。

コンテナ型ソフトウェアには、LXC、Dockerなどがあります。

【Linuxでの仮想化】
KVM(Kernel-based Virtual Machine)は、Linuxに標準搭載されている仮想化ソリューションです。仮想化の種類としては通常Type1に分類されます。
KVMを使用するためには仮想化支援機能を搭載したCPUが必要です。仮想化支援機能とは仮想化ソフトウェアが行う処理の一部をCPUが分担することで処理を高速化する機能で、Intel VT(Intel Virtualization Technology)やAMD-V(AMD Virtualization)という名称で実装されています。
CPUが仮想化支援機能をサポートしているかどうかを調べるには、「/proc/cpuinfo」のflagsにおいて"vmx"(Intel VT)または"svm"(AMD-V)という値があるかどうかを確認します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0