Upgrade to Pro — share decks privately, control downloads, hide ads and more …

virsh の使い方

virsh の使い方

Avatar for akam1o

akam1o

March 07, 2026

More Decks by akam1o

Other Decks in Technology

Transcript

  1. libvirt とは? • libvirt とは? ◦ 仮想化環境を管理するためのオープンソースのライブラリ・ ツールセット • 仮想マシンやストレージ、ネットワークなどを

    API や CLI から操 作できる ◦ C言語の API が実装されているが、Python, Java, Go などの 言語バインディングがある • libvirt の domain = 仮想マシンのこと
  2. virsh とは? • virsh は libvirt を操作する CLI ツール •

    仮想マシンの管理(起動・停止・作成・削除など)を行う 基本コマンド体型 • 基本構文例: virsh [サブコマンド] [オプション] ◦ virsh list ◦ virsh start ◦ virsh shutdown ◦ ...
  3. 仮想マシンの一覧確認 • virsh list [--all] ◦ --all をつけると shut off

    の VM も表示される # virsh list Id Name State ------------------------------- 1 ubuntu-dpdk01 paused 2 ubuntu-mig02 running # virsh list --all Id Name State -------------------------------- 1 ubuntu-dpdk01 paused 2 ubuntu-mig02 running - ubuntu-dpdk02 shut off - ubuntu-dpdk03 shut off - ubuntu-dpdk04 shut off
  4. 仮想マシンの起動・停止 • 起動 ◦ virsh start <VM名> • 停止 ◦

    virsh shutdown <VM名> • 休止状態 ◦ virsh suspend/resume <VM名> • 強制終了 ◦ virsh destroy <VM名>
  5. 仮想マシンの作成アプローチ • virsh での作成(XMLファイルから定義) ◦ virsh define: 既存の XML 定義を元に

    VM を登録 • virt-install でのインストール ◦ OS インストールも含めて新規VMを作成・定義
  6. virt-install の基本 • CLI で新規仮想マシン作成+OSインストールを自動化 • 必要パラメータ ◦ 例:名前、メモリ、ディスク、ISOファイル等 #

    virt-install \ --name test-vm \ --memory 2048 \ --vcpus 2 \ --disk size=20 \ --cdrom /var/lib/libvirt/images/CentOS-Stream-9.iso \ --os-type linux\ --network bridge=virbr0
  7. virt-install よく使うオプション • --name, -n: 名前 • --memory: 割り当てるメモリ(MiB) •

    --vcpus: CPU 数 • --disk: ディスク • --cdrom: マウントする CDROM • --network: 接続するネットワーク
  8. virt-install の例 (1) # virt-install \ --connect qemu:///system \ --name

    my-win10-vm \ --memory 4096 \ --disk size=40 \ --osinfo win10 \ --cdrom /path/to/my/win10.iso
  9. virt-install の例 (2) # virt-install \ --connect qemu:///system \ --memory

    8192 \ --vcpus 8 \ --graphics vnc \ --osinfo centos7.0 \ --location http://mirror.centos.org/centos-7/7/os/x86_64/
  10. virt-install の例 (3) # virt-install \ --import \ --memory 512

    \ --disk /home/user/VMs/my-debian9.img \ --osinfo debian9
  11. virt-install の例 (4) # virt-install \ --name armtest \ --memory

    1024 \ --arch armv7l --machine vexpress-a9 \ --disk /home/user/VMs/myarmdisk.img \ --boot kernel=/tmp/my-arm-kernel,initrd=/tmp/my-arm-initrd,dtb=/tmp/my-arm-dtb,kernel_args="co nsole=ttyAMA0 rw root=/dev/mmcblk0p3" \ --graphics none
  12. virt-install の例 (5) # virt-install \ --name foo \ --memory

    4096 \ --boot uefi \ --machine q35 \ --memtune hard_limit=4563402 \ --disk size=15,target.bus=scsi \ --import \ --controller type=scsi,model=virtio-scsi,driver.iommu=on \ --controller type=virtio-serial,driver.iommu=on \ --network network=default,model=virtio,driver.iommu=on \ --rng /dev/random,driver.iommu=on \ --memballoon driver.iommu=on \ --launchSecurity sev
  13. 仮想マシンの構成変更 • virsh edit <VM名> • libvirt xml 形式のファイルの編集画面に入る ◦

    virt-install で最低限の設定 -> virsh edit がおすすめ • libvirt xml: ◦ https://libvirt.org/formatdomain.html ◦ いろいろできるように継ぎ足しされた秘伝のタレ状態 • 既存の仮想マシン構成の確認 ◦ virsh dumpxml <VM名>
  14. 仮想マシンの define/undefine • virsh define <libvirt xml> ◦ 他のホストなどから xml,

    qcow2 などを持ってきて起動 • virsh undefine <VM名> ◦ libvirt の管理下から外す ▪ VM の削除のときに使う
  15. configdrive の作成 (1) • configdrive とは ◦ cloud-init を受け渡すための方法の一つ ◦

    仮想 CDROM を介して cloud-init の情報を受け渡す • cloud-localds ◦ configdrive を簡単に作成するためのコマンド ◦ cloud-localds [options] output user-data [meta-data]
  16. configdrive の作成 (2) • configdrive 生成例 ◦ cloud-localds --network-config NETWORK_CONFIG_FILE

    output USERDATA_FILE # cat /tmp/userdata #cloud-config hostname: HOSTNAME user: USER password: PASSWORD chpasswd: expire: False ssh_pwauth: True # /tmp/network-config version: 2 ethernets: eth0: dhcp4: false dhcp6: false addresses: [192.168.0.2/24] gateway4: 192.168.0.1 nameservers: addresses: - 8.8.8.8 - 8.8.4.4 # cloud-localds --network-config=/tmp/network-config \ /var/lib/libvirt/images/VMNAME-config.img \ /tmp/userdata
  17. configdrive の使い方 • virt-install で組み込むとき ◦ --disk path=/path/to/config.img,device=cdrom • virsh

    edit で組み込むとき <devices> ... <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/path/to/config.img'/> <target dev='sdd' bus='sata'/> <readonly/> </disk> ... </devices>
  18. コンソールへの接続 • virsh console <VM名> # virsh console ubuntu-dpdk01 Connected

    to domain 'ubuntu-dpdk01' Escape character is ^] (Ctrl + ])
  19. virsh コマンドまとめ コマンド 説明 virsh list [--all] VM のリストを表示 virsh

    start/shutdown <VM名> VM の起動/停止 virsh suspend/resume <VM名> VM の休止状態/リジューム virsh destroy <VM名> VM の強制終了 virsh edit <VM名> VM の構成変更 virsh define <libvirt xml> XML から VM を作成 virsh undefine <VM名> libvirt の管理から VM を削除 virsh console <VM名> VM のコンソールに接続
  20. EOP

  21. 参考資料 • Ubuntu Manpage: virt-install - provision new virtual machines

    ◦ https://manpages.ubuntu.com/manpages/jammy/man1/virt-i nstall.1.html • cloud-localds(1) — cloud-image-utils — Debian testing — Debian Manpages ◦ https://manpages.debian.org/testing/cloud-image-utils/cloud -localds.1.en.html • libvirt: Domain XML format ◦ https://libvirt.org/formatdomain.html