ストレージ設定では仮想ディスク、CD/DVD・フロッピーディスクのドライブやイメージを操作します。
VirtualBoxでは仮想ストレージコントローラーを仮想マシンに定義し、仮想デバイス(仮想ディスクやCD/DVDイメージなど)をコントローラーに割り当てることで、デバイスを使用できるようにします。
ストレージツリー
新規仮想マシン作成ウィザードで仮想マシンを作成するとSATAコントローラーの下に仮想ディスクが、IDEコントローラーの下にCD/DVDドライブが定義されています。
コントローラーの追加/削除やデバイスの追加/削除は下のボタンで行えます。
デバイスの追加/削除はコントローラーを選択した状態で、右側に表示されるボタンでも行えます。
ストレージコントローラーを追加
ストレージコントローラーを追加します。
追加できるコントローラーは以下になりますが、古いOSを使う場合、SATAやSASのコントローラーに対応していない場合があるので注意が必要です。
また、コントローラーはそれぞれ一つずつしか追加できません。
IDE コントローラー
古くからあるストレージコントローラーで、VirtualBoxがデフォルトで使用するコントローラーです。
ほとんどすべてのOSが対応していますが、3.2からの新機能の非同期I/Oには対応していないため、パフォーマンスはよくありません。
IDEコントローラーには3つのコントローラータイプPIIX3・PIIX4・ICH6がありますが、機能やパフォーマンスに違いあるわけではありません。
他の仮想ソフトウェア(VirtualPCなど)から仮想マシンをインポートする際に、元と異なるタイプのコントローラーを指定すると起動できない場合があるので、その際に設定を変更します。
SCSI コントローラー
SCSIコントローラーもIDEと同様に古くからあるコントローラーで、高いパフォーマンスが求められるワークステーションや、サーバに使用されてきました。
ポート1から15まで、最大15ドライブを接続できます。
VirtualBoxではLsilogicコントローラーとBuslogicコントローラーをサポートしています。
SCSIコントローラーの仕様にはOS側の対応も必要ですが、Windows 2003以降にはLSI Logicコントローラ用のドライバが付属していますが、Windows NT 4.0およびWindows 2000にはBusLogicコントローラ用のドライバが付属しています。
Windows XPにはどちらのドライバも付属していません。
SATA コントローラ
2003年に導入された比較的最近登場したストレージコントローラーで、ポート0から29まで、最大30ドライブを接続できます。
本物のSATAコントローラーと同様に、IDEコントローラーと比べ転送速度が速くCPUリソースの消費も少なくなっています。
このため、選択したゲストOSに応じて、新しく作成された仮想マシンの仮想ハードディスクイメージはデフォルトでSATAを使用します。
ただしVista以前のWindowsOSをゲストとする場合、AHCIドライバが必要になります。
SATAドライバをインストールしてからコントローラの種類を変更することで、インストール後にIDEからSATAに切り替えることができます。
Oracle VM VirtualBoxでは、Intel Matrix Storageドライバを推奨しています。
SAS コントローラー
比較的最近登場したコントローラーです。
ポート0から7まで、最大8ドライブを接続できます。
一部のハイエンドOSが必要とする高速なコントローラーですが、ホストマシン側もSASを使用していないと真価を発揮しないでしょう。
LsiLogic SASのみサポートしています。
SATAと同様に、SASコントローラはサポートしているOSでしか見えません。
特に、Windows Vistaより前のWindowsでは、SASはサポートされていません。 そのため、Windows XPは、SP3であっても、追加のドライバをインストールしない限りディスクを認識しません。
フロッピー コントローラー
I820783のみサポートしています。
デバイス0,1の最大2ドライブを接続できます。
USBコントローラー
すべての主要なOSはUSBをサポートしているため、サードパーティのドライバを不要にする汎用ドライバで動作します。
そのためSATAコントローラをサポートしていないレガシーなOSはUSBの恩恵を受ける可能性があります。
Oracle VM VirtualBoxが提供する仮想USBストレージコントローラは、他のタイプのストレージコントローラとは動作が異なります。
他のストレージコントローラは、複数のディスクが接続されているゲストからは単一のPCIデバイスとして見えますが、USBベースのストレージコントローラは仮想ストレージコントローラとしては見えません。
コントローラに接続されている各ディスクは、ゲストからは専用のUSBデバイスとして認識されます。
注意として、USBを使用して接続されたドライブからの起動は、BIOSがUSBサポートを欠いているためEFIが使用されている場合にのみサポートされます。
NVMeコントローラー
2011年に登場した最近の規格で、SSDで使用されているSATAプロトコルの帯域幅制限を緩和するために、PCI Expressに直接接続することで最大のスループットを達成するのが非常に簡単で、ATAやSCSIとは互換性がありません。
NVMeを使用するには仮想マシンのOS側でNVMeデバイスをサポートする必要があります。 たとえば、Windows 8.1ではネイティブのNVMeサポートが追加され、Windows 7ではネイティブサポートがアップデートで追加されています。
NVMeコントローラは拡張パックの一部です。
ただしNVMeを使用して接続されたドライブからの起動は、BIOSが適切なドライバを欠いているためEFIが使用されている場合にのみサポートされます。
どのコントローラーが最適なのか
このようにストレージコントローラが豊富に選択されているため、どのコントローラを選択すべきかわからない場合がありますが、IDEがゲストによってサポートされている唯一のコントローラでない限り、IDEは避けるべきです。
SATA、SCSI、SASはどちらを使用しても、大きな違いはありません。
デバイスの追加
選択したコントローラーにデバイスを割り当てます。
デバイスの除去
選択したデバイスをコントローラーから除去します。
ホストのI/Oキャッシュを使う
ホストOSのファイルキャッシュを利用して、ゲストOSのディスクI/Oパフォーマンスを著しく向上させます。
ホストOSがファイルとして扱っている、仮想ディスクのイメージファイルなどに有効です。
いわゆる非同期I/Oという以下の仕組みでパフォーマンスを向上させます。
- ゲストマシンの書き込みをホストOSのキャッシュメモリに書き出す
- ゲストマシンにはこの時点で書き込みを完了したと返答する
- ホストOSはキャッシュメモリにあるデータをハードディスクに書き出す
ゲストOSは高速なキャッシュメモリとI/Oのやり取りをすることで、劇的なパフォーマンス向上をすることができます。
ただし、
- キャッシュから実際のファイルへの書き込みが非同期となるため、電源障害やホストのクラッシュ等でゲストOSのデータが消失する可能性がある
- イメージファイルは巨大な為、一度に複数の仮想マシンを立ち上げるとホストOSのキャッシュを使い果たしパフォーマンスに影響を及ぼす可能性がある
- ゲストOS・ホストOSの両方で同様のI/Oキャッシュが保存される
このときの2重キャッシュは性能向上にはほとんど影響しません - writeに対してreadはそれほどのパフォーマンス向上は望めない
などのデメリットも存在します。
電源断時にデータロスしても構わない&ホストOS側のメモリが潤沢な場合に使うと良いかもしれません。
デバイスの属性
IDEデバイス
IDEコントローラーのスロットには以下の4つがあります。
- IDE プライマリマスター
- IDE プライマリスレーブ
- IDE セカンダリマスター
- IDE セカンダリスレーブ
接続するデバイスは仮想メディアマネージャーをから選択します。
CD/DVDドライブやフロッピーの場合、ホストマシンのドライブを選択する事も可能です。
仮想ハードディスクの場合「Solid-state drive」のオプションがありますが、ここにチェックを入れるとゲストマシンが仮想ハードディスクをSSDとみなします。
ゲストOSがSSDをサポートしていると(Windows7など)パフォーマンスが向上します。
CD/DVDドライブの場合「Live CD/DVD」のオプションがありますが、チェックをしておくとマシンからイジェクトしない限り、仮想メディアマネージャから仮想CD/DVDを「除去」できなくなります。
以下、他のデバイスの設定項目はIDEとほぼ同じです。
SATAデバイス
SCSIデバイス
SASデバイス
フロッピーデバイス