virsh 能实现的,virt-manger 都能实现
常用子命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 help attach-device attach-disk attach-interface create define destroy detach-device attach-device detach-disk detach-interface domblkstat domid domifstat dominfo domname domstate domuuid dumpxml list migrate nodeinfo quit reboot restore resume save setmaxmem setmem setvcpus shutdown start suspend undefine vcpupin version
查看帮助:
1 2 virsh help virsh help COMMAND
管理存储池 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 find-storage-pool-sources-as find-storage-pool-sources pool-autostart pool-build pool-create-as pool-create pool-define-as pool-define pool-delete pool-destroy pool-dumpxml pool-edit pool-info pool-list pool-name pool-refresh pool-start pool-undefine pool-uuid pool-event pool-capabilities
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 virsh pool-create-as <name> <type > [OPTIONS] 每一个存储池都对应一个xml配置文件,其中的标签和下面的option都有对应 OPTIONS: [--name] <string> [--type ] <string> --print-xml --source-host <string> --source-path <string> --source-dev <string> --source-name <string> --target <string> --source-format <string> --auth-type <string> --auth-username <string> --secret-usage <string> --secret-uuid <string> --adapter-name <string> --adapter-wwnn <string> --adapter-wwpn <string> --adapter-parent <string> --adapter-parent-wwnn <string> --adapter-parent-wwpn <string> --adapter-parent-fabric-wwn <string> --source-protocol-ver <string> --build --no-overwrite --no-overwrite
基于 dir 的 pool 1 2 3 4 5 6 7 8 9 10 11 12 13 virsh pool-define-as vm_images_dir dir --target "/data/vm_images" virsh pool-build vm_images_dir virsh pool-start vm_images_dir virsh pool-autostart vm_images_dir virsh pool-destroy --pool vm_images_dir virsh pool-delete --pool vm_images_dir virsh pool-undefine --pool vm_images_dir
基于 fs 的 pool 基于已经创建文件系统的分区
1 2 3 4 5 6 7 8 9 10 fdisk /dev/sdb mkfs.ext4 /dev/sdb6 mkdir /vm_imagesvirsh pool-define-as vm_images_fs fs --source-dev "/dev/sdb6" --target "/vm_images"
基于 disk 的 pool 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 virsh pool-define-as vm_images_disk disk --source-dev "/dev/sdb" --source-format gpt --target "/dev" <pool type ='disk' > <name>vm_images_disk</name> <source > <device path='/dev/sdb' /> <format type ='gpt' /> </source> <target> <path>/dev</path> </target> </pool> virsh pool-define vm_images_disk.xml
基于 LVM 的 pool 没有卷组,直接创建存储池:
1 2 virsh pool-define-as vm_images_lvm logical --source-dev=/dev/sdb virsh pool-build vm_images_lvm
基于已有卷组,创建存储池(推荐):
1 virsh pool-define-as vm_images_lvm logical --source-name=vm_images_lvm
基于 NFS 的 pool 1 2 3 virsh pool-define-as vm_images_nfs netfs \ --source-host 10.0.0.18 --source-path /data/kvmdata --target /data/vm_images_nfs
管理存储卷 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 vol-clone vol-create-as vol-create vol-create-from vol-delete vol-download vol-dumpxml vol-info vol-key vol-list vol-name vol-path vol-pool vol-resize vol-upload vol-wipe
1 2 3 4 5 6 7 8 9 10 11 12 13 14 virsh vol-create-as <pool> <name> <capacity> [OPTIONS] OPTIONS [--pool] <string> pool name [--name] <string> name of the volume [--capacity] <string> size of the vol, as scaled integer (default bytes) --allocation <string> initial allocation size, as scaled integer (default bytes) --format <string> file format type raw,bochs,qcow,qcow2,qed,vmdk --backing-vol <string> the backing volume if taking a snapshot --backing-vol-format <string> format of backing volume if taking a snapshot --prealloc-metadata preallocate metadata (for qcow2 instead of full allocation) --print-xml print XML document, but don't define/create
基于文件系统的存储池,创建其中的存储卷,可以使用 touch
、mkdir
、qemu-img create
等命令,这些命令只能创建特定的存储卷,例如touch
创建 raw 格式的文件,mkdir
创建目录,qemu-img create
创建磁盘镜像。
基于磁盘的存储池,创建其中的存储卷,也有对应命令,例如 disk 格式的存储池,使用fdisk
创建分区;logical 格式的存储池,使用lvcreate
,等等
virsh vol-create-as
配置项丰富,可以给各种类型的存储池,创建各种格式的存储卷,可以说相当于上述各种命令的合体
基于目录的 pool 的 volume 管理 1 2 3 4 virsh vol-create-as vm_images_dir test1.qcow2 1g --format qcow2 virsh vol-delete test1.qcow2 vm_images_dir
基于 LVM 的 pool 的 volume 管理 1 2 3 4 virsh vol-create-as vm_images_lvm lvvol1 10g virsh vol-delete lvvol1 vm_images_lvm
克隆存储卷 克隆比直接 cp 复制文件要好
1 virsh vol-clone <vol> <newname> [--pool <string>] [--prealloc-metadata] [--reflink]
向虚拟机添加存储卷 1 2 3 4 virsh attach-disk <domain> <source > <target> [OPTIONS] virsh attach-disk \ --domain centos7 --sourcetype block --source /dev/vm_images_lvm/lvvol1 --target vdb