Mercurial > hg > Document > Growi
view software/KVM.md @ 5:8f5664d57cfd
backup 2020-12-19
author | autobackup |
---|---|
date | Sat, 19 Dec 2020 00:10:03 +0900 |
parents | e12992dca4a0 |
children |
line wrap: on
line source
# kvm ## kvmとは Linux上で仮想化環境を利用するためのソフトウェア。 KVMはIntel社のIntel VTやAMD社のAMD-Vなどマイクロプロセッサの提供する仮想化支援機能を利用し、LinuxカーネルをVMMとして動作させる。その上で複数台のコンピュータを仮想的に動作させることができ、Linux自体を含む様々なOSを並列に動作させることができる。 ## kvmでの差分ディスク管理 以下のコマンドを実行することでxmlファイルを作成することができる。 ``` % /usr/bin/qemu-kvm -name VMNAME -hda /media/fcs/student/e /e /IMAGENAME.qcow2 -m 2048 ``` - "VMNAME"がVM名、"IMAGENAME"がIMAGEファイル名となる。 - "-m" オプションでメモリ容量の設定。この場合は2048MB - "-hda" オプションでストレージとして与えるファイルの指定。 作成したファイルには必要に応じて以下の変更を加える。 - type archの値を'i686'からx86_64に。 - <driver name='qemu' type='qcow2'/>を<disk>〜</disk>間に追加。 - <graphics type='vnc' port='5901' autoport='no' listen=''/>を<graphics type='vnc' port='5901' autoport='yes' listen='0.0.0.0'/>に変更。 既存の xml ファイルをコピーして、直接 xml を書き換えてしまってもよい。 書き換える必要がある部分は、 - name - uuid - source file - mac address の4つ。 name にはVM名、uuid には uuidgen コマンドで生成されたもの、source file には使用するファイルのパス、mac address には他と被らないように適当な mac address を入れればいい。 ### ethernetの設定 ブリッジ接続の場合は、作成したxmlファイルにさらに変更を咥えなければならない。 - interface typeの値を'ethernet'から'bridge'に変更。 ### イメージファイルの作成 QCOW2形式なら、最初に全容量を確保しないのでスペースを広く取らない。また、Copy on Writeが使えるのでイメージ本体には書き込まずに差分ファイルデータに書き込み、差分で管理することができる。 以下のコマンドを実行することでQCOW形式のイメージファイルが作成される。 ``` % qemu-img create -b BASEIMAGE -f qcow2 IMAGE ``` - "-b"オプションでbase imageを指定しておくことで作成したイメージファイルには差分のみが書き込まれるようになる。BASEIMAGEにベースとするファイルのパスを指定する。 - "-f"オプションでフォーマットの指定。ここでは前述したようにQCOW2。 - IMAGEは作成するイメージファイル名。 ### xmlファイルの登録 作成したxmlファイルをvirshに登録する。このとき既にイメージファイルを作成しておく必要がある。登録は以下のコマンドを実行することで行える。 ``` % sudo virsh define XMLFILE ``` XMLFILEに登録するファイルのパスを指定する。また、登録されたxmlファイルは/etc/libvirt/qemu 以下にコピーされて管理されるため、登録後に元のxmlファイルに変更を加えても反映されない。編集方法については次の項にて示す。 ### virsh virshは他にも以下のような用途がある。 - xmlファイルの編集 ``` % sudo virsh edit VMNAME ``` 登録したxmlファイルの編集を行う。前述したとおり、これらのファイルは/etc/libvirt/qemu 以下に存在する。 - 起動 ``` % sudo virsh start VMNAME ``` 指定したVMを起動する。 - 一覧の確認 ``` % sudo virsh list --all ``` 登録したVMの一覧を表示する。 - VNCポートの確認 ``` % sudo virsh vncdisplay VMNAME ``` 指定したVMのVNCポートを表示する。 - xmlファイルの確認 ``` % sudo virsh dumpxml VMNAME ``` 指定したVMのxmlファイルの内容を表示する。 ### kvm で linux kernel を debug する http://okinawadevops.github.io/2014/10/18/yosukeota/ - ie-virsh define 01 で指定されたディレクトリに qcow2 のイメージを置く - ie-virsh start 01 で起動する - ie-virsh vncdisplay 01 で表示された番号に5900を足したものがVNCポートになる - defineのときに表示されたパスワードでVNCに接続する - root でログインしてgrubを書き換えてコンソールログインできるようにする - `/etc/default/grub` を編集する - ie-virsh console 01 - あるいはipv6でsshで接続する https://fedoraproject.org/wiki/Building_a_custom_kernel を見てkernelをコンパイルする コンパイルしたディレクトリを手元にコピーする ie-virsh destroy 01 , ie-virsh undefine 01 で一度消してからie-virsh gdb-define 01 でデバッグ用にVMを定義する `ie-virsh start 01` で起動する コピーしたソースディレクトリ上に移動し ``` gdb vnlinux ``` とする ``` ie-virsh dumpxml 01 でデバッグポートを確認してgdbの中で target remote :01234 ``` 01234はデバッグポート