[34] | 1 | =head1 NAME |
---|
| 2 | |
---|
| 3 | xm - Xen management user interface |
---|
| 4 | |
---|
| 5 | =head1 SYNOPSIS |
---|
| 6 | |
---|
| 7 | xm <subcommand> [args] |
---|
| 8 | |
---|
| 9 | =head1 DESCRIPTION |
---|
| 10 | |
---|
| 11 | The B<xm> program is the main interface for managing Xen guest |
---|
| 12 | domains. The program can be used to create, pause, and shutdown |
---|
| 13 | domains. It can also be used to list current domains, enable or pin |
---|
| 14 | VCPUs, and attach or detach virtual block devices. |
---|
| 15 | |
---|
| 16 | The basic structure of every xm command is almost always: |
---|
| 17 | |
---|
| 18 | xm <subcommand> <domain-id> [OPTIONS] |
---|
| 19 | |
---|
| 20 | Where I<subcommand> is one of the sub commands listed below, I<domain-id> |
---|
| 21 | is the numeric domain id, or the domain name (which will be internally |
---|
| 22 | translated to domain id), and I<OPTIONS> are sub command specific |
---|
| 23 | options. There are a few exceptions to this rule in the cases where |
---|
| 24 | the sub command in question acts on all domains, the entire machine, |
---|
| 25 | or directly on the xen hypervisor. Those exceptions will be clear for |
---|
| 26 | each of those sub commands. |
---|
| 27 | |
---|
| 28 | =head1 NOTES |
---|
| 29 | |
---|
| 30 | All B<xm> operations rely upon the Xen control daemon, aka B<xend>. |
---|
| 31 | For any xm commands to run xend must also be running. For this reason |
---|
| 32 | you should start xend as a service when your system first boots using |
---|
| 33 | xen. |
---|
| 34 | |
---|
| 35 | Most B<xm> commands require root privileges to run due to the |
---|
| 36 | communications channels used to talk to the hypervisor. Running as |
---|
| 37 | non root will return an error. |
---|
| 38 | |
---|
| 39 | Most B<xm> commands act asynchronously, so just because the B<xm> |
---|
| 40 | command returned, doesn't mean the action is complete. This is |
---|
| 41 | important, as many operations on domains, like create and shutdown, |
---|
| 42 | can take considerable time (30 seconds or more) to bring the machine |
---|
| 43 | into a fully compliant state. If you want to know when one of these |
---|
| 44 | actions has finished you must poll through xm list periodically. |
---|
| 45 | |
---|
| 46 | =head1 DOMAIN SUBCOMMANDS |
---|
| 47 | |
---|
| 48 | The following sub commands manipulate domains directly, as stated |
---|
| 49 | previously most commands take domain-id as the first parameter. |
---|
| 50 | |
---|
| 51 | =over 4 |
---|
| 52 | |
---|
| 53 | =item B<console> I<domain-id> |
---|
| 54 | |
---|
| 55 | Attach to domain domain-id's console. If you've set up your Domains to |
---|
| 56 | have a traditional log in console this will look much like a normal |
---|
| 57 | text log in screen. |
---|
| 58 | |
---|
| 59 | This uses the back end xenconsole service which currently only |
---|
| 60 | works for para-virtual domains. |
---|
| 61 | |
---|
| 62 | The attached console will perform much like a standard serial console, |
---|
| 63 | so running curses based interfaces over the console B<is not |
---|
| 64 | advised>. Vi tends to get very odd when using it over this interface. |
---|
| 65 | |
---|
| 66 | =item B<create> I<[-c]> I<configfile> I<[name=value]>.. |
---|
| 67 | |
---|
| 68 | The create sub command requires a configfile and can optional take a |
---|
| 69 | series of name value pairs that add to or override variables defined |
---|
| 70 | in the config file. See L<xmdomain.cfg> for full details of that file |
---|
| 71 | format, and possible options used in either the configfile or |
---|
| 72 | Name=Value combinations. |
---|
| 73 | |
---|
| 74 | Configfile can either be an absolute path to a file, or a relative |
---|
| 75 | path to a file located in /etc/xen. |
---|
| 76 | |
---|
| 77 | Create will return B<as soon> as the domain is started. This B<does |
---|
| 78 | not> mean the guest OS in the domain has actually booted, or is |
---|
| 79 | available for input. |
---|
| 80 | |
---|
| 81 | B<OPTIONS> |
---|
| 82 | |
---|
| 83 | =over 4 |
---|
| 84 | |
---|
| 85 | =item B<-c> |
---|
| 86 | |
---|
| 87 | Attache console to the domain as soon as it has started. This is |
---|
| 88 | useful for determining issues with crashing domains. |
---|
| 89 | |
---|
| 90 | =back |
---|
| 91 | |
---|
| 92 | B<EXAMPLES> |
---|
| 93 | |
---|
| 94 | =over 4 |
---|
| 95 | |
---|
| 96 | =item I<with config file> |
---|
| 97 | |
---|
| 98 | xm create Fedora4 |
---|
| 99 | |
---|
| 100 | This creates a domain with the file /etc/xen/Fedora4, and returns as |
---|
| 101 | soon as it is run. |
---|
| 102 | |
---|
| 103 | =item I<without config file> |
---|
| 104 | |
---|
| 105 | xm create /dev/null ramdisk=initrd.img \ |
---|
| 106 | kernel=/boot/vmlinuz-2.6.12.6-xenU \ |
---|
| 107 | name=ramdisk nics=0 vcpus=1 \ |
---|
| 108 | memory=64 root=/dev/ram0 |
---|
| 109 | |
---|
| 110 | This creates the domain without using a config file (more specifically |
---|
| 111 | using /dev/null as an empty config file), kernel and ramdisk as |
---|
| 112 | specified, setting the name of the domain to "ramdisk", also disabling |
---|
| 113 | virtual networking. (This example comes from the xm-test test suite.) |
---|
| 114 | |
---|
| 115 | =back |
---|
| 116 | |
---|
| 117 | =item B<destroy> I<domain-id> |
---|
| 118 | |
---|
| 119 | Immediately terminate the domain domain-id. This doesn't give the domain |
---|
| 120 | OS any chance to react, and it the equivalent of ripping the power |
---|
| 121 | cord out on a physical machine. In most cases you will want to use |
---|
| 122 | the B<shutdown> command instead. |
---|
| 123 | |
---|
| 124 | =item B<domid> I<domain-name> |
---|
| 125 | |
---|
| 126 | Converts a domain name to a domain id using xend's internal mapping. |
---|
| 127 | |
---|
| 128 | =item B<domname> I<domain-id> |
---|
| 129 | |
---|
| 130 | Converts a domain id to a domain name using xend's internal mapping. |
---|
| 131 | |
---|
| 132 | =item B<help> I<[--long]> |
---|
| 133 | |
---|
| 134 | Displays the short help message (i.e. common commands). |
---|
| 135 | |
---|
| 136 | The I<--long> option prints out the complete set of B<xm> subcommands, |
---|
| 137 | grouped by function. |
---|
| 138 | |
---|
| 139 | =item B<list> I<[--long | --label]> I<[domain-id, ...]> |
---|
| 140 | |
---|
| 141 | Prints information about one or more domains. If no domains are |
---|
| 142 | specified it prints out information about all domains. |
---|
| 143 | |
---|
| 144 | An example format for the list is as follows: |
---|
| 145 | |
---|
| 146 | Name ID Mem(MiB) VCPUs State Time(s) |
---|
| 147 | Domain-0 0 98 1 r----- 5068.6 |
---|
| 148 | Fedora3 164 128 1 r----- 7.6 |
---|
| 149 | Fedora4 165 128 1 ------ 0.6 |
---|
| 150 | Mandrake2006 166 128 1 -b---- 3.6 |
---|
| 151 | Mandrake10.2 167 128 1 ------ 2.5 |
---|
| 152 | Suse9.2 168 100 1 ------ 1.8 |
---|
| 153 | |
---|
| 154 | Name is the name of the domain. ID the domain numeric id. Mem is the |
---|
| 155 | size of the memory allocated to the domain. VCPUS is the number of |
---|
| 156 | VCPUS allocated to domain. State is the run state (see below). Time |
---|
| 157 | is the total run time of the domain as accounted for by Xen. |
---|
| 158 | |
---|
| 159 | B<STATES> |
---|
| 160 | |
---|
| 161 | =over 4 |
---|
| 162 | |
---|
| 163 | The State field lists 6 states for a Xen Domain, and which ones the |
---|
| 164 | current Domain is in. |
---|
| 165 | |
---|
| 166 | =item B<r - running> |
---|
| 167 | |
---|
| 168 | The domain is currently running on a CPU |
---|
| 169 | |
---|
| 170 | =item B<b - blocked> |
---|
| 171 | |
---|
| 172 | The domain is blocked, and not running or runnable. This can be caused |
---|
| 173 | because the domain is waiting on IO (a traditional wait state) or has |
---|
| 174 | gone to sleep because there was nothing else for it to do. |
---|
| 175 | |
---|
| 176 | =item B<p - paused> |
---|
| 177 | |
---|
| 178 | The domain has been paused, usually occurring through the administrator |
---|
| 179 | running B<xm pause>. When in a paused state the domain will still |
---|
| 180 | consume allocated resources like memory, but will not be eligible for |
---|
| 181 | scheduling by the Xen hypervisor. |
---|
| 182 | |
---|
| 183 | =item B<s - shutdown> |
---|
| 184 | |
---|
| 185 | FIXME: Why would you ever see this state? |
---|
| 186 | |
---|
| 187 | =item B<c - crashed> |
---|
| 188 | |
---|
| 189 | The domain has crashed, which is always a violent ending. Usually |
---|
| 190 | this state can only occur if the domain has been configured not to |
---|
| 191 | restart on crash. See L<xmdomain.cfg> for more info. |
---|
| 192 | |
---|
| 193 | =item B<d - dying> |
---|
| 194 | |
---|
| 195 | The domain is in process of dying, but hasn't completely shutdown or |
---|
| 196 | crashed. |
---|
| 197 | |
---|
| 198 | FIXME: Is this right? |
---|
| 199 | |
---|
| 200 | =back |
---|
| 201 | |
---|
| 202 | B<LONG OUTPUT> |
---|
| 203 | |
---|
| 204 | =over 4 |
---|
| 205 | |
---|
| 206 | If I<--long> is specified, the output for xm list is not the table |
---|
| 207 | view shown above, but instead is an S-Expression representing all |
---|
| 208 | information known about all domains asked for. This is mostly only |
---|
| 209 | useful for external programs to parse the data. |
---|
| 210 | |
---|
| 211 | B<Note:> there is no stable guarantees on the format of this data. |
---|
| 212 | Use at your own risk. |
---|
| 213 | |
---|
| 214 | =back |
---|
| 215 | |
---|
| 216 | B<LABEL OUTPUT> |
---|
| 217 | |
---|
| 218 | =over 4 |
---|
| 219 | |
---|
| 220 | If I<--label> is specified, the security labels are added to the |
---|
| 221 | output of xm list and the lines are sorted by the labels (ignoring |
---|
| 222 | case). The I<--long> option prints the labels by default and cannot be |
---|
| 223 | combined with I<--label>. See the ACCESS CONTROL SUBCOMMAND section of |
---|
| 224 | this man page for more information about labels. |
---|
| 225 | |
---|
| 226 | ==back |
---|
| 227 | |
---|
| 228 | B<NOTES> |
---|
| 229 | |
---|
| 230 | =over 4 |
---|
| 231 | |
---|
| 232 | The Time column is deceptive. Virtual IO (network and block devices) |
---|
| 233 | used by Domains requires coordination by Domain0, which means that |
---|
| 234 | Domain0 is actually charged for much of the time that a DomainU is |
---|
| 235 | doing IO. Use of this time value to determine relative utilizations |
---|
| 236 | by domains is thus very suspect, as a high IO workload may show as |
---|
| 237 | less utilized than a high CPU workload. Consider yourself warned. |
---|
| 238 | |
---|
| 239 | =back |
---|
| 240 | |
---|
| 241 | =item B<mem-max> I<domain-id> I<mem> |
---|
| 242 | |
---|
| 243 | Specify the maximum amount of memory the Domain is able to use. Mem |
---|
| 244 | is specified in megabytes. |
---|
| 245 | |
---|
| 246 | The mem-max value may not correspond to the actual memory used in the |
---|
| 247 | Domain, as it may balloon down it's memory to give more back to the OS. |
---|
| 248 | |
---|
| 249 | =item B<mem-set> I<domain-id> I<mem> |
---|
| 250 | |
---|
| 251 | Set the domain's used memory using the balloon driver. Because this |
---|
| 252 | operation requires cooperation from the domain operating system, there |
---|
| 253 | is no guarantee that it will succeed. |
---|
| 254 | |
---|
| 255 | B<Warning:> there is no good way to know in advance how small of a |
---|
| 256 | mem-set will make a domain unstable and cause it to crash. Be very |
---|
| 257 | careful when using this command on running domains. |
---|
| 258 | |
---|
| 259 | =item B<migrate> I<domain-id> I<host> I<[options]> |
---|
| 260 | |
---|
| 261 | Migrate a domain to another Host machine. B<Xend> must be running on |
---|
| 262 | other host machine, it must be running the same version of xen, it |
---|
| 263 | must have the migration TCP port open and accepting connections from |
---|
| 264 | the source host, and there must be sufficient resources for the domain |
---|
| 265 | to run (memory, disk, etc). |
---|
| 266 | |
---|
| 267 | Migration is pretty complicated, and has many security implications, |
---|
| 268 | please read the Xen Users Guide to ensure you understand the |
---|
| 269 | ramifications and limitations on migration before attempting it in |
---|
| 270 | production. |
---|
| 271 | |
---|
| 272 | B<OPTIONS> |
---|
| 273 | |
---|
| 274 | =over 4 |
---|
| 275 | |
---|
| 276 | =item B<-l, --live> |
---|
| 277 | |
---|
| 278 | Use live migration. This will migrate the domain between hosts |
---|
| 279 | without shutting down the domain. See the Xen Users Guide for more |
---|
| 280 | information. |
---|
| 281 | |
---|
| 282 | =item B<-r, --resource> I<Mbs> |
---|
| 283 | |
---|
| 284 | Set maximum Mbs allowed for migrating the domain. This ensures that |
---|
| 285 | the network link is not saturated with migration traffic while |
---|
| 286 | attempting to do other useful work. |
---|
| 287 | |
---|
| 288 | =back |
---|
| 289 | |
---|
| 290 | =item B<pause> I<domain-id> |
---|
| 291 | |
---|
| 292 | Pause a domain. When in a paused state the domain will still consume |
---|
| 293 | allocated resources such as memory, but will not be eligible for |
---|
| 294 | scheduling by the Xen hypervisor. |
---|
| 295 | |
---|
| 296 | =item B<reboot> I<[options]> I<domain-id> |
---|
| 297 | |
---|
| 298 | Reboot a domain. This acts just as if the domain had the B<reboot> |
---|
| 299 | command run from the console. The command returns as soon as it has |
---|
| 300 | executed the reboot action, which may be significantly before the |
---|
| 301 | domain actually reboots. |
---|
| 302 | |
---|
| 303 | The behavior of what happens to a domain when it reboots is set by the |
---|
| 304 | I<on_reboot> parameter of the xmdomain.cfg file when the domain was |
---|
| 305 | created. |
---|
| 306 | |
---|
| 307 | B<OPTIONS> |
---|
| 308 | |
---|
| 309 | =over 4 |
---|
| 310 | |
---|
| 311 | =item B<-a, --all> |
---|
| 312 | |
---|
| 313 | Reboot all domains |
---|
| 314 | |
---|
| 315 | =item B<-w, --wait> |
---|
| 316 | |
---|
| 317 | Wait for reboot to complete before returning. This may take a while, |
---|
| 318 | as all services in the domain will have to be shut down cleanly. |
---|
| 319 | |
---|
| 320 | =back |
---|
| 321 | |
---|
| 322 | =item B<restore> I<state-file> |
---|
| 323 | |
---|
| 324 | Build a domain from an B<xm save> state file. See I<save> for more info. |
---|
| 325 | |
---|
| 326 | =item B<save> I<domain-id> I<state-file> |
---|
| 327 | |
---|
| 328 | Saves a running domain to a state file so that it can be restored |
---|
| 329 | later. Once saved, the domain will no longer be running on the |
---|
| 330 | system, thus the memory allocated for the domain will be free for |
---|
| 331 | other domains to use. B<xm restore> restores from this state file. |
---|
| 332 | |
---|
| 333 | This is roughly equivalent to doing a hibernate on a running computer, |
---|
| 334 | with all the same limitations. Open network connections may be |
---|
| 335 | severed upon restore, as TCP timeouts may have expired. |
---|
| 336 | |
---|
| 337 | =item B<shutdown> I<[options]> I<domain-id> |
---|
| 338 | |
---|
| 339 | Gracefully shuts down a domain. This coordinates with the domain OS |
---|
| 340 | to perform graceful shutdown, so there is no guarantee that it will |
---|
| 341 | succeed, and may take a variable length of time depending on what |
---|
| 342 | services must be shutdown in the domain. The command returns |
---|
| 343 | immediately after signally the domain unless that I<-w> flag is used. |
---|
| 344 | |
---|
| 345 | The behavior of what happens to a domain when it reboots is set by the |
---|
| 346 | I<on_shutdown> parameter of the xmdomain.cfg file when the domain was |
---|
| 347 | created. |
---|
| 348 | |
---|
| 349 | B<OPTIONS> |
---|
| 350 | |
---|
| 351 | =over 4 |
---|
| 352 | |
---|
| 353 | =item B<-a> |
---|
| 354 | |
---|
| 355 | Shutdown B<all> domains. Often used when doing a complete shutdown of |
---|
| 356 | a Xen system. |
---|
| 357 | |
---|
| 358 | =item B<-w> |
---|
| 359 | |
---|
| 360 | Wait for the domain to complete shutdown before returning. |
---|
| 361 | |
---|
| 362 | =back |
---|
| 363 | |
---|
| 364 | =item B<sysrq> I<domain-id> I<letter> |
---|
| 365 | |
---|
| 366 | Send a I<Magic System Request> signal to the domain. For more |
---|
| 367 | information on available magic sys req operations, see sysrq.txt in |
---|
| 368 | your Linux Kernel sources. |
---|
| 369 | |
---|
| 370 | =item B<unpause> I<domain-id> |
---|
| 371 | |
---|
| 372 | Moves a domain out of the paused state. This will allow a previously |
---|
| 373 | paused domain to now be eligible for scheduling by the Xen hypervisor. |
---|
| 374 | |
---|
| 375 | =item B<vcpu-set> I<domain-id> I<vcpu-count> |
---|
| 376 | |
---|
| 377 | Enables the I<vcpu-count> virtual CPUs for the domain in question. |
---|
| 378 | Like mem-set, this command can only allocate up to the maximum virtual |
---|
| 379 | CPU count configured at boot for the domain. |
---|
| 380 | |
---|
| 381 | If the I<vcpu-count> is smaller than the current number of active |
---|
| 382 | VCPUs, the highest number VCPUs will be hotplug removed. This may be |
---|
| 383 | important for pinning purposes. |
---|
| 384 | |
---|
| 385 | Attempting to set the VCPUs to a number larger than the initially |
---|
| 386 | configured VCPU count is an error. Trying to set VCPUs to < 1 will be |
---|
| 387 | quietly ignored. |
---|
| 388 | |
---|
| 389 | =item B<vcpu-list> I<[domain-id]> |
---|
| 390 | |
---|
| 391 | Lists VCPU information for a specific domain. If no domain is |
---|
| 392 | specified, VCPU information for all domains will be provided. |
---|
| 393 | |
---|
| 394 | =item B<vcpu-pin> I<domain-id> I<vcpu> I<cpus> |
---|
| 395 | |
---|
| 396 | Pins the the VCPU to only run on the specific CPUs. The keyword |
---|
| 397 | I<all> can be used to apply the I<cpus> list to all VCPUs in the |
---|
| 398 | domain. |
---|
| 399 | |
---|
| 400 | Normally VCPUs can float between available CPUs whenever Xen deems a |
---|
| 401 | different run state is appropriate. Pinning can be used to restrict |
---|
| 402 | this, by ensuring certain VCPUs can only run on certain physical |
---|
| 403 | CPUs. |
---|
| 404 | |
---|
| 405 | =back |
---|
| 406 | |
---|
| 407 | =head1 XEN HOST SUBCOMMANDS |
---|
| 408 | |
---|
| 409 | =over 4 |
---|
| 410 | |
---|
| 411 | =item B<dmesg> I<[-c]> |
---|
| 412 | |
---|
| 413 | Reads the Xen message buffer, similar to dmesg on a Linux system. The |
---|
| 414 | buffer contains informational, warning, and error messages created |
---|
| 415 | during Xen's boot process. If you are having problems with Xen, this |
---|
| 416 | is one of the first places to look as part of problem determination. |
---|
| 417 | |
---|
| 418 | B<OPTIONS> |
---|
| 419 | |
---|
| 420 | =over 4 |
---|
| 421 | |
---|
| 422 | =item B<-c, --clear> |
---|
| 423 | |
---|
| 424 | Clears Xen's message buffer. |
---|
| 425 | |
---|
| 426 | =back |
---|
| 427 | |
---|
| 428 | =item B<info> |
---|
| 429 | |
---|
| 430 | Print information about the Xen host in I<name : value> format. When |
---|
| 431 | reporting a Xen bug, please provide this information as part of the |
---|
| 432 | bug report. |
---|
| 433 | |
---|
| 434 | Sample xen domain info looks as follows (lines wrapped manually to |
---|
| 435 | make the man page more readable): |
---|
| 436 | |
---|
| 437 | host : talon |
---|
| 438 | release : 2.6.12.6-xen0 |
---|
| 439 | version : #1 Mon Nov 14 14:26:26 EST 2005 |
---|
| 440 | machine : i686 |
---|
| 441 | nr_cpus : 2 |
---|
| 442 | nr_nodes : 1 |
---|
| 443 | sockets_per_node : 2 |
---|
| 444 | cores_per_socket : 1 |
---|
| 445 | threads_per_core : 1 |
---|
| 446 | cpu_mhz : 696 |
---|
| 447 | hw_caps : 0383fbff:00000000:00000000:00000040 |
---|
| 448 | total_memory : 767 |
---|
| 449 | free_memory : 37 |
---|
| 450 | xen_major : 3 |
---|
| 451 | xen_minor : 0 |
---|
| 452 | xen_extra : -devel |
---|
| 453 | xen_caps : xen-3.0-x86_32 |
---|
| 454 | xen_scheduler : credit |
---|
| 455 | xen_pagesize : 4096 |
---|
| 456 | platform_params : virt_start=0xfc000000 |
---|
| 457 | xen_changeset : Mon Nov 14 18:13:38 2005 +0100 |
---|
| 458 | 7793:090e44133d40 |
---|
| 459 | cc_compiler : gcc version 3.4.3 (Mandrakelinux |
---|
| 460 | 10.2 3.4.3-7mdk) |
---|
| 461 | cc_compile_by : sdague |
---|
| 462 | cc_compile_domain : (none) |
---|
| 463 | cc_compile_date : Mon Nov 14 14:16:48 EST 2005 |
---|
| 464 | xend_config_format : 3 |
---|
| 465 | |
---|
| 466 | B<FIELDS> |
---|
| 467 | |
---|
| 468 | =over 4 |
---|
| 469 | |
---|
| 470 | Not all fields will be explained here, but some of the less obvious |
---|
| 471 | ones deserve explanation: |
---|
| 472 | |
---|
| 473 | =item I<hw_caps> |
---|
| 474 | |
---|
| 475 | A vector showing what hardware capabilities are supported by your |
---|
| 476 | processor. This is equivalent to, though more cryptic, the flags |
---|
| 477 | field in /proc/cpuinfo on a normal Linux machine. |
---|
| 478 | |
---|
| 479 | =item I<free_memory> |
---|
| 480 | |
---|
| 481 | Available memory (in MB) not allocated to Xen, or any other Domains. |
---|
| 482 | |
---|
| 483 | =item I<xen_caps> |
---|
| 484 | |
---|
| 485 | The xen version, architecture. Architecture values can be one of: |
---|
| 486 | x86_32, x86_32p (i.e. PAE enabled), x86_64, ia64. |
---|
| 487 | |
---|
| 488 | =item I<xen_changeset> |
---|
| 489 | |
---|
| 490 | The xen mercurial changeset id. Very useful for determining exactly |
---|
| 491 | what version of code your Xen system was built from. |
---|
| 492 | |
---|
| 493 | =back |
---|
| 494 | |
---|
| 495 | =item B<log> |
---|
| 496 | |
---|
| 497 | Print out the B<xend> log. This log file can be found in |
---|
| 498 | /var/log/xend.log. |
---|
| 499 | |
---|
| 500 | =item B<top> |
---|
| 501 | |
---|
| 502 | Executes the xentop command, which provides real time monitoring of |
---|
| 503 | domains. Xentop is a curses interface, and reasonably self |
---|
| 504 | explanatory. |
---|
| 505 | |
---|
| 506 | =back |
---|
| 507 | |
---|
| 508 | =head1 SCHEDULER SUBCOMMANDS |
---|
| 509 | |
---|
| 510 | Xen ships with a number of domain schedulers, which can be set at boot |
---|
| 511 | time with the I<sched=> parameter on the Xen command line. By |
---|
| 512 | default I<sedf> is used for scheduling. |
---|
| 513 | |
---|
| 514 | FIXME: we really need a scheduler expert to write up this section. |
---|
| 515 | |
---|
| 516 | =over 4 |
---|
| 517 | |
---|
| 518 | =item B<sched-sedf> I<period> I<slice> I<latency-hint> I<extratime> I<weight> |
---|
| 519 | |
---|
| 520 | Set Simple EDF (Earliest Deadline First) scheduler parameters. This |
---|
| 521 | scheduler provides weighted CPU sharing in an intuitive way and uses |
---|
| 522 | realtime-algorithms to ensure time guarantees. For more information |
---|
| 523 | see docs/misc/sedf_scheduler_mini-HOWTO.txt in the Xen distribution. |
---|
| 524 | |
---|
| 525 | B<PARAMETERS> |
---|
| 526 | |
---|
| 527 | =over 4 |
---|
| 528 | |
---|
| 529 | =item I<period> |
---|
| 530 | |
---|
| 531 | The normal EDF scheduling usage in nanoseconds |
---|
| 532 | |
---|
| 533 | =item I<slice> |
---|
| 534 | |
---|
| 535 | The normal EDF scheduling usage in nanoseconds |
---|
| 536 | |
---|
| 537 | FIXME: these are lame, should explain more. |
---|
| 538 | |
---|
| 539 | =item I<latency-hint> |
---|
| 540 | |
---|
| 541 | Scaled period if domain is doing heavy I/O. |
---|
| 542 | |
---|
| 543 | =item I<extratime> |
---|
| 544 | |
---|
| 545 | Flag for allowing domain to run in extra time. |
---|
| 546 | |
---|
| 547 | =item I<weight> |
---|
| 548 | |
---|
| 549 | Another way of setting cpu slice. |
---|
| 550 | |
---|
| 551 | =back |
---|
| 552 | |
---|
| 553 | B<EXAMPLES> |
---|
| 554 | |
---|
| 555 | I<normal EDF (20ms/5ms):> |
---|
| 556 | |
---|
| 557 | xm sched-sedf <dom-id> 20000000 5000000 0 0 0 |
---|
| 558 | |
---|
| 559 | I<best-effort domains (i.e. non-realtime):> |
---|
| 560 | |
---|
| 561 | xm sched-sedf <dom-id> 20000000 0 0 1 0 |
---|
| 562 | |
---|
| 563 | I<normal EDF (20ms/5ms) + share of extra-time:> |
---|
| 564 | |
---|
| 565 | xm sched-sedf <dom-id> 20000000 5000000 0 1 0 |
---|
| 566 | |
---|
| 567 | I<4 domains with weights 2:3:4:2> |
---|
| 568 | |
---|
| 569 | xm sched-sedf <d1> 0 0 0 0 2 |
---|
| 570 | xm sched-sedf <d2> 0 0 0 0 3 |
---|
| 571 | xm sched-sedf <d3> 0 0 0 0 4 |
---|
| 572 | xm sched-sedf <d4> 0 0 0 0 2 |
---|
| 573 | |
---|
| 574 | I<1 fully-specified (10ms/3ms) domain, 3 other domains share available |
---|
| 575 | rest in 2:7:3 ratio:> |
---|
| 576 | |
---|
| 577 | xm sched-sedf <d1> 10000000 3000000 0 0 0 |
---|
| 578 | xm sched-sedf <d2> 0 0 0 0 2 |
---|
| 579 | xm sched-sedf <d3> 0 0 0 0 7 |
---|
| 580 | xm sched-sedf <d4> 0 0 0 0 3 |
---|
| 581 | |
---|
| 582 | =back |
---|
| 583 | |
---|
| 584 | =head1 VIRTUAL DEVICE COMMANDS |
---|
| 585 | |
---|
| 586 | Most virtual devices can be added and removed while guests are |
---|
| 587 | running. The effect to the guest OS is much the same as any hotplug |
---|
| 588 | event. |
---|
| 589 | |
---|
| 590 | =head2 BLOCK DEVICES |
---|
| 591 | |
---|
| 592 | =over 4 |
---|
| 593 | |
---|
| 594 | =item B<block-attach> I<domain-id> I<be-dev> I<fe-dev> I<mode> I<[bedomain-id]> |
---|
| 595 | |
---|
| 596 | Create a new virtual block device. This will trigger a hotplug event |
---|
| 597 | for the guest. |
---|
| 598 | |
---|
| 599 | B<OPTIONS> |
---|
| 600 | |
---|
| 601 | =over 4 |
---|
| 602 | |
---|
| 603 | =item I<domain-id> |
---|
| 604 | |
---|
| 605 | The domain id of the guest domain that the device will be attached to. |
---|
| 606 | |
---|
| 607 | =item I<be-dev> |
---|
| 608 | |
---|
| 609 | The device in the backend domain (usually domain 0) to be exported. |
---|
| 610 | This can be specified as a physical partition (phy:sda7) or as a file |
---|
| 611 | mounted as loopback (file://path/to/loop.iso). |
---|
| 612 | |
---|
| 613 | =item I<fe-dev> |
---|
| 614 | |
---|
| 615 | How the device should be presented to the guest domain. It can be |
---|
| 616 | specified as either a symbolic name, such as /dev/hdc, for common |
---|
| 617 | devices, or by device id, such as 0x1400 (/dev/hdc device id in hex). |
---|
| 618 | |
---|
| 619 | =item I<mode> |
---|
| 620 | |
---|
| 621 | The access mode for the device from the guest domain. Supported modes |
---|
| 622 | are I<w> (read/write) or I<r> (read-only). |
---|
| 623 | |
---|
| 624 | =item I<bedomain-id> |
---|
| 625 | |
---|
| 626 | The back end domain hosting the device. This defaults to domain 0. |
---|
| 627 | |
---|
| 628 | =back |
---|
| 629 | |
---|
| 630 | B<EXAMPLES> |
---|
| 631 | |
---|
| 632 | =over 4 |
---|
| 633 | |
---|
| 634 | =item I<Mount an ISO as a Disk> |
---|
| 635 | |
---|
| 636 | xm block-attach guestdomain file://path/to/dsl-2.0RC2.iso /dev/hdc ro |
---|
| 637 | |
---|
| 638 | This will mount the dsl iso as /dev/hdc in the guestdomain as a read |
---|
| 639 | only device. This will probably not be detected as a cdrom by the |
---|
| 640 | guest, but mounting /dev/hdc manually will work. |
---|
| 641 | |
---|
| 642 | =back |
---|
| 643 | |
---|
| 644 | =item B<block-detach> I<domain-id> I<devid> |
---|
| 645 | |
---|
| 646 | Destroy a domain's virtual block device. devid B<must> be the device |
---|
| 647 | id given to the device by domain 0. You will need to run I<xm |
---|
| 648 | block-list> to determine that number. |
---|
| 649 | |
---|
| 650 | FIXME: this is currently B<broken>. Even though a block device is |
---|
| 651 | removed from domU, it appears to still be allocated in the domain 0. |
---|
| 652 | |
---|
| 653 | =item B<block-list> I<[-l|--long]> I<domain-id> |
---|
| 654 | |
---|
| 655 | List virtual block devices for a domain. The returned output is |
---|
| 656 | formatted as a list or as an S-Expression if the '--long' option was given. |
---|
| 657 | |
---|
| 658 | =head2 NETWORK DEVICES |
---|
| 659 | |
---|
| 660 | =item B<network-attach> I<domain-id> I<[script=scriptname]> I<[ip=ipaddr]> |
---|
| 661 | I<[mac=macaddr]> I<[bridge=bridge-name]> I<[backend=bedomain-id]> |
---|
| 662 | |
---|
| 663 | Creates a new network device in the domain specified by domain-id. It |
---|
| 664 | takes the following optional options: |
---|
| 665 | |
---|
| 666 | B<OPTIONS> |
---|
| 667 | |
---|
| 668 | =over 4 |
---|
| 669 | |
---|
| 670 | =item I<script=scriptname> |
---|
| 671 | |
---|
| 672 | Use the specified script name to bring up the network. Defaults to |
---|
| 673 | the default setting in xend-config.sxp for I<vif-script>. |
---|
| 674 | |
---|
| 675 | =item I<ip=ipaddr> |
---|
| 676 | |
---|
| 677 | Passes the specified IP Address to the adapter on creation. |
---|
| 678 | |
---|
| 679 | FIXME: this currently appears to be B<broken>. I'm not sure under what |
---|
| 680 | circumstances this should actually work. |
---|
| 681 | |
---|
| 682 | =item I<mac=macaddr> |
---|
| 683 | |
---|
| 684 | The MAC address that the domain will see on its Ethernet device. If |
---|
| 685 | the device is not specified it will be randomly generated with the |
---|
| 686 | 00:16:3e vendor id prefix. |
---|
| 687 | |
---|
| 688 | =item I<bridge=bridge-name> |
---|
| 689 | |
---|
| 690 | The name of the bridge to attach the vif to, in case you have more |
---|
| 691 | than one. This defaults to |
---|
| 692 | |
---|
| 693 | =item I<backend=bedomain-id> |
---|
| 694 | |
---|
| 695 | The backend domain id. By default this is domain 0. |
---|
| 696 | |
---|
| 697 | =back |
---|
| 698 | |
---|
| 699 | =item B<network-detach> I<domain-id> I<devid> |
---|
| 700 | |
---|
| 701 | Removes the network device from the domain specified by I<domain-id>. |
---|
| 702 | I<devid> is the virtual interface device number within the domain |
---|
| 703 | (i.e. the 3 in vif22.3). |
---|
| 704 | |
---|
| 705 | FIXME: this is currently B<broken>. Network devices aren't completely |
---|
| 706 | removed from domain 0. |
---|
| 707 | |
---|
| 708 | =item B<network-list> I<[-l|--long]> I<domain-id> |
---|
| 709 | |
---|
| 710 | List virtual network interfaces for a domain. The returned output is |
---|
| 711 | formatted as a list or as an S-Expression if the '--long' option was given. |
---|
| 712 | |
---|
| 713 | =head2 VIRTUAL TPM DEVICES |
---|
| 714 | |
---|
| 715 | =item B<vtpm-list> I<[-l|--long]> I<domain-id> |
---|
| 716 | |
---|
| 717 | Show the virtual TPM device for a domain. The returned output is |
---|
| 718 | formatted as a list or as an S-Expression if the '--long' option was given. |
---|
| 719 | |
---|
| 720 | =back |
---|
| 721 | |
---|
| 722 | =head1 VNET COMMANDS |
---|
| 723 | |
---|
| 724 | The Virtual Network interfaces for Xen. |
---|
| 725 | |
---|
| 726 | FIXME: This needs a lot more explanation, or it needs to be ripped |
---|
| 727 | out entirely. |
---|
| 728 | |
---|
| 729 | =over 4 |
---|
| 730 | |
---|
| 731 | =item B<vnet-list> I<[-l|--long]> |
---|
| 732 | |
---|
| 733 | List vnets. |
---|
| 734 | |
---|
| 735 | =item B<vnet-create> I<config> |
---|
| 736 | |
---|
| 737 | Create a vnet from a config file. |
---|
| 738 | |
---|
| 739 | =item B<vnet-delete> I<vnetid> |
---|
| 740 | |
---|
| 741 | Delete a vnet. |
---|
| 742 | |
---|
| 743 | =back |
---|
| 744 | |
---|
| 745 | =head1 ACCESS CONTROL SUBCOMMANDS |
---|
| 746 | |
---|
| 747 | Access Control in Xen consists of two components: (i) The Access |
---|
| 748 | Control Policy (ACP) defines security labels and access rules based on |
---|
| 749 | these labels. (ii) The Access Control Module (ACM) makes access control |
---|
| 750 | decisions by interpreting the policy when domains require to |
---|
| 751 | communicate or to access resources. The Xen access control has |
---|
| 752 | sufficient mechanisms in place to enforce the access decisions even |
---|
| 753 | against maliciously acting user domains (mandatory access control). |
---|
| 754 | |
---|
| 755 | Access rights for domains in Xen are determined by the domain security |
---|
| 756 | label only and not based on the domain Name or ID. The ACP specifies |
---|
| 757 | security labels that can then be assigned to domains and |
---|
| 758 | resources. Every domain must be assigned exactly one security label, |
---|
| 759 | otherwise access control decisions could become indeterministic. ACPs |
---|
| 760 | are distinguished by their name, which is a parameter to most of the |
---|
| 761 | subcommands described below. Currently, the ACP specifies two ways to |
---|
| 762 | interpret labels: |
---|
| 763 | |
---|
| 764 | (1) Simple Type Enforcement: Labels are interpreted to decide access |
---|
| 765 | of domains to comunication means and virtual or physical |
---|
| 766 | resources. Communication between domains as well as access to |
---|
| 767 | resources are forbidden by default and can only take place if they are |
---|
| 768 | explicitly allowed by the security policy. The proper assignment of |
---|
| 769 | labels to domains controls the sharing of information (directly |
---|
| 770 | through communication or indirectly through shared resources) between |
---|
| 771 | domains. This interpretation allows to control the overt (intended) |
---|
| 772 | communication channels in Xen. |
---|
| 773 | |
---|
| 774 | (2) Chinese Wall: Labels are interpreted to decide which domains can |
---|
| 775 | co-exist (be run simultaneously) on the same system. This |
---|
| 776 | interpretation allows to prevent direct covert (unintended) channels |
---|
| 777 | and mitigates risks caused by imperfect core domain isolation |
---|
| 778 | (trade-off between security and other system requirements). For a |
---|
| 779 | short introduction to covert channels, please refer to |
---|
| 780 | http://www.multicians.org/timing-chn.html. |
---|
| 781 | |
---|
| 782 | The following subcommands help you to manage security policies in Xen |
---|
| 783 | and to assign security labels to domains. To enable access control |
---|
| 784 | security in Xen, you must compile Xen with ACM support enabled as |
---|
| 785 | described under "Configuring Security" below. There, you will find |
---|
| 786 | also examples of each subcommand described here. |
---|
| 787 | |
---|
| 788 | =item B<makepolicy> I<policy> |
---|
| 789 | |
---|
| 790 | Compiles the XML source representation of the security I<policy>. It |
---|
| 791 | creates a mapping (.map) as well as a binary (.bin) version of the |
---|
| 792 | policy. The compiled policy can be loaded into Xen with the |
---|
| 793 | B<loadpolicy> subcommand or can be configured to be loaded at boot |
---|
| 794 | time with the B<cfgbootpolicy> subcommand. |
---|
| 795 | |
---|
| 796 | =over 4 |
---|
| 797 | |
---|
| 798 | I<policy> is a dot-separated list of names. The last part is the file |
---|
| 799 | name pre-fix for the policy xml file. The preceding name parts are |
---|
| 800 | translated into the local path pointing to the policy xml file |
---|
| 801 | relative to the global policy root directory |
---|
| 802 | (/etc/xen/acm-security/policies). For example, |
---|
| 803 | example.chwall_ste.client_v1 denotes the policy file |
---|
| 804 | example/chwall_ste/client_v1-security_policy.xml relative to the |
---|
| 805 | global policy root directory. |
---|
| 806 | |
---|
| 807 | =back |
---|
| 808 | |
---|
| 809 | =item B<loadpolicy> I<policy> |
---|
| 810 | |
---|
| 811 | Loads the binary representation of the I<policy> into Xen. The binary |
---|
| 812 | representation can be created with the B<makepolicy> subcommand. |
---|
| 813 | |
---|
| 814 | =item B<cfgbootpolicy> I<policy> [I<boot title>] |
---|
| 815 | |
---|
| 816 | Configures I<policy> as the boot policy for Xen. It copies the binary |
---|
| 817 | policy representation into the /boot directory and adds a module line |
---|
| 818 | specifying the binary policy to the /boot/grub/menu.lst file. If your |
---|
| 819 | boot configuration includes multiple Xen boot titles, then use the |
---|
| 820 | I<boot title> parameter to specify a unique part of the proper title. |
---|
| 821 | |
---|
| 822 | =item B<dumppolicy> |
---|
| 823 | |
---|
| 824 | Prints the current security policy state information of Xen. |
---|
| 825 | |
---|
| 826 | =item B<labels> [I<policy>] [I<type>=dom|res|any] |
---|
| 827 | |
---|
| 828 | Lists all labels of a I<type> (domain, resource, or both) that are |
---|
| 829 | defined in the I<policy>. Unless specified, the default I<policy> is |
---|
| 830 | the currently enforced access control policy. The default for I<type> |
---|
| 831 | is 'dom'. The labels are arranged in alphabetical order. |
---|
| 832 | |
---|
| 833 | =item B<addlabel> I<label> dom I<configfile> [I<policy>] |
---|
| 834 | |
---|
| 835 | =item B<addlabel> I<label> res I<resource> [I<policy>] |
---|
| 836 | |
---|
| 837 | Adds the security label with name I<label> to a domain |
---|
| 838 | I<configfile> (dom) or to the global resource label file for the |
---|
| 839 | given I<resource> (res). Unless specified, the default I<policy> is the |
---|
| 840 | currently enforced access control policy. This subcommand also |
---|
| 841 | verifies that the I<policy> definition supports the specified I<label> |
---|
| 842 | name. |
---|
| 843 | |
---|
| 844 | =item B<rmlabel> dom I<configfile> |
---|
| 845 | |
---|
| 846 | =item B<rmlabel> res I<resource> |
---|
| 847 | |
---|
| 848 | Works the same as the I<addlabel> command (above), except that this |
---|
| 849 | command will remove the label from the domain I<configfile> (dom) or |
---|
| 850 | the global resource label file (res). |
---|
| 851 | |
---|
| 852 | =item B<getlabel> dom I<configfile> |
---|
| 853 | |
---|
| 854 | =item B<getlabel> res I<resource> |
---|
| 855 | |
---|
| 856 | Shows the label for the given I<configfile> or I<resource> |
---|
| 857 | |
---|
| 858 | =item B<resources> |
---|
| 859 | |
---|
| 860 | Lists all resources in the global resource label file. Each resource |
---|
| 861 | is listed with its associated label and policy name. |
---|
| 862 | |
---|
| 863 | =item B<dry-run> I<configfile> |
---|
| 864 | |
---|
| 865 | Determines if the specified I<configfile> describes a domain with a valid |
---|
| 866 | security configuration for type enforcement. The test shows the policy |
---|
| 867 | decision made for each resource label against the domain label as well as |
---|
| 868 | the overall decision. |
---|
| 869 | |
---|
| 870 | B<CONFIGURING SECURITY> |
---|
| 871 | |
---|
| 872 | =over 4 |
---|
| 873 | |
---|
| 874 | In xen_source_dir/Config.mk set the following parameters: |
---|
| 875 | |
---|
| 876 | ACM_SECURITY ?= y |
---|
| 877 | ACM_DEFAULT_SECURITY_POLICY ?= \ |
---|
| 878 | ACM_CHINESE_WALL_AND_SIMPLE_TYPE_ENFORCEMENT_POLICY |
---|
| 879 | |
---|
| 880 | Then recompile and install xen and the security tools and then reboot: |
---|
| 881 | |
---|
| 882 | cd xen_source_dir/xen; make clean; make; cp xen.gz /boot; |
---|
| 883 | cd xen_source_dir/tools/security; make install; |
---|
| 884 | reboot into xen |
---|
| 885 | |
---|
| 886 | =back |
---|
| 887 | |
---|
| 888 | B<COMPILING A SECURITY POLICY> |
---|
| 889 | |
---|
| 890 | =over 4 |
---|
| 891 | |
---|
| 892 | This step creates client_v1.map and client_v1.bin files in |
---|
| 893 | /etc/xen/acm-security/policies/example/chwall_ste. |
---|
| 894 | |
---|
| 895 | xm makepolicy example.chwall_ste.client_v1 |
---|
| 896 | |
---|
| 897 | =back |
---|
| 898 | |
---|
| 899 | B<LOADING A SECURITY POLICY> |
---|
| 900 | |
---|
| 901 | =over 4 |
---|
| 902 | |
---|
| 903 | This step activates client_v1.bin as new security policy in Xen. You |
---|
| 904 | can use the dumppolicy subcommand before and afterwards to see the |
---|
| 905 | change in the Xen policy state. |
---|
| 906 | |
---|
| 907 | xm loadpolicy example.chwall_ste.client_v1 |
---|
| 908 | |
---|
| 909 | =back |
---|
| 910 | |
---|
| 911 | B<CONFIGURING A BOOT SECURITY POLICY> |
---|
| 912 | |
---|
| 913 | =over 4 |
---|
| 914 | |
---|
| 915 | This configures the boot loader to load client_v1.bin at boot |
---|
| 916 | time. During system start, the ACM configures Xen with this policy and |
---|
| 917 | Xen enforces this policy from then on. |
---|
| 918 | |
---|
| 919 | xm cfgbootpolicy example.chwall_ste.client_v1 |
---|
| 920 | |
---|
| 921 | =back |
---|
| 922 | |
---|
| 923 | B<LISTING SECURITY LABELS> |
---|
| 924 | |
---|
| 925 | =over 4 |
---|
| 926 | |
---|
| 927 | This subcommand shows all labels that are defined and which can be |
---|
| 928 | attached to domains. |
---|
| 929 | |
---|
| 930 | xm labels example.chwall_ste.client_v1 type=dom |
---|
| 931 | |
---|
| 932 | will print for our example policy: |
---|
| 933 | |
---|
| 934 | dom_BoincClient |
---|
| 935 | dom_Fun |
---|
| 936 | dom_HomeBanking |
---|
| 937 | dom_NetworkDomain |
---|
| 938 | dom_StorageDomain |
---|
| 939 | dom_SystemManagement |
---|
| 940 | |
---|
| 941 | =back |
---|
| 942 | |
---|
| 943 | B<ATTACHING A SECURITY LABEL TO A DOMAIN> |
---|
| 944 | |
---|
| 945 | =over 4 |
---|
| 946 | |
---|
| 947 | The I<addlabel> subcommand can attach a security label to a domain |
---|
| 948 | configuration file, here a HomeBanking label. The example policy |
---|
| 949 | ensures that this domain does not share information with other |
---|
| 950 | non-hombanking user domains (i.e., domains labeled as dom_Fun or |
---|
| 951 | dom_Boinc) and that it will not run simultaneously with domains |
---|
| 952 | labeled as dom_Fun. |
---|
| 953 | |
---|
| 954 | We assume that the specified myconfig.xm configuration file actually |
---|
| 955 | instantiates a domain that runs workloads related to home-banking, |
---|
| 956 | probably just a browser environment for online-banking. |
---|
| 957 | |
---|
| 958 | xm addlabel dom_HomeBanking dom myconfig.xm |
---|
| 959 | |
---|
| 960 | The very simple configuration file might now look as printed |
---|
| 961 | below. The I<addlabel> subcommand added the B<access_control> entry at |
---|
| 962 | the end of the file, consisting of a label name and the policy that |
---|
| 963 | specifies this label name: |
---|
| 964 | |
---|
| 965 | kernel = "/boot/vmlinuz-2.6.16-xen" |
---|
| 966 | ramdisk="/boot/U1_home_banking_ramdisk.img" |
---|
| 967 | memory = 164 |
---|
| 968 | name = "homebanking" |
---|
| 969 | vif = [ '' ] |
---|
| 970 | dhcp = "dhcp" |
---|
| 971 | access_control = ['policy=example.chwall_ste.client_v1, |
---|
| 972 | label=dom_HomeBanking'] |
---|
| 973 | |
---|
| 974 | Security labels must be assigned to domain configurations because |
---|
| 975 | these labels are essential for making access control decisions as |
---|
| 976 | early as during the configuration phase of a newly instantiated |
---|
| 977 | domain. Consequently, a security-enabled Xen hypervisor will only |
---|
| 978 | start domains that have a security label configured and whose security |
---|
| 979 | label is consistent with the currently enforced policy. Otherwise, |
---|
| 980 | starting the domain will fail with the error condition "operation not |
---|
| 981 | permitted". |
---|
| 982 | |
---|
| 983 | =back |
---|
| 984 | |
---|
| 985 | B<ATTACHING A SECURITY LABEL TO A RESOURCE> |
---|
| 986 | |
---|
| 987 | =over 4 |
---|
| 988 | |
---|
| 989 | The I<addlabel> subcommand can also be used to attach a security |
---|
| 990 | label to a resource. Following the home banking example from above, |
---|
| 991 | we can label a disk resource (e.g., a physical partition or a file) |
---|
| 992 | to make it accessible to the home banking domain. The example policy |
---|
| 993 | provides a resource label, res_LogicalDiskPartition1(hda1), that is |
---|
| 994 | compatible with the HomeBanking domain label. |
---|
| 995 | |
---|
| 996 | xm addlabel "res_LogicalDiskPartition1(hda1)" res phy:hda6 |
---|
| 997 | |
---|
| 998 | After labeling this disk resource, it can be attached to the domain |
---|
| 999 | by adding a line to the domain configuration file. The line below |
---|
| 1000 | attaches this disk to the domain at boot time. |
---|
| 1001 | |
---|
| 1002 | disk = [ 'phy:hda6,sda2,w' ] |
---|
| 1003 | |
---|
| 1004 | Alternatively, the resource can be attached after booting the domain |
---|
| 1005 | by using the I<block-attach> subcommand. |
---|
| 1006 | |
---|
| 1007 | xm block-attach homebanking phy:hda6 sda2 w |
---|
| 1008 | |
---|
| 1009 | Note that labeled resources cannot be used when security is turned |
---|
| 1010 | off. Any attempt to use labeled resources with security turned off |
---|
| 1011 | will result in a failure with a corresponding error message. The |
---|
| 1012 | solution is to enable security or, if security is no longer desired, |
---|
| 1013 | to remove the resource label using the I<rmlabel> subcommand. |
---|
| 1014 | |
---|
| 1015 | =back |
---|
| 1016 | |
---|
| 1017 | B<STARTING AND LISTING LABELED DOMAINS> |
---|
| 1018 | |
---|
| 1019 | =over 4 |
---|
| 1020 | |
---|
| 1021 | xm create myconfig.xm |
---|
| 1022 | |
---|
| 1023 | xm list --label |
---|
| 1024 | |
---|
| 1025 | Name ID ... Time(s) Label |
---|
| 1026 | homebanking 23 ... 4.4 dom_HomeBanking |
---|
| 1027 | Domain-0 0 ... 2658.8 dom_SystemManagement |
---|
| 1028 | |
---|
| 1029 | =back |
---|
| 1030 | |
---|
| 1031 | B<LISTING LABELED RESOURCES> |
---|
| 1032 | |
---|
| 1033 | =over 4 |
---|
| 1034 | |
---|
| 1035 | xm resources |
---|
| 1036 | |
---|
| 1037 | phy:hda6 |
---|
| 1038 | policy: example.chwall_ste.client_v1 |
---|
| 1039 | label: res_LogicalDiskPartition1(hda1) |
---|
| 1040 | file:/xen/disk_image/disk.img |
---|
| 1041 | policy: example.chwall_ste.client_v1 |
---|
| 1042 | label: res_LogicalDiskPartition2(hda2) |
---|
| 1043 | |
---|
| 1044 | =back |
---|
| 1045 | |
---|
| 1046 | B<POLICY REPRESENTATIONS> |
---|
| 1047 | |
---|
| 1048 | =over 4 |
---|
| 1049 | |
---|
| 1050 | We distinguish three representations of the Xen access control policy: |
---|
| 1051 | the I<source XML> version, its I<binary> counterpart, and a I<mapping> |
---|
| 1052 | representation that enables the tools to deterministically translate |
---|
| 1053 | back and forth between label names of the XML policy and label |
---|
| 1054 | identifiers of the binary policy. All three versions must be kept |
---|
| 1055 | consistent to achieve predictable security guarantees. |
---|
| 1056 | |
---|
| 1057 | The XML version is the version that users are supposed to create or |
---|
| 1058 | change, either by manually editing the XML file or by using the Xen |
---|
| 1059 | policy generation tool (B<xensec_gen>). After changing the XML file, |
---|
| 1060 | run the B<makepolicy> subcommand to ensure that these changes are |
---|
| 1061 | reflected in the other versions. Use, for example, the subcommand |
---|
| 1062 | B<cfgbootpolicy> to activate the changes during the next system |
---|
| 1063 | reboot. |
---|
| 1064 | |
---|
| 1065 | The binary version of the policy is derived from the XML policy by |
---|
| 1066 | tokenizing the specified labels and is used inside Xen only. It is |
---|
| 1067 | created with the B<makepolicy> subcommand. Essentially, the binary |
---|
| 1068 | version is much more compact than the XML version and is easier to |
---|
| 1069 | evaluate during access control decisions. |
---|
| 1070 | |
---|
| 1071 | The mapping version of the policy is created during the XML-to-binary |
---|
| 1072 | policy translation (B<makepolicy>) and is used by the Xen management |
---|
| 1073 | tools to translate between label names used as input to the tools and |
---|
| 1074 | their binary identifiers (ssidrefs) used inside Xen. |
---|
| 1075 | |
---|
| 1076 | =back |
---|
| 1077 | |
---|
| 1078 | =head1 EXAMPLES |
---|
| 1079 | |
---|
| 1080 | =head1 SEE ALSO |
---|
| 1081 | |
---|
| 1082 | B<xmdomain.cfg>(5), B<xentop>(1) |
---|
| 1083 | |
---|
| 1084 | =head1 AUTHOR |
---|
| 1085 | |
---|
| 1086 | Sean Dague <sean at dague dot net> |
---|
| 1087 | Daniel Stekloff <dsteklof at us dot ibm dot com> |
---|
| 1088 | Reiner Sailer <sailer at us dot ibm dot com> |
---|
| 1089 | |
---|
| 1090 | =head1 BUGS |
---|