File: goals.html

package info (click to toggle)
libvirt 5.6.0-2
  • links: PTS, VCS
  • area: main
  • in suites: bullseye
  • size: 240,844 kB
  • sloc: ansic: 584,521; xml: 176,725; sh: 9,912; python: 4,731; perl: 4,343; makefile: 3,321; ml: 465
file content (168 lines) | stat: -rw-r--r-- 7,322 bytes parent folder | download | duplicates (2)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
  <!--
        This file is autogenerated from goals.html.in
        Do not edit this file. Changes will be lost.
      -->
  <!--
        This page was generated at Tue Jul 30 02:04:26 UTC 2019.
      -->
  <head>
    <meta charset="UTF-8"/>
    <meta name="viewport" content="width=device-width, initial-scale=1"/>
    <link rel="stylesheet" type="text/css" href="main.css"/>
    <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"/>
    <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"/>
    <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"/>
    <link rel="manifest" href="/manifest.json"/>
    <meta name="theme-color" content="#ffffff"/>
    <title>libvirt: Terminology and goals</title>
    <meta name="description" content="libvirt, virtualization, virtualization API"/>
    <script type="text/javascript" src="js/main.js">
      <!--// forces non-empty element-->
    </script>
  </head>
  <body onload="pageload()">
    <div id="body">
      <div id="content">
        <h1>Terminology and goals</h1>
        <p>To avoid ambiguity about the terms used, here are the definitions
       for some of the specific concepts used in libvirt documentation:</p>
        <ul>
          <li>a <strong>node</strong> is a single physical machine</li>
          <li>an <strong>hypervisor</strong> is a layer of software allowing to
    virtualize a node in a set of virtual machines with possibly different
    configurations than the node itself</li>
          <li>a <strong>domain</strong> is an instance of an operating system
    (or subsystem in the case of container virtualization) running on a
    virtualized machine provided by the hypervisor</li>
        </ul>
        <p class="image">
          <img alt="Hypervisor and domains running on a node" src="node.gif"/>
        </p>
        <p>Now we can define the goal of libvirt: <b> to provide a common and
    stable layer sufficient to securely manage domains on a node, possibly
    remote</b>.</p>
        <p> As a result, libvirt should provide all APIs needed to do the
    management, such as: provision, create, modify, monitor, control, migrate
    and stop the domains - within the limits of the support of the hypervisor
    for those operations.
    Not all hypervisors provide the same operations; but if an operation is
    useful for domain management of even one specific hypervisor it is worth
    providing in libvirt.
    Multiple nodes
    may be accessed with libvirt simultaneously, but the APIs are limited to
    single node operations. Node resource operations which are needed
    for the management and provisioning of domains are also in the scope of
    the libvirt API, such as interface setup, firewall rules, storage management
    and general provisioning APIs. Libvirt will also provide the state
    monitoring APIs needed to implement management policies, obviously
    checking domain state but also exposing local node resource consumption.
    </p>
        <p>This implies the following sub-goals:</p>
        <ul>
          <li>All API can be carried remotely though secure APIs</li>
          <li>While most API will be generic in term of hypervisor or Host OS,
    some API may be targeted to a single virtualization environment
    as long as the semantic for the operations from a domain management
    perspective is clear</li>
          <li>the API should allow to do efficiently and cleanly all the operations
    needed to manage domains on a node, including resource provisioning and
    setup</li>
          <li>the API will not try to provide high level virtualization policies or
    multi-nodes management features like load balancing, but the API should be
    sufficient so they can be implemented on top of libvirt</li>
          <li>stability of the API is a big concern, libvirt should isolate
    applications from the frequent changes expected at the lower level of the
    virtualization framework</li>
          <li>the node being managed may be on a different physical machine than
    the management program using libvirt, to this effect libvirt supports
    remote access, but should only do so by using secure protocols.</li>
          <li>libvirt will provide APIs to enumerate, monitor and use the resources
    available on the managed node, including CPUs, memory, storage, networking,
    and NUMA partitions.</li>
        </ul>
        <p>So libvirt is intended to be a building block for higher level
    management tools and for applications focusing on virtualization of a
    single node (the only exception being domain migration between node
    capabilities which involves more than one node).</p>
      </div>
    </div>
    <div id="nav">
      <div id="home">
        <a href="index.html">Home</a>
      </div>
      <div id="jumplinks">
        <ul>
          <li>
            <a href="downloads.html">Download</a>
          </li>
          <li>
            <a href="contribute.html">Contribute</a>
          </li>
          <li>
            <a href="docs.html">Docs</a>
          </li>
        </ul>
      </div>
      <div id="search">
        <form id="simplesearch" action="https://www.google.com/search" enctype="application/x-www-form-urlencoded" method="get">
          <div>
            <input id="searchsite" name="sitesearch" type="hidden" value="libvirt.org"/>
            <input id="searchq" name="q" type="text" size="12" value=""/>
            <input name="submit" type="submit" value="Go"/>
          </div>
        </form>
        <div id="advancedsearch">
          <span>
            <input type="radio" name="what" id="whatwebsite" checked="checked" value="website"/>
            <label for="whatwebsite">Website</label>
          </span>
          <span>
            <input type="radio" name="what" id="whatwiki" value="wiki"/>
            <label for="whatwiki">Wiki</label>
          </span>
          <span>
            <input type="radio" name="what" id="whatdevs" value="devs"/>
            <label for="whatdevs">Developers list</label>
          </span>
          <span>
            <input type="radio" name="what" id="whatusers" value="users"/>
            <label for="whatusers">Users list</label>
          </span>
        </div>
      </div>
    </div>
    <div id="footer">
      <div id="contact">
        <h3>Contact</h3>
        <ul>
          <li>
            <a href="contact.html#email">email</a>
          </li>
          <li>
            <a href="contact.html#irc">irc</a>
          </li>
        </ul>
      </div>
      <div id="community">
        <h3>Community</h3>
        <ul>
          <li>
            <a href="https://twitter.com/hashtag/libvirt">twitter</a>
          </li>
          <li>
            <a href="http://stackoverflow.com/questions/tagged/libvirt">stackoverflow</a>
          </li>
          <li>
            <a href="http://serverfault.com/questions/tagged/libvirt">serverfault</a>
          </li>
        </ul>
      </div>
      <div id="conduct">
            Participants in the libvirt project agree to abide by <a href="governance.html#codeofconduct">the project code of conduct</a></div>
      <br class="clear"/>
    </div>
  </body>
</html>