Presentation is loading. Please wait.

Presentation is loading. Please wait.

志豪 2009.09.15.  Categories of Virtual Machine  Virtual Machine manager: Xen  Xen architecture  Xen component  Xen API  XenAccess Library  reference.

Similar presentations


Presentation on theme: "志豪 2009.09.15.  Categories of Virtual Machine  Virtual Machine manager: Xen  Xen architecture  Xen component  Xen API  XenAccess Library  reference."— Presentation transcript:

1 志豪 2009.09.15

2  Categories of Virtual Machine  Virtual Machine manager: Xen  Xen architecture  Xen component  Xen API  XenAccess Library  reference

3  Full virtualization  VMware Workstation, VirtualBox VMware WorkstationVirtualBox  Hardware-assisted virtualization  Xen, Linux KVM XenLinux KVM  Partial virtualization  Paravirtualization  Operating system-level virtualization  OpenVZ OpenVZ

4  Virtualization  Para-virtualization  64-bit architecture  32-bit architecture with PAE [root@linux ~]# cat /proc/cpuinfo | grep flags flags : fpu tsc msr pae mce cx8 mtrr mca cmov pat pse36 mmx fxsr sse up

5  Virtualization  Full-virtualization  Virtualization Technolegy (Intel)  SVM (AMD) 在 Intel Core 2 Duo 的 CPU 主機上面測試 CPU 旗標: [root@linux ~]# cat /proc/cpuinfo | grep flags flags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc up pni monitor ds_cpl vmx est tm2 cx16 xtpr lahf_lm

6

7  Xen Hypervisor  Domain 0  Domain Management and Control (Xen DM&C)  Domain U (Dom U) PV Guest  Domain U (Dom U) HVM Guest

8  Xen Hypervisor

9  Domain 0

10  Domain U  PV Guest

11  Domain U  HVM Guest

12  Domain Management and Control  Xend  Libxenctrl

13  Domain Management and Control  Xm  Xenstored  Qemu-dm  Xen Virtual Firmware  Xen Operation

14  Domain 0 and Domain U Communication

15  Xen Management Architecture

16  XenAPI Class Hierarchy

17  Xen installed and running  libxml2  libcurl2  modify configuration

18 In /etc/xen/xend-config.sxp: (xen-api-server ( (9363 pam ‘^localhost$ example\\.com$’) (9367 pam '' /etc/xen/xen-api.key /etc/xen/xen-api.crt) (unix none))) Xen-API XML-RPC over HTTP / TCP on port 9363, using PAM and an allowed-hosts specifier HTTP over TLS over TCP on port 9367, using PAM and the specified keys Xen-API XML-RPC over a Unix domain socket at /var/run/xend/xen- api.sock, unauthenticated

19 xmlInitParser(); xen_init(); curl_global_init(CURL_GLOBAL_ALL); xen_session *session = xen_session_login_with_password(call_func, NULL, username, password); xen_vm vm; if (!xen_vm_get_by_uuid(session, &vm, uuid)) { /* Error */ } xen_vm_record *vm_record; if (!xen_vm_get_record(session, &vm_record, vm)) { /* Error */ } if (!xen_vm_start(session, vm)) { /* Error */ }

20

21  Configuration file  /etc/xenaccess.conf  Data structure  xa_instance  xa_linux_taskaddr  xa_windows_peb  XenAccess API definition  xenaccess.h

22  /etc/xenaccess.conf Fedora-HVM { sysmap = "/boot/System.map-2.6.18-1.2798.fc6"; ostype = "Linux"; linux_tasks = 268; linux_mm = 276; linux_pid = 312; linux_pgd = 40; linux_addr = 132; }

23  Code sample ( process-list ) #include

24  Code sample ( process-list ) #define TASKS_OFFSET 24 * 4 #define PID_OFFSET 39 * 4 #define NAME_OFFSET 108 * 4 #define ActiveProcessLinks_OFFSET 0x88 #define UniqueProcessId_OFFSET 0x84 #define ImageFileName_OFFSET 0x174

25  Code sample ( process-list ) uint32_t dom = atoi(argv[1]); if (xa_init_vm_id_strict(dom, &xai) == XA_FAILURE){ perror("failed to init XenAccess library"); goto error_exit; }

26  Code sample ( process-list ) memory = xa_access_kernel_sym(&xai, "init_task", &offset, PROT_READ); memcpy(&next_process, memory + offset + TASKS_OFFSET, 4); list_head = next_process; munmap(memory, xai.page_size);

27  Code sample ( process-list ) while (1){ memory = xa_access_kernel_va(&xai, next_process, &offset, PROT_READ); memcpy(&next_process, memory + offset, 4); if (list_head == next_process){ break; } name = (char *) (memory + offset + NAME_OFFSET - TASKS_OFFSET); memcpy(&pid, memory + offset + PID_OFFSET - TASKS_OFFSET, 4); printf("[%5d] %s\n", pid, name); munmap(memory, xai.page_size); }

28  Code sample ( process-list ) if (memory) munmap(memory, xai.page_size); xa_destroy(&xai);

29  Running the example [root@bluemoon libxa]# xm list Name ID Mem(MiB)VCPUs State Time(s) Domain-0 0 1229 2 r----- 137356.4 Fedora-HVM 4 384 1 -b---- 2292.6 fc5 5 384 1 -b---- 15.4 [root@bluemoon libxa]#

30  Running the example [root@bluemoon examples]#./process-list 5 [ 1] init [ 2] migration/0 [ 3] ksoftirqd/0 [ 4] watchdog/0 [ 5] events/0 [ 6] khelper [ 7] kthread [ 8] xenwatch [ 9] xenbus [ 15] kblockd/0 [ 57] pdflush [ 58] pdflush [ 60] aio/0 [ 59] kswapd0 [ 578] kseriod [ 685] kpsmoused [ 710] khubd [ 978] dhclient [ 1006] syslogd [ 1009] klogd [ 1021] sshd [ 1027] mingetty

31  鳥哥的 linux 私房菜 – 利用 Xen 設計虛擬機器 鳥哥的 linux 私房菜 – 利用 Xen 設計虛擬機器  XenAPI – Xen Wiki XenAPI – Xen Wiki  Xen Architecture – Xen Wiki Xen Architecture – Xen Wiki  Xen Management API Xen Management API  Xen User & Interface manual  Can find at Xen package  XenAccess Library XenAccess Library


Download ppt "志豪 2009.09.15.  Categories of Virtual Machine  Virtual Machine manager: Xen  Xen architecture  Xen component  Xen API  XenAccess Library  reference."

Similar presentations


Ads by Google