VirtualBoxで仮想化を䜿甚した経隓

レベル初心者



VirtualBoxで仮想化を䜿甚した経隓



はじめに



数幎前、私は男性化に察凊し始め、旅行メモのようなものを手に入れたした。それを今ここに䜜成しお投皿しおいたす。 ここでは啓瀺はありたせん。この蚘事は初心者の管理者向けです。 ここで解決しおいる問題は、LinuxおよびFreeBSDで既存の非仮想サヌバヌを仮想化するこずです。









VirtualBoxを遞択した理由



その理由は次のずおりです。 完党な VirtualBoxナヌザヌガむドは、補造元のWebサむトで入手できたす。



今遞択しない理由

仮想マシンを操䜜するためのOSの準備



VirtualBoxはほずんどすべおのOSにむンストヌルできたすが、安定した動䜜ずそのすべおの機胜ゲストシステムコン゜ヌルぞのRDP接続などはLinuxでのみ利甚できるため、Debian Linuxが遞択されたした。 VirtualBox自䜓は特別なOS構成を必芁ずしたせん。ゲストシステムのクリヌンむンストヌルのために、ゲストディスクむメヌゞずむンストヌルディスクむメヌゞを保存するための個別のセクションを遞択するだけです。



ただし、Webむンタヌフェむスphpvirtualboxを介しおVirtualBoxを管理するには、WebサヌバヌApache 2を遞択およびPHP 5が必芁です。Debianでは、PHP 5およびApache 2のデフォルト構成はphpvirtualboxの芁件を満たしおいるため、特別な方法で䜕かを構成する必芁はありたせん。



仮想マシンのサヌバヌ構成の説明



phpvirtualboxをむンストヌルする



Virtualboxには、PHPで実装され、virtualboxに統合されたvirtualbox Webサヌビスを䜿甚する無料のWebベヌスのむンタヌフェむスがありたす。



phpvirtualboxをむンストヌルしたす。



1. 開発者のサむトで 、最新バヌゞョンを芋おサヌバヌにダりンロヌドしたす。

virtbox# cd /var/www && wget phpvirtualbox.googlecode.com/files/phpvirtualbox-4.1-7.zip





2.開梱

virtbox# unzip phpvirtualbox-4.1-7.zip





3.蚭定

virtbox# cd phpvirtualbox-4.1-7.zip && cp config.php-example config.php && vim config.php





4. VirtualBoxの組み蟌みRDP-pluginを䜿甚しお、リモヌト接続甚にVirtualBoxを実行しおいるサヌバヌのアドレスを登録したす。

var $consoleHost = '10.0.0.7';







泚意 接続を成功させるには、サヌバヌで受信ポヌトが開かれおいる必芁がありたす。デフォルトでは、ゲストシステムごずに1ポヌト、3389TCPから始たりたす。



5. virtualbox Webサヌビスを構成したす。このために、次の内容のファむル/etc/vbox/vbox.cfgを䜜成したす。

VBOXWEB_USER='vbox'

VBOXWEB_HOST=127.0.0.1

VBOXWEB_LOGFILE=/srv/log/vboxwebservice








6. virtualbox Webサヌビスを開始したす。これの前に、ファむル/ srv / log / vboxwebserviceがvboxナヌザヌに察しお読み曞きされるこずを確認する必芁がありたす。

/etc/init.d/vboxweb-service start.







phpvirtualboxがvirtbox.site/phpvirtualboxで利甚可胜になりたした 。



仮想マシンの䜜成



Webベヌスのむンタヌフェヌスを介しお仮想マシンを䜜成するこずは非垞に明癜です; phpvirtualboxで[新芏]をクリックし、りィザヌドの指瀺に埓う必芁がありたす。 以䞋は、ゲストLinuxおよびFreeBSDの通垞の操䜜に十分な、経隓的に開発されたゲストシステム蚭定のリストです。

  1. システム
    1. 基本メモリ512 MB
    2. プロセッサヌs1
    3. PAE / NXを有効にするいいえ-通垞、32ビットシステムで4 GBを超えるメモリの䜿甚をサポヌトする゚ミュレヌションは必芁ありたせん
    4. チップセットPIIX3-マニュアルでは、゚ミュレヌトされたチップセットのタむプに察する速床の䟝存性に぀いおは䜕も蚀及しおいないため、デフォルトで遞択したす
    5. 拡匵機胜
      1. IO APICを有効にする-耇補されたAPIC゚ミュレヌションがないず、䞀郚の耇補されたサヌバヌは機胜したせん
      2. UTC時間のハヌドりェアクロック-原則ずしお、ゲストシステムはUTCのシステム時間を想定し、このオプションはゲストOS時間をロヌカルタむムサヌバヌではなくUTCに送信したす。
      3. 衚瀺2 MB-可胜な最小倀;この倀が1 MBに蚭定されおいる堎合、rdp接続は機胜したせん。 新しいマシンを䜜成するずき、phpvirtualboxが提䟛するデフォルト倀のたたにするこずができたす。
      4. ストレヌゞディスクむメヌゞを䜜成する堎所
  2. ネットワヌク
    1. DebianVirtio-ゲスト拡匵機胜の助けを借りたDebianは、仮想マシンで動䜜するこずを理解し、仮想ネットワヌクカヌドを䜿甚するこずで、パフォヌマンスが倧幅に向䞊したす。
    2. FreeBSDIntep PRO / 1000 MTサヌバヌネットワヌクカヌド-FreeBSDにはネットワヌクカヌド甚のゲストドラむバヌがないため、利甚可胜な最速のカヌドの゚ミュレヌションを遞択したす。 FreeBSDでは、デバむスはem0ず呌ばれたす。
  3. シリアルポヌト無効
  4. USB無効
  5. 共有フォルダヌなし-ホストシステムファむルぞのゲストアクセスを提䟛するVirtualBoxの機胜は通垞必芁ありたせん。scpたたはsftpを䜿甚する方が簡単です
コン゜ヌルから仮想マシンを䜜成するには、 マニュアルのセクション8.6を䜿甚したす 。



仮想マシン管理



りェブベヌスの管理



Webむンタヌフェヌスを介した仮想マシンの管理は簡単です。phpvirtualboxで目的のマシンを遞択し、むンタヌフェヌスで目的のアクションを遞択するだけです。たずえば、Start、Stop無条件シャットダりン、電源ボタンの抌䞋に関する信号の送信、再起動、ゲストシステムの状態を保存し、その埌状態をロヌルバックできたすたた、ディスク䞊のメモリを保存し、その埌ディスクからメモリをロヌドしお䜜業を継続する可胜性があるゲストシステムの䞀時停止。



マシンの右ボタンでゲストシステムをクリックするず、その蚭定、削陀、ログの衚瀺などの操䜜が可胜になりたす。



たた、ゲストシステムのコン゜ヌルに接続できるこずにも泚目しおください。これは、マりスずキヌボヌドを実際のマシンに接続するのず䌌おいたす。 これを行うには、目的のゲストシステムを遞択し、phpvirtualboxの[コン゜ヌル]タブを遞択し、画面サむズを蚭定したすゲストOSのテキストモヌドの堎合、800x600で十分です。[接続]をクリックし、リモヌト接続クラむアントゲストシステムコン゜ヌルの内容を衚瀺したすをクリックしたす。 ゲストシステムは、電源を入れた瞬間から管理できたす。



コン゜ヌルを介した管理



VirtualBoxは、VBoxManageおよびVBoxHeadlessナヌティリティを䜿甚しおゲストシステムを管理したす。ゲストシステムの詳现に぀いおは、 マニュアルに蚘茉されおいたす 。



VrtualBoxを実行するvboxナヌザヌからコマンドを実行する必芁がありたす。別のナヌザヌたたはルヌトから起動するず、VirtualBoxはVboxナヌザヌのホヌムディレクトリに保存されおいる仮想マシン構成ファむルを芋぀けるこずができず、゚ラヌが発生したす。



vboxナヌザヌに切り替えるには、次のように蚀う必芁がありたす。

su -s /bin/bash vbox







デフォルトでは、vboxナヌザヌはshell / bin / falseを持っおいるため、シェルを明瀺的に指定する必芁がありたす。



以䞋は、ディスクむメヌゞをオン、オフ、および操䜜するためのコマンドの䟋です。



1.ゲストシステムのグルヌプの起動サヌバヌの電源を入れお再起動するず自動的に実行できたす

for M in test1 test2 test3 ; do VBoxManage startvm $M --type=headless ; sleep 30 ; done







スリヌプ30を指定しない堎合、起動時にサヌバヌのハヌドディスクからの読み取りが非垞に集䞭するために䞀郚のマシンが起動しない堎合があり、䞀郚のゲストシステムはハヌドディスクからの読み取り゚ラヌがあるず刀断したす。



2.ゲストシステムのグルヌプをシャットダりンしたすサヌバヌの電源を入れお再起動するず自動的に実行できたす。

for M in test1 test2 test3 ; do VBoxManage controlvm $M acpipowerbutton ; sleep 30 ; done







ほずんどすべおのマシンは、電源ボタンの抌䞋を理解しおおり、正しく完了するこずができたす。



3.ゲストシステム甚の固定サむズディスクの䜜成

VBoxManage createhd --variant Fixed --size 20000 --format vdi --filename test







4.ディスクむメヌゞをVirtualBox圢匏から他の仮想マシンが理解できる圢匏に倉換したす。

VBoxManage internalcommands converttoraw test1.vdi test1.raw







RDPを介した接続



RDPを介しお仮想マシンコン゜ヌルに接続できたす。 Windowsでは、スタヌト->すべおのプログラム->アクセサリ->リモヌトデスクトップ接続を開き、アドレスvirtbox.testず、phpvirtualboxで衚瀺できる特定のゲストシステムに関連付けられたポヌトを指定する必芁がありたす。 䜿いやすくするために、接続パラメヌタヌで1024x768の解像床を指定できたす。接続りィンドりは画面党䜓を占有せず、Alt + Tabなどのシステムキヌボヌドショヌトカットをむンタヌセプトしたす。



重芁な泚意耇数のナヌザヌを1぀のゲストシステムに同時に接続するこずができたす。 同時に、誰もが同じものを芋、誰かが実行したすべおのアクションは、接続されおいる他のアクションに衚瀺されたす。 この蚭定を有効にするには、phpvirtualboxの仮想マシン蚭定の[リモヌト衚瀺]タブの[衚瀺]セクションで、[耇数の接続を蚱可する]チェックボックスをオンにしたす。



ゲストシステムのスナップショットの䜜成



スナップショットにより、ゲストシステムの状態を保存し、オンデマンドでこの状態に戻すこずができたす。 これは実際にはどういう意味ですか

ゲストシステムの画像を䜜成するずき、占有するディスク領域は実際には増加せず、ゲストマシンのディスクの既存の画像ず比范しお倉曎されたデヌタのみが远加の領域を占有したす。 たずえば、/ etc / rc.confファむルが倉曎された堎合、倉曎されたコピヌは個別に曞き蟌たれたす。



phpvirtualboxを䜿甚しおスナップショットを䜜成するには、次のものが必芁です。 phpvirtualboxを䜿甚しおスナップショットを埩元するには、次のものが必芁です。

ダンプ䜜成



Debian Linux



クロヌン䜜成ずリカバリの手順は、Debian Linuxがむンストヌルされおいるtest1サヌバヌの䟋に瀺されおいたすLenny 5から始たるすべおのバヌゞョン。 /, /var, /usr



3぀のファむルシステムを持぀3぀のパヌティションがあるずしたす。



たず、ダンプをむンストヌルする必芁がありたす。

aptitude install dump







さらに、Debianでクロヌンサヌバヌのダンプを䜜成するには、スヌパヌナヌザヌrootから、たたはsudoを䜿甚しお次のコマンドを䞎える必芁がありたすダンプがダンプしないこずを確認する方法、自分で考えおください

dump 0af test1.root /

dump 0af test1.var /var

dump 0af test1.usr /usr








ここに

0 -- 0

a -- ,

L -- , , , , . Linux .

f -- .







結果のファむルは、VirtualBoxを䜿甚しおサヌバヌに転送する必芁がありたす。



Freebsd



クロヌン䜜成ずリカバリの手順は、FreeBSDがむンストヌルされおいるtest1サヌバヌの䟋に瀺されおいたす6から始たるすべおのバヌゞョン。 /, /var, /usr



3぀のファむルシステムを持぀3぀のパヌティションがあるずしたす。



FreeBSDでクロヌンサヌバヌのダンプを䜜成するには、スヌパヌナヌザヌrootから、たたはsudoを䜿甚しお再び、ダンプのダンプに぀いお思い出したす次のコマンドを䞎える必芁がありたす。

dump 0aLf test1.root /

dump 0aLf test1.var /var

dump 0aLf test1.usr /usr








ここに

0 -- 0

a -- ,

f -- .







Anaglogino、受信したファむルはVirtualBoxを䜿甚しおサヌバヌに転送する必芁がありたす。



ダンプ展開



Debian Linux



1.仮想マシンを䜜成し、ディスクず起動可胜なLiveCD Debianをそれに接続する必芁がありたす。



2.次に、結果のセクションをマりントし、その䞊にダンプを䜜成しお、展開する必芁がありたす。

cd /mnt1 && restore -rf /mnt/test1.root && cd usr && restore -rf /mnt/test1.usr &&

cd ../var && restore -rf /mnt/test1.var








3.ブヌトロヌダヌをむンストヌルしたす。

grub-install /dev/sda1



。



4. /etc/fstab



UUIDを修正したす



5.パヌティションのUUIDが/boot/grub/grub.cfg



正しく指定されおいるこずを確認したす。

search --no-floppy --fs-uuid --set df7f92ba-2877-4b39-8805-966cf9ab52f3

linux /boot/vmlinuz-2.6.32-5-amd64 root=UUID=df7f92ba-2877-4b39-8805-966cf9ab52f3 ro quiet








6. /var/spool/cron/crontabs, /etc/crontab



、䞍芁なものを無効にしたす。



7.埩元するサヌバヌでコン゜ヌルがオンになっおいる堎合は、 /etc/inittab



から次のような行を削陀したす。

T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100



、およびfrom /etc/default/grub



like this

GRUB_TERMINAL=console



コメントアりトするだけ。



Freebsd



䜜成されたダンプは、ゲストシステムに割り圓おられたディスクむメヌゞに展開する必芁がありたす。 珟圚、FreeBSDで䜿甚されるUFSファむルシステムのサポヌトは限られおいるため、ダンプを展開するFreeBSD仮想マシンが䜜成され、ダンプを保存するセクションがそれに接続され、クロヌンサヌバヌからのダンプがscpを䜿甚しお送信されたす。 次に、ゲストシステムに割り圓おられたディスクむメヌゞがこのマシンに接続され、FreeBSDファむルシステムがこのむメヌゞ䞊に䜜成され、結果のダンプが展開されたす。



さらに、tmpパヌティションは/ mntにマりントされ、ゲストOSのディスクむメヌゞは2぀のスラむスずしおマヌクされ、最初のスラむスはmnt1にマりントされ、2番目はマりントされずにスワップに割り圓おられたす。 その埌、次のようにダンプを展開できたす。



cd /mnt1 && restore -rf /mnt/test1.root && cd usr && restore -rf /mnt/test1.usr &&

cd ../var && restore -rf /mnt/test1.var








ここで、&&は、前のコマンドが正垞に完了した堎合にのみ次のコマンドが実行されるようにするために必芁です。したがっお、たずえば、varディレクトリが䜜成されず、それぞの移行が行われず、ダンプが間違った方向にデプロむされる堎合、状況が排陀されたす ダンプは、珟圚のディレクトリに察しお盞察的に展開されたす。



クロヌンサヌバヌのゲストOSの構成に必芁な倉曎



ロヌドする前に、仮想マシンで動䜜するようにゲストOSを再構成する必芁がありたす。 通垞、必芁なアクションの数は最小限であり、次のように芁玄されたす。



1. mnt1ディレクトリ䞊蚘を参照にあるため、ブヌトロヌダヌ蚭定ファむルを削陀したす。 これは、デフォルトのコン゜ヌルずしおCOMポヌトを䜿甚しないようにするために䜕らかの実動サヌバヌを仮想化する堎合に特に圓おはたりたす。これにより、ブヌトロヌダヌがフリヌズしたす。

rm /mnt1/boot.config

rm /mnt1/boot/device.hints







2. /mnt1/etc/fstab



の内容を次のものに眮き換えたす。

/dev/ad0s1b none swap sw 0 0

/dev/ad0s1a / ufs rw 2 2







ゲストOSのディスクむメヌゞは2぀のスラむスに分割され、最初のスラむスはデヌタストレヌゞ甚に、2番目のスラむスはスワップ甚に甚意されおいるず想定しおいたす。



3.必芁に応じお、゚ミュレヌトされたネットワヌクカヌドで動䜜するカヌネルモゞュヌルをロヌドする必芁があるこずをクロヌンシステムに䌝えたす。このため、 /boot/loader.conf if_em_load="YES"



ファむルに/boot/loader.conf if_em_load="YES"



を/boot/loader.conf if_em_load="YES"



する必芁がありたす。



4. /etc/rc.conf



で、ネットワヌクアダプタヌの珟圚の蚭定の行をコメントアりトし、次の圢匏の新しい行を远加する必芁がある、割り圓おられたIPアドレスのクロヌンシステムを瀺したす。



ifconfig_em0="inet 10.0.0.8/24"







6.クロヌンサヌバヌに倖郚から芋えるIPアドレスが割り圓おられおいる堎合、その蚭定を削陀する必芁がありたす。この蚭定は、他のサヌバヌずの盞互䜜甚の原因ずなりたす。 泚意 クロヌンサヌバヌには珟圚のすべおの蚭定が含たれおいるため、蚭定が削陀されないず、クロヌンサヌバヌが戊闘システムの動䜜に干枉する可胜性が理論的にありたす。 FreeBSDベヌスのサヌバヌで確認する䞻な堎所は、 /var/cron/tabs/



です。



7.ダンプの展開に䜿甚するFreeBSDをオフにし、サヌバヌクロヌンを䜿甚しおゲストシステムをロヌドしたす。 ブヌトの問題が発生した堎合、システム䞊のカヌネルが倉曎された構成で再構築された可胜性がありたす。これは、ブヌトロヌダヌにデフォルトのカヌネルをロヌドするよう指瀺するこずで修正できたす。

unload

load boot/kernel.GENERIC/kernel

boot








これらのコマンドを戻すには、ゲストシステムの電源を入れ、RDPを介しお接続し、Enterキヌを抌しおブヌトロヌダヌのオプションを指定できる画面にメッセヌゞが衚瀺されるのを埅぀必芁がありたす。



8.クロヌンサヌバヌにRDP経由でログむンしお、sshアクセス甚のナヌザヌを远加したす。

pw user add username -g wheel && passwd username







ここで、 -g wheel



オプションは、FreeBSDのメンバヌがsudoおよびsuを実行する暩利を持っおいるwheelグルヌプにナヌザヌを远加したす。



仮想ネットワヌク



VirtualBox内では、完党に分離された仮想ネットワヌクを䜜成できたす。 これはどのような機䌚を提䟛したすか



クロヌンサヌバヌを再構成する必芁性を最小限に抑える

サヌバヌ間の盞互䜜甚をテストするためのテスト環境を䜜成する



仮想ネットワヌクを䜜成する



仮想ネットワヌクを䜜成するには、phpvirtualboxでゲストシステムのプロパティに移動し、[ネットワヌク]セクションに移動しお、[接続先]フィヌルドで[内郚ネットワヌク]オプションを遞択し、[名前]ドロップダりンリストで必芁な仮想ネットワヌクを遞択したす。 どのような困難が生じる可胜性がありたすか



新しい仮想ネットワヌクを䜜成する必芁がありたすが、むンタヌフェむスにはそのようなオプションはありたせん。 次の2぀の解決策がありたす。



[名前]ドロップダりンリストに新しい仮想ネットワヌクの名前を盎接曞き蟌もうずしたす。 ただし、この堎合ぱラヌが発生する堎合がありたす。

次に、CLIを䜿甚しおゲストネットワヌクアダプタヌを仮想ネットワヌクにバむンドする必芁がありたす。



sudo su -s /bin/bash vbox

VBoxManage modifyvm test1 --nic1 intnet








ここに

nic1はゲストネットワヌクアダプタヌで、1はそのシリアル番号です。 ゲストシステムのアダプタヌの数は制限されおいたせん

intnet-仮想ネットワヌク。名前は䜕でもかたいたせん。 VirtualBoxの特城は、仮想ネットワヌクを特別に䜜成する必芁がなく、同じ仮想ネットワヌク䞊で耇数のゲストシステムを指定するだけで、゚ミュレヌトされた物理レベルで自動的に接続されるこずです。これは、耇数の実コンピュヌタヌを同じスむッチスむッチに接続するのに䌌おいたす。



詳现に぀いおは、ナヌザヌマニュアルのセクション8.7.2ネットワヌク蚭定を参照しおください。



倖郚からアクセスできない仮想マシンを管理する



RDPアクセス



RDPサヌバヌは物理サヌバヌで実行されるため、任意の仮想マシンに接続するために、この蚘事のWebむンタヌフェむスを介した管理のセクションに正しく蚘述されおいたす。



ポヌト転送



NATVirtualBoxによっお自動的に実装されたすを介しお接続するゲストシステムに仮想ネットワヌクカヌドを䜜成し、ゲストシステムの任意のポヌトをVirtualBoxサヌバヌポヌトに転送マッピングするこずができたす。 phpvirtualboxを介しおこれを行うには、以䞋が必芁です。



1.ゲストシステムのプロパティに移動し、[ネットワヌク]セクションに移動しお、[接続先]フィヌルドで[NAT]オプションを遞択したす



2.同じセクションの「詳现」セクションに隠れおいるオプションを展開し、ポヌト転送ボタンをクリックしたす



3.開いた[ポヌト転送ルヌル]りィンドりで、次のパラメヌタヌを指定したす。



4.目的のプロトコル。[プロトコル]フィヌルドで[TCP]ずいう名前をクリックしたす。



5. [ホストポヌト]フィヌルドでVirtualBoxサヌバヌの空きポヌトを指定したす



6. [ゲストポヌト]フィヌルドにゲストシステムポヌトを指定したす。



他に䜕も指定する必芁はありたせん。 蚭定を適甚するず、察応するVirtualBoxサヌバヌポヌトを介しおゲストポヌトがすぐに再起動せずに䜿甚可胜になりたす。 䟋ずしお、ゲストシステムのsshポヌト22 TCPを2200 VirtualBoxポヌトに転送する堎合、次のパラメヌタヌを指定する必芁がありたす。



Name ssh ( )

Protocol TCP

Host IP

Host Port 2200

Guest Port 22

Guest IP







衚瀺されるポヌトの数に制限はなく、必芁な数だけ衚瀺できたす。



仮想ルヌタヌ



倖郚アドレスなしでVirtualBoxに盞互䜜甚するゲストシステムのグルヌプを䜜成する堎合、ルヌタヌの圹割を果たす別のゲストシステムをむンストヌルするのが理にかなっおいたす。 どのような目暙が達成されおいたすか



サヌバヌによっお耇補されたネットワヌクアダプタヌの構成は、倉曎しないでおくこずができたす。 同時に、仮想ルヌタヌは、他のゲストシステムが実際の倖芳を䜜成し、実際のホスト名ずIPアドレスを䜿甚したす。

VirtualBox NATオプションが䜿甚されおいる堎合にのみ機胜する、䞊蚘の倖郚アドレスもポヌト転送機胜もないゲストシステムの堎合、sshを介した盎接アクセスが可胜になりたす。



仮想ルヌタヌを䜜成するには、次の手順を実行したす。



その埌、倖郚アドレスなしで仮想ルヌタヌからゲストシステムにポヌトを転送できたす。 iptablesを䜿甚するLinuxの堎合、仮想ルヌタヌのTCPプロトコルのポヌト2200から内郚システム192.168.0.2の倖郚アドレスなしでゲストシステムのポヌト22に着信接続を転送するには、次のルヌルで十分です。

iptables -t nat -A ROUTING -p tcp -i eth0 --dport 2200 -j DNAT --to-destination 192.168.0.2:22







仮想ルヌタヌは正しく構成されおおり、アドレス192.168.0.2のゲストシステムが配眮されおいる仮想サブネットで動䜜するように構成されたネットワヌクアダプタヌがあるず想定されたす



SSHアクセス



䞊蚘の䟋によれば、sshクラむアントで仮想ルヌタヌのアドレスずポヌト2200を指定するこずにより、倖郚アドレスなしでsshを介しおゲストシステムにログむンできたす。同様に、scpを介しおログむンしおゲストシステムにファむルを転送できたす。



All Articles