(转)virsh命令速查表

virsh commands cheatsheet 原文链接

Virsh

Virsh connect

The virsh connect [hostname-or-URI] [–readonly] command begins a local hypervisor session using virsh. After the first time you run this command it will run automatically each time the virsh shell runs. The hypervisor connection URI specifies how to connect to the hypervisor. The most commonly used URIs are:

qemu:///system - connects locally as the root user to the daemon supervising guest virtual machines on the KVM hypervisor. qemu:///session - connects locally as a user to the user’s set of guest local machines using the KVM hypervisor.

virsh connect qemu:///system 

Virsh display node information:

This displays the host node information and the machines that support the virtualization process.

virsh nodeinfo

Virsh list all domains

To list both inactive and active domains, use the command:

virsh list --all 

List only active domains

virsh list 

Virsh start vm

virsh start test 

Virsh autostart vm

To set a vm to start automatically on system startup, do:

virsh autostart test
virsh dominfo test
  • Keep an eye on the option Autostart: enable.

Virsh autostart disable

To disable autostart feature for a vm:

virsh autostart --disable test

Virsh stop vm, virsh shutdown vm

To shutdown a running vm gracefully use:

virsh shutdown test

Virsh force shutdown vm

You can do a forceful shutdown of active domain using the command:

virsh destroy test

Virsh stop all running vms

In case you would like to shutdown all running domains, just issue the command below:

for i in ` virsh list | grep running | awk '{print $2}'` do
     virsh shutdown $i
done

Virsh reboot vm

To restart a vm named test, the command used is:

virsh reboot test

Virsh remove vm

To cleanly remove a vm including its storage columes, use the commands shown below. The domain test should be replaced with the actual domain to be removed.

virsh destroy test 2> /dev/null
virsh undefine  test
virsh pool-refresh default
virsh vol-delete --pool default test.qcow2

In this example, storage volume is named /var/lib/libvirt/images/test.qcow2

Virsh create a vm

If you would like to create a new virtual machine with virsh, the relevant command to use is `virt-install. This is crucial and can’t miss on virsh commands cheatsheet arsenal. The example below will install a new operating system from CentOS 7 ISO Image.

 virt-install \
--name centos7 \
--description "Test VM with CentOS 7" \
--ram=1024 \
--vcpus=2 \
--os-type=Linux \
--os-variant=rhel7 \
--disk path=/var/lib/libvirt/images/centos7.qcow2,bus=virtio,size=10 \
--graphics none \
--location $HOME/iso/CentOS-7-x86_64-Everything-1611.iso \
--network bridge:virbr0  \
--console pty,target_type=serial -x 'console=ttyS0,115200n8 serial'

Virsh connect to vm console

To connect to the guest console, use the command:

virsh console test

This will return a fail message if an active console session exists for the provided domain.

Virsh edit vm xml file

To edit a vm xml file, use:

virsh edit test

Virsh suspend vm, virsh resume vm

To suspend a guest called testwith virsh command, run:

virsh suspend test
  • Domain test suspended

NOTE: When a domain is in a suspended state, it still consumes system RAM. Disk and network I/O will not occur while the guest is suspended.

Resuming a guest vm:

To restore a suspended guest with virsh using the resume option:

virsh resume test

Domain test resumed

Virsh save vm

To save the current state of a vm to a file using the virsh command :

The syntax is:

virsh save test test.saved

Domain test saved to test.save

$ ls -l test.save 
-rw------- 1 root root 328645215 Mar 18 01:35 test.saved

Restoring a saved vm

To restore saved vm from the file:

virsh restore test.save 

Domain restored from test.save

Virsh Manage Volumes

Virsh create volume

To create a 2GB volume named testvol2 on the default storage pool, use:

virsh vol-create-as default  test_vol2.qcow2  2G
du -sh /var/lib/libvirt/images/test_vol2.qcow2
  • default: Is the pool name.
  • testvol2: This is the name of the volume.
  • 2G: This is the storage capacity of the volume.

Virsh attach a volume to vm

To attach created volume above to vm test, run:

virsh attach-disk --domain test \
--source /var/lib/libvirt/images/test_vol2.qcow2  \
--persistent --target vdb
  • –persistent: Make live change persistent
  • –target vdb: Target of a disk device

Virsh detach volume on vm

To detach above volume testvol2 from the vm test:

virsh detach-disk --domain test --persistent --live --target vdb

resize disk

Please note that you can directly grow disk image for the vm using qemu-img command, this will look something like this:

qemu-img resize /var/lib/libvirt/images/test.qcow2 +1G
  • The main shortcoming of above command is that you cannot resize an image which has snapshots.

Virsh delete volume

To delete volume with virsh command, use:

virsh vol-delete test_vol2.qcow2  --pool default
virsh pool-refresh  default
virsh vol-list default

Virsh Manage Snapshots

In this second last section of managing kvm guest machines with virsh command, we’ll have a look at managing VM snapshots.

Virsh Create Snapshot for a vm

virsh snapshot-create-as --domain test \
--name "test_vm_snapshot1" \
--description "test vm snapshot 1-working"

Virsh list Snapshots for a vm

virsh snapshot-list test

Virsh display info about a snapshot

To retrieve more information about a domain, use:

virsh snapshot-info --domain test --snapshotname test_vm_snapshot1

Virsh revert vm snapshot

Here we’ll create another snapshot called testvmsnapshot2, then revert to snapshot testvmsnapshot1

virsh snapshot-create-as \
--domain test --name "test_vm_snapshot2" \
--description "test vm snapshot 2-working"

Domain snapshot testvmsnapshot2 created Let’s revert the snapshot we created before:

virsh snapshot-list test
virsh snapshot-revert --domain test  --snapshotname test_vm_snapshot1  --running

Virsh delete snapshot

virsh snapshot-delete --domain test --snapshotname  test_vm_snapshot2
virsh snapshot-delete --domain test --snapshotname  test_vm_snapshot1

Virsh clone a vm

virt-clone --connect qemu:///system \
--original test \
--name test_clone \
--file /var/lib/libvirt/images/test_clone.qcow2 

Virsh manage VM vcpus

This virsh commands cheatsheet section covers how to add additional virtual cpus to a virtual machine:

virsh setvcpus --domain test --maximum 2 --config
virsh setvcpus --domain test --count 2 --config
virsh reboot test

Virsh manage VM ram

  • 单位是 KB

To adjust the total ram used by the guest operating system, the following commands are used: Also on virsh commands cheatsheet is managing RAM with virsh.

virsh setmaxmem test 2048 --config
virsh setmem test 2048 --config
virsh reboot test