ÔõÑùÉèÖúÍÖÎÀíLinuxÉϵÄÐéÄ⻯ÇéÐÎ
ÔõÑùÉèÖúÍÖÎÀíLinuxÉϵÄÐéÄ⻯ÇéÐÎ
ÐéÄ⻯ÊÖÒÕÊÇ»ùÓÚÓ²¼þ×ÊÔ´µÄÒ»ÖÖÖ§½âºÍʹÓ÷½·¨£¬Ëü¿ÉÒÔ½«Ò»Ì¨ÎïÀíЧÀÍÆ÷»®·ÖΪ¶à¸ö×ÔÁ¦µÄÐéÄâ»úʵÀý£¬´Ó¶øÌá¸ßЧÀÍÆ÷µÄ×ÊԴʹÓÃÂʺÍÎÞаÐÔ¡£LinuxϵͳÌṩÁËһϵÁÐÇ¿Ê¢µÄÐéÄ⻯¹¤¾ßºÍÖÎÀí»úÖÆ£¬±¾ÎĽ«ÏÈÈÝÔõÑùÔÚLinuxÉÏÉèÖúÍÖÎÀíÐéÄ⻯ÇéÐΣ¬²¢¸ø³öÏêϸ´úÂëʾÀý¡£
Ò»¡¢ÉèÖÃÐéÄ⻯ƽ̨
Ê×ÏÈ£¬ÎÒÃÇÐèҪѡÔñºÏÊʵÄÐéÄ⻯ƽ̨¡£ÔÚLinuxÉÏ£¬¿ÉÒÔÑ¡Ôñ³£¼ûµÄÐéÄ⻯ƽ̨£¬ÈçKVM¡¢Xen¡¢VirtualBoxµÈ¡£ÕâÀïÒÔKVMΪÀý¾ÙÐÐ˵Ã÷¡£
×°ÖÃKVM
ÔÚUbuntuϵͳÉÏ£¬¿ÉÒÔʹÓÃÒÔÏÂÏÂÁî×°ÖÃKVM£º
$ sudo apt install qemu-kvm libvirt-bin virt-manager
½¨ÉèÐéÄâÍøÂç
½¨ÉèÐéÄâÍøÂç¿ÉÒÔʹÐéÄâ»úÖ®¼äÏ໥ͨѶ£¬²¢ÓëËÞÖ÷»ú¾ÙÐÐÅþÁ¬¡£¿ÉÒÔʹÓÃÒÔÏÂÏÂÁÉèÐéÄâÍøÂ磺
$ sudo virsh net-define network.xml
$ sudo virsh net-start network
½¨ÉèÐéÄâ»ú
ʹÓÃvirt-installÏÂÁîÀ´½¨ÉèÐéÄâ»ú£¬ÀýÈ磺
$ sudo virt-install –name myvm –ram 2048 –vcpu 2 –disk path=/var/lib/libvirt/images/myvm.img,size=10 –network network=default –graphics vnc,port=5901 –os-type=linux –os-variant=ubuntutrusty –cdrom=/path/to/ubuntu.iso
¶þ¡¢ÖÎÀíÐéÄ⻯ÇéÐÎ
ÔÚÐéÄ⻯ÇéÐÎÖУ¬ÎÒÃÇ¿ÉÒÔʹÓÃÏÂÁîÐй¤¾ß»òÕßͼÐνçÃ湤¾ß¾ÙÐÐÖÎÀí¡£
ÏÂÁîÐÐÖÎÀí
ʹÓÃvirshÏÂÁî¿ÉÒÔ¶ÔÐéÄâ»ú¾ÙÐн¨É衢ɾ³ý¡¢Æô¶¯¡¢×èÖ¹µÈ²Ù×÷¡£ÒÔÏÂÊdz£ÓõÄÏÂÁîʾÀý£º
½¨ÉèÐéÄâ»ú£º
$ sudo virt-install –name myvm –ram 2048 –vcpu 2 –disk path=/var/lib/libvirt/images/myvm.img,size=10 –network network=default –graphics vnc,port=5901 –os-type=linux –os-variant=ubuntutrusty –cdrom=/path/to/ubuntu.iso
ɾ³ýÐéÄâ»ú£º
$ sudo virsh destroy myvm
$ sudo virsh undefine myvm
Æô¶¯ÐéÄâ»ú£º
$ sudo virsh start myvm
×èÖ¹ÐéÄâ»ú£º
$ sudo virsh shutdown myvm
Éó²éÐéÄâ»úÁÐ±í£º
$ sudo virsh list
ͼÐνçÃæÖÎÀí
LinuxϵͳÌṩÁËvirt-managerͼÐνçÃ湤¾ß£¬¿ÉÒÔÀû±ãµØ¶ÔÐéÄâ»ú¾ÙÐÐÖÎÀí¡£¿ÉÒÔʹÓÃÒÔÏÂÏÂÁî×°ÖÃvirt-manager£º
$ sudo apt install virt-manager
·¿ªvirt-manager£¬¿ÉÒÔ¿´µ½Òѽ¨ÉèµÄÐéÄâ»úÁÐ±í£¬Í¨¹ý½çÃæ²Ù×÷¿ÉÒÔÀû±ãµØ¶ÔÐéÄâ»ú¾ÙÐÐÖÎÀíºÍ¼à¿Ø¡£
Èý¡¢´úÂëʾÀý
ÒÔÏÂÊÇÒ»¸öʹÓÃPythonÓïÑÔ±àдµÄ¼òÆÓµÄÐéÄâ»úÖÎÀí¾ç±¾Ê¾Àý£º
import libvirt # ÅþÁ¬µ½ÍâµØµÄlibvirtÊØ»¤Àú³Ì conn = libvirt.open() # ½¨ÉèÐéÄâ»ú def create_vm(name, ram, vcpu, disk_path, network, graphics): xml = ''' <domain type='kvm'> <name>{}</name> <memory unit='KiB'>{}</memory> <vcpu placement='static'>{}</vcpu> <os> <type arch='x86_64' machine='pc-i440fx-2.9'>hvm</type> <boot dev='hd'/> </os> <devices> <disk type='file' device='disk'> <driver name='qemu' type='qcow2'/> <source file='{}'/> <target dev='vda' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </disk> <interface type='network'> <mac address='52:54:00:6f:65:94'/> <source network='{}'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <graphics type='vnc' port='{}' autoport='no' listen='0.0.0.0'/> </devices> </domain> '''.format(name, ram, vcpu, disk_path, network, graphics) conn.createXML(xml, 0) # ɾ³ýÐéÄâ»ú def delete_vm(name): dom = conn.lookupByName(name) dom.destroy() dom.undefine() # Æô¶¯ÐéÄâ»ú def start_vm(name): dom = conn.lookupByName(name) dom.create() # ×èÖ¹ÐéÄâ»ú def stop_vm(name): dom = conn.lookupByName(name) dom.shutdown() # Éó²éÐéÄâ»úÁбí def list_vms(): vms = conn.listDomainsID() for vm in vms: dom = conn.lookupByID(vm) print("Name: {}, ID: {}, State: {}".format(dom.name(), dom.ID(), dom.state())) # ʾÀýÓ÷¨ create_vm('myvm', 2048, 2, '/var/lib/libvirt/images/myvm.img', 'default', '5901') start_vm('myvm') list_vms() delete_vm('myvm')
µÇ¼ºó¸´ÖÆ
Õâ¸öʾÀýʹÓÃÁËlibvirt¿âÀ´ÅþÁ¬µ½ÍâµØµÄlibvirtÊØ»¤Àú³Ì£¬²¢ÌṩÁËһЩ¼òÆÓµÄÖÎÀí²Ù×÷£¬È罨É衢ɾ³ý¡¢Æô¶¯¡¢×èÖ¹ÐéÄâ»ú£¬ÒÔ¼°Éó²éÐéÄâ»úÁбíµÈ¡£
ÔÚÏÖʵʹÓÃÖУ¬¿ÉÒÔƾ֤ÐèÇó¶ÔÐéÄ⻯ÇéÐξÙÐнøÒ»²½µÄÉèÖúÍÖÎÀí£¬ÈçÍøÂçÉèÖᢴÅÅÌÖÎÀí¡¢ÐÔÄܼà¿ØµÈ¡£
×ܽá
±¾ÎļòÒªÏÈÈÝÁËÔÚLinuxÉÏÉèÖúÍÖÎÀíÐéÄ⻯ÇéÐεÄÒªÁ죬²¢¸ø³öÁËÏêϸ´úÂëʾÀý¡£ÐéÄ⻯ÊÖÒÕΪЧÀÍÆ÷×ÊÔ´µÄ¸ßЧʹÓÃÌṩÁ˱㵱£¬Í¬Ê±Ò²ÎªÓ¦Óð²ÅźÍÖÎÀí´øÀ´ÁËÎÞаÐԺͿÉÀ©Õ¹ÐÔ¡£Ï£ÍûÕâƪÎÄÕÂÄܸø¶ÁÕß´øÀ´ÓйØLinuxÉÏÐéÄ⻯ÇéÐÎÉèÖúÍÖÎÀí·½ÃæµÄһЩÆô·¢ºÍ×ÊÖú¡£
ÒÔÉϾÍÊÇÔõÑùÉèÖúÍÖÎÀíLinuxÉϵÄÐéÄ⻯ÇéÐεÄÏêϸÄÚÈÝ£¬¸ü¶àÇë¹Ø×¢±¾ÍøÄÚÆäËüÏà¹ØÎÄÕ£¡