<!-- Fill in your name for FIRSTNAME and SURNAME. -->
<!-- Please adjust the date whenever revising the manpage. -->
- <!ENTITY dhdate "<date>May 16, 2007</date>">
+ <!ENTITY dhdate "<date>February 11, 2009</date>">
<!-- SECTION should be 1-8, maybe w/ subsection other parameters are
allowed: see man(7), man(1). -->
<!ENTITY dhsection "<manvolnum>8</manvolnum>">
<copyright>
<year>2006</year>
<year>2007</year>
+ <year>2008</year>
+ <year>2009</year>
<holder>Google Inc.</holder>
</copyright>
&dhdate;
&dhucpackage;
&dhsection;
- <refmiscinfo>ganeti 1.2</refmiscinfo>
+ <refmiscinfo>ganeti 2.0</refmiscinfo>
</refmeta>
<refnamediv>
<refname>&dhpackage;</refname>
<title>ADD</title>
<cmdsynopsis>
<command>add</command>
- <arg choice="req">-n <replaceable>node</replaceable></arg>
- <arg>-s <replaceable>disksize</replaceable></arg>
- <arg>-o <replaceable>os-type</replaceable></arg>
- <arg>-m <replaceable>memsize</replaceable></arg>
- <arg>-b <replaceable>bridge</replaceable></arg>
<sbr>
- <arg choice="req">-t<group>
+ <arg choice="req">-t<group choice="req">
<arg>diskless</arg>
+ <arg>file</arg>
<arg>plain</arg>
- <arg>local_raid1</arg>
- <arg>remote_raid1</arg>
- </group>
- </arg>
+ <arg>drbd</arg>
+ </group></arg>
+ <sbr>
+
+ <group choice="req">
+ <arg rep="repeat">--disk=<replaceable>N</replaceable>:size=<replaceable>VAL</replaceable><arg>,mode=<replaceable>ro|rw</replaceable></arg></arg>
+ <arg>-s <replaceable>SIZE</replaceable></arg>
+ </group>
+ <sbr>
+ <group>
+ <arg rep="repeat">--net=<replaceable>N</replaceable><arg rep="repeat">:options</arg></arg>
+ <arg>--no-nics</arg>
+ </group>
+ <sbr>
+ <arg>-B <replaceable>BEPARAMS</replaceable></arg>
+ <sbr>
+
+ <arg>-H <replaceable>HYPERVISOR</replaceable><arg>:<arg choice="plain" rep="repeat">option=<replaceable>value</replaceable></arg></arg></arg>
+ <sbr>
+
+ <arg>--file-storage-dir <replaceable>dir_path</replaceable></arg>
+ <arg>--file-driver<group choice="req">
+ <arg>loop</arg>
+ <arg>blktap</arg>
+ </group></arg>
+ <sbr>
+
+ <group choice="req">
+ <arg>-n <replaceable>node<optional>:secondary-node</optional></replaceable></arg>
+ <arg>--iallocator <replaceable>name</replaceable></arg>
+ </group>
+ <sbr>
+
+ <arg choice="req">-o <replaceable>os-type</replaceable></arg>
+ <sbr>
+ <arg>--submit</arg>
+ <sbr>
+
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
+
<para>
- Creates a new instance on the specified
- host. <replaceable>instance</replaceable> must be in DNS and
- resolve to a IP in the same network as the nodes in the
- cluster.
+ Creates a new instance on the specified host. The
+ <replaceable>instance</replaceable> argument must be in DNS,
+ but depending on the bridge setup, need not be in the same
+ network as the nodes in the cluster.
+ </para>
+
+ <para>
+ The <option>disk</option> option specifies the parameters
+ for the disks of the instance. The numbering of disks starts
+ at zero, and at least one disk needs to be passed. For each
+ disk, at least the size needs to be given, and optionally
+ the access mode (read-only or the default of read-write) can
+ also be specified. The size is interpreted (when no unit is
+ given) in mebibytes. You can also use one of the suffixes
+ <literal>m</literal>, <literal>g</literal> or
+ <literal>t</literal> to specificy the exact the units used;
+ these suffixes map to mebibytes, gibibytes and tebibytes.
+ </para>
+
+ <para>
+ Alternatively, a single-disk instance can be created via the
+ <option>-s</option> option which takes a single argument,
+ the size of the disk. This is similar to the Ganeti 1.2
+ version (but will only create one disk).
+ </para>
+
+ <para>
+ The minimum disk specification is therefore
+ <userinput>--disk 0:size=20G</userinput> (or <userinput>-s
+ 20G</userinput> when using the <option>-s</option> option),
+ and a three-disk instance can be specified as
+ <userinput>--disk 0:size=20G --disk 1:size=4G --disk
+ 2:size=100G</userinput>.
+ </para>
+
+ <para>
+ The NICs of the instances can be specified via the
+ <option>--nic</option> option. By default, one NIC is
+ created for the instance, with a random MAC, and connected
+ to the default bridge. Each NIC can take up to three
+ parameters (all optional):
+ <variablelist>
+ <varlistentry>
+ <term>mac</term>
+ <listitem>
+ <simpara>either a value or <constant>GENERATE</constant>
+ to generate a new unique MAC</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ip</term>
+ <listitem>
+ <simpara>specifies the IP address assigned to the
+ instance from the Ganeti side (this is not necessarily
+ what the instance will use, but what the node expects
+ the instance to use)</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>bridge</term>
+ <listitem>
+ <simpara>specifies the bridge to attach this NIC
+ to</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
</para>
<para>
- The <option>-s</option> option specifies the disk size for
- the instance, in gigibytes (defaults to 20 GiB).
+ Alternatively, if no network is desired for the instance, you
+ can prevent the default of one NIC with the
+ <option>--no-nics</option> option.
</para>
<para>
</para>
<para>
- The <option>-m</option> option specifies the memory size for
- the instance, in megibytes (defaults to 128 MiB).
+ The <option>-B</option> option specifies the backend
+ parameters for the instance. If no such parameters are
+ specified, the values are inherited from the cluster. Possible
+ parameters are:
+ <variablelist>
+ <varlistentry>
+ <term>memory</term>
+ <listitem>
+ <simpara>the memory size of the instance; as usual,
+ suffixes can be used to denote the unit, otherwise the
+ value is taken in mebibites</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>vcpus</term>
+ <listitem>
+ <simpara>the number of VCPUs to assign to the instance
+ (if this value makes sense for the hypervisor)</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>auto_balance</term>
+ <listitem>
+ <simpara>whether the instance is considered in the N+1
+ cluster checks (enough redundancy in the cluster to
+ survive a node failure)</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ The <option>-H</option> option specified the hypervisor to
+ use for the instance (must be one of the enabled hypervisors
+ on the cluster) and optionally custom parameters for this
+ instance. If not other options are used (i.e. the invocation
+ is just <userinput>-H
+ <replaceable>NAME</replaceable></userinput>) the instance
+ will inherit the cluster options. The defaults below show
+ the cluster defaults at cluster creation time.
+ </para>
+
+ <para>
+ The possible hypervisor options are as follows:
+ <variablelist>
+ <varlistentry>
+ <term>boot_order</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM
+ hypervisors.</simpara>
+
+ <simpara>A string value denoting the boot order. This
+ has different meaning for the Xen HVM hypervisor and
+ for the KVM one.</simpara>
+
+ <simpara>
+ For Xen HVM, The boot order is a string of letters
+ listing the boot devices, with valid device letters
+ being:
+ </simpara>
+ <variablelist>
+ <varlistentry>
+ <term>a</term>
+ <listitem>
+ <para>
+ floppy drive
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>c</term>
+ <listitem>
+ <para>
+ hard disk
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>d</term>
+ <listitem>
+ <para>
+ CDROM drive
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>n</term>
+ <listitem>
+ <para>
+ network boot (PXE)
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ <simpara>
+ The default is not to set an HVM boot order which is
+ interpreted as 'dc'.
+ </simpara>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>cdrom_image_path</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM hypervisors.</simpara>
+
+ <simpara>The path to a CDROM image to attach to the
+ instance.</simpara>
+
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic_type</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM hypervisors.</simpara>
+
+ <para>
+ This parameter determines the way the network cards
+ are presented to the instance. The possible options are:
+ <simplelist>
+ <member>rtl8139 (default for Xen HVM) (HVM & KVM)</member>
+ <member>ne2k_isa (HVM & KVM)</member>
+ <member>ne2k_pci (HVM & KVM)</member>
+ <member>i82551 (KVM)</member>
+ <member>i82557b (KVM)</member>
+ <member>i82559er (KVM)</member>
+ <member>pcnet (KVM)</member>
+ <member>e1000 (KVM)</member>
+ <member>paravirtual (default for KVM) (HVM & KVM)</member>
+ </simplelist>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disk_type</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM hypervisors.</simpara>
+
+ <para>
+ This parameter determines the way the disks are
+ presented to the instance. The possible options are:
+ <simplelist>
+ <member>ioemu (default for HVM & KVM) (HVM & KVM)</member>
+ <member>ide (HVM & KVM)</member>
+ <member>scsi (KVM)</member>
+ <member>sd (KVM)</member>
+ <member>mtd (KVM)</member>
+ <member>pflash (KVM)</member>
+ </simplelist>
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>vnc_bind_address</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM hypervisors.</simpara>
+
+ <para>Specifies the address that the VNC listener for
+ this instance should bind to. Valid values are IPv4
+ addresses. Use the address 0.0.0.0 to bind to all
+ available interfaces (this is the default) or specify
+ the address of one of the interfaces on the node to
+ restrict listening to that interface.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>vnc_tls</term>
+ <listitem>
+ <simpara>Valid for the KVM hypervisor.</simpara>
+
+ <simpara>A boolean option that controls whether the
+ VNC connection is secured with TLS.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>vnc_x509_path</term>
+ <listitem>
+ <simpara>Valid for the KVM hypervisor.</simpara>
+
+ <para>If <option>vnc_tls</option> is enabled, this
+ options specifies the path to the x509 certificate to
+ use.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>vnc_x509_verify</term>
+ <listitem>
+ <simpara>Valid for the KVM hypervisor.</simpara>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>acpi</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM hypervisors.</simpara>
+
+ <para>
+ A boolean option that specifies if the hypervisor
+ should enable ACPI support for this instance. By
+ default, ACPI is disabled.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>pae</term>
+ <listitem>
+ <simpara>Valid for the Xen HVM and KVM hypervisors.</simpara>
+
+ <para>
+ A boolean option that specifies if the hypervisor
+ should enabled PAE support for this instance. The
+ default is false, disabling PAE support.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>kernel_path</term>
+ <listitem>
+ <simpara>Valid for the Xen PVM and KVM hypervisors.</simpara>
+
+ <para>
+ This option specifies the path (on the node) to the
+ kernel to boot the instance with. Xen PVM instances
+ always require this, while for KVM if this option is
+ empty, it will cause the machine to load the kernel
+ from its disks.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>kernel_args</term>
+ <listitem>
+ <simpara>Valid for the Xen PVM and KVM hypervisors.</simpara>
+
+ <para>
+ This options specifies extra arguments to the kernel
+ that will be loaded. device. This is always used
+ for Xen PVM, while for KVM it is only used if the
+ <option>kernel_path</option> option is also
+ specified.
+ </para>
+
+ <para>
+ The default setting for this value is simply
+ <constant>"ro"</constant>, which mounts the root
+ disk (initially) in read-only one. For example,
+ setting this to <userinput>single</userinput> will
+ cause the instance to start in single-user mode.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>initrd_path</term>
+ <listitem>
+ <simpara>Valid for the Xen PVM and KVM hypervisors.</simpara>
+
+ <para>
+ This option specifies the path (on the node) to the
+ initrd to boot the instance with. Xen PVM instances
+ can use this always, while for KVM if this option is
+ only used if the <option>kernel_path</option> option
+ is also specified. You can pass here either an
+ absolute filename (the path to the initrd) if you
+ want to use an initrd, or use the format
+ <userinput>no_initrd_path</userinput> for no initrd.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>root_path</term>
+ <listitem>
+ <simpara>Valid for the Xen PVM and KVM hypervisors.</simpara>
+
+ <para>
+ This options specifies the name of the root
+ device. This is always needed for Xen PVM, while for
+ KVM it is only used if the
+ <option>kernel_path</option> option is also
+ specified.
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>serial_console</term>
+ <listitem>
+ <simpara>Valid for the KVM hypervisor.</simpara>
+
+ <simpara>This boolean option specifies whether to
+ emulate a serial console for the instance.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
</para>
<para>
- The <option>-b</option> option specifies the bridge to which the
- instance will be connected. (defaults to the cluster-wide default
- bridge specified at cluster initialization time).
+ The <option>--iallocator</option> option specifies the instance
+ allocator plugin to use. If you pass in this option the allocator
+ will select nodes for this instance automatically, so you don't need
+ to pass them with the <option>-n</option> option. For more
+ information please refer to the instance allocator documentation.
</para>
<para>
</listitem>
</varlistentry>
<varlistentry>
- <term>plain</term>
+ <term>file</term>
<listitem>
- <para>Disk devices will be logical volumes.</para>
+ <para>Disk devices will be regular files.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>local_raid1</term>
+ <term>plain</term>
<listitem>
- <para>
- Disk devices will be md raid1 arrays over two local
- logical volumes.
- </para>
+ <para>Disk devices will be logical volumes.</para>
</listitem>
</varlistentry>
<varlistentry>
- <term>remote_raid1</term>
+ <term>drbd</term>
<listitem>
<para>
- Disk devices will be md raid1 arrays with one
- component (so it's not actually raid1): a drbd device
- between the instance's primary node and the node given
- by the option <option>--secondary-node</option>.
+ Disk devices will be drbd (version 8.x) on top of
+ lvm volumes.
</para>
</listitem>
</varlistentry>
</para>
<para>
- The <option>--secondary-node</option> option is used with
- the remote raid disk template type and specifies the remote
- node.
+ The optional second value of the <option>--node</option> is used for
+ the drbd template type and specifies the remote node.
</para>
<para>
option.
</para>
+ <para>
+ The <option>--file-storage-dir</option> specifies the relative path
+ under the cluster-wide file storage directory to store file-based
+ disks. It is useful for having different subdirectories for
+ different instances. The full path of the directory where the disk
+ files are stored will consist of cluster-wide file storage directory
+ + optional subdirectory + instance name. Example:
+ /srv/ganeti/file-storage/mysubdir/instance1.example.com. This option
+ is only relevant for instances using the file storage backend.
+ </para>
+
+ <para>
+ The <option>--file-driver</option> specifies the driver to use for
+ file-based disks. Note that currently these drivers work with the
+ xen hypervisor only. This option is only relevant for instances using
+ the file storage backend. The available choices are:
+ <variablelist>
+ <varlistentry>
+ <term>loop</term>
+ <listitem>
+ <para>
+ Kernel loopback driver. This driver uses loopback
+ devices to access the filesystem within the
+ file. However, running I/O intensive applications in
+ your instance using the loop driver might result in
+ slowdowns. Furthermore, if you use the loopback
+ driver consider increasing the maximum amount of
+ loopback devices (on most systems it's 8) using the
+ max_loop param.
+ </para>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>blktap</term>
+ <listitem>
+ <para>The blktap driver (for Xen hypervisors). In
+ order to be able to use the blktap driver you should
+ check if the 'blktapctrl' user space disk agent is
+ running (usually automatically started via xend). This
+ user-level disk I/O interface has the advantage of
+ better performance. Especially if you use a network
+ file system (e.g. NFS) to store your instances this is
+ the recommended choice.
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
+ </para>
<para>
Example:
<screen>
-# gnt-instance add -t plain -s 30 -m 512 -n node1.example.com \
-> instance1.example.com
-# gnt-instance add -t remote_raid1 --secondary-node node3.example.com \
-> -s 30 -m 512 -n node1.example.com instance2.example.com
+# gnt-instance add -t file --disk 0:size=30g -B memory=512 -o debian-etch \
+ -n node1.example.com --file-storage-dir=mysubdir instance1.example.com
+# gnt-instance add -t plain --disk 0:size=30g -B memory=512 -o debian-etch \
+ -n node1.example.com instance1.example.com
+# gnt-instance add -t drbd --disk 0:size=30g -B memory=512 -o debian-etch \
+ -n node1.example.com:node2.example.com instance2.example.com
</screen>
</para>
+ </refsect3>
+
+ <refsect3>
+ <title>BATCH-CREATE</title>
+ <cmdsynopsis>
+ <command>batch-create</command>
+ <arg choice="req">instances_file.json</arg>
+ </cmdsynopsis>
+
+ <para>
+ This command (similar to the Ganeti 1.2
+ <command>batcher</command> tool) submits multiple instance
+ creation jobs based on a definition file. The instance
+ configurations do not encompass all the possible options for
+ the <command>add</command> command, but only a subset.
+ </para>
+
+ <para>
+ The instance file should be a valid-formed JSON file,
+ containing a dictionary with instance name and instance
+ parameters. The accepted parameters are:
+
+ <variablelist>
+ <varlistentry>
+ <term>disk_size</term>
+ <listitem>
+ <simpara>The size of the disks of the instance.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disk_templace</term>
+ <listitem>
+ <simpara>The disk template to use for the instance,
+ the same as in the <command>add</command>
+ command.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>backend</term>
+ <listitem>
+ <simpara>A dictionary of backend parameters.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>hypervisor</term>
+ <listitem>
+ <simpara>A dictionary with a single key (the
+ hypervisor name), and as value the hypervisor
+ options. If not passed, the default hypervisor and
+ hypervisor options will be inherited.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mac, ip, bridge</term>
+ <listitem>
+ <simpara>Specifications for the one NIC that will be
+ created for the instance.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>primary_node, secondary_node</term>
+ <listitem>
+ <simpara>The primary and optionally the secondary node
+ to use for the instance (in case an iallocator script
+ is not used).</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>iallocator</term>
+ <listitem>
+ <simpara>Instead of specifying the nodes, an
+ iallocator script can be used to automatically compute
+ them.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>start</term>
+ <listitem>
+ <simpara>whether to start the instance</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ip_check</term>
+ <listitem>
+ <simpara>Skip the check for already-in-use instance;
+ see the description in the <command>add</command>
+ command for details.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>file_storage_dir, file_driver</term>
+ <listitem>
+ <simpara>Configuration for the <literal>file</literal>
+ disk type, see the <command>add</command> command for
+ details.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ A simple definition for one instance can be (with most of
+ the parameters taken from the cluster defaults):
+ <screen>
+{
+ "instance3": {
+ "template": "drbd",
+ "os": "debootstrap",
+ "disk_size": ["25G"],
+ "iallocator": "dumb"
+ },
+ "instance5": {
+ "template": "drbd",
+ "os": "debootstrap",
+ "disk_size": ["25G"],
+ "iallocator": "dumb",
+ "hypervisor": "xen-hvm",
+ "hvparams": {"acpi": true},
+ "backend": {"memory": 512}
+ }
+}
+</screen>
+ </para>
+
+ <para>
+ The command will display the job id for each submitted instance, as follows:
+ <screen>
+# gnt-instance batch-create instances.json
+instance3: 11224
+instance5: 11225
+</screen>
+ </para>
</refsect3>
<cmdsynopsis>
<command>remove</command>
+ <arg>--ignore-failures</arg>
+ <arg>--submit</arg>
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
you are not sure if you use an instance again, use
<command>shutdown</command> first and leave it in the
shutdown state for a while.
+
+ </para>
+
+ <para>
+ The <option>--ignore-failures</option> option will cause the
+ removal to proceed even in the presence of errors during the
+ removal of the instance (e.g. during the shutdown or the
+ disk removal). If this option is not given, the command will
+ stop at the first error.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
</para>
<para>
<command>list</command>
<arg>--no-headers</arg>
<arg>--separator=<replaceable>SEPARATOR</replaceable></arg>
- <arg>-o <replaceable>FIELD,...</replaceable></arg>
+ <arg>-o <replaceable>[+]FIELD,...</replaceable></arg>
+ <arg rep="repeat">instance</arg>
</cmdsynopsis>
<para>
Shows the currently configured instances with memory usage,
- disk usage, the node they are running on, and the CPU time,
- counted in seconds, used by each instance since its latest
- restart.
+ disk usage, the node they are running on, and their run
+ status.
</para>
<para>
<varlistentry>
<term>snodes</term>
<listitem>
- <simpara>comma-separated list of secondary-nodes for the
+ <simpara>comma-separated list of secondary nodes for the
instance; usually this will be just one node</simpara>
</listitem>
</varlistentry>
</listitem>
</varlistentry>
<varlistentry>
- <term>admin_ram</term>
+ <term>disk_template</term>
<listitem>
- <simpara>the desired memory for the instance</simpara>
+ <simpara>the disk template of the instance</simpara>
</listitem>
</varlistentry>
<varlistentry>
- <term>disk_template</term>
+ <term>oper_state</term>
<listitem>
- <simpara>the disk template of the instance</simpara>
+ <simpara>the actual state of the instance; can be
+ one of the values "running", "stopped", "(node
+ down)"</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>status</term>
+ <listitem>
+ <simpara>combined form of admin_state and oper_stat;
+ this can be one of:
+ <computeroutput>ERROR_nodedown</computeroutput> if the
+ node of the instance is down,
+ <computeroutput>ERROR_down</computeroutput> if the
+ instance should run but is down,
+ <computeroutput>ERROR_up</computeroutput> if the
+ instance should be stopped but is actually running,
+ <computeroutput>ADMIN_down</computeroutput> if the
+ instance has been stopped (and is stopped) and
+ <computeroutput>running</computeroutput> if the
+ instance is set to be running (and is
+ running)</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>oper_ram</term>
+ <listitem>
+ <simpara>the actual memory usage of the instance as seen
+ by the hypervisor</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>ip</term>
+ <listitem>
+ <simpara>the ip address ganeti recognizes as associated with
+ the first instance interface</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>mac</term>
+ <listitem>
+ <simpara>the first instance interface MAC address</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>bridge</term>
+ <listitem>
+ <simpara>the bridge of the first instance NIC
+ </simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>sda_size</term>
+ <listitem>
+ <simpara>the size of the instance's first disk</simpara>
</listitem>
</varlistentry>
<varlistentry>
- <term>oper_state</term>
+ <term>sdb_size</term>
+ <listitem>
+ <simpara>the size of the instance's second disk, if
+ any</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>vcpus</term>
+ <listitem>
+ <simpara>the number of VCPUs allocated to the
+ instance</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>tags</term>
+ <listitem>
+ <simpara>comma-separated list of the instances's
+ tags</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>serial_no</term>
+ <listitem>
+ <simpara>the so called 'serial number' of the
+ instance; this is a numeric field that is incremented
+ each time the instance is modified, and it can be used
+ to track modifications</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>network_port</term>
+ <listitem>
+ <simpara>If the instance has a network port assigned
+ to it (e.g. for VNC connections), this will be shown,
+ otherwise <literal>-</literal> will be
+ displayed.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>beparams</term>
+ <listitem>
+ <simpara>A text format of the entire beparams for the
+ instance. It's more useful to select individual fields
+ from this dictionary, see below.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disk.count</term>
+ <listitem>
+ <simpara>The number of instance disks.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disk.size/N</term>
+ <listitem>
+ <simpara>The size of the instance's Nth disk. This is
+ a more generic form of the <literal>sda_size</literal>
+ and <literal>sdb_size</literal> fields.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disk.sizes</term>
+ <listitem>
+ <simpara>A comma-separated list of the disk sizes for
+ this instance.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>disk_usage</term>
+ <listitem>
+ <simpara>The total disk space used by this instance on
+ each of its nodes. This is not the instance-visible
+ disk size, but the actual disk "cost" of the
+ instance.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.mac/N</term>
+ <listitem>
+ <simpara>The MAC of the Nth instance NIC.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.ip/N</term>
+ <listitem>
+ <simpara>The IP address of the Nth instance NIC.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.bridge/N</term>
+ <listitem>
+ <simpara>The bridge the Nth instance NIC is attached
+ to.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.macs</term>
+ <listitem>
+ <simpara>A comma-separated list of all the MACs of the
+ instance's NICs.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.ips</term>
+ <listitem>
+ <simpara>A comma-separated list of all the IP
+ addresses of the instance's NICs.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.bridges</term>
+ <listitem>
+ <simpara>A comma-separated list of all the bridges of the
+ instance's NICs.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>nic.count</term>
+ <listitem>
+ <simpara>The number of instance nics.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>hv/<replaceable>NAME</replaceable></term>
+ <listitem>
+ <simpara>The value of the hypervisor parameter called
+ <replaceable>NAME</replaceable>. For details of what
+ hypervisor parameters exist and their meaning, see the
+ <command>add</command> command.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>be/memory</term>
+ <listitem>
+ <simpara>The configured memory for the instance.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>be/vcpus</term>
+ <listitem>
+ <simpara>The configured number of VCPUs for the
+ instance.</simpara>
+ </listitem>
+ </varlistentry>
+ <varlistentry>
+ <term>be/auto_balance</term>
+ <listitem>
+ <simpara>Whether the instance is considered in N+1
+ checks.</simpara>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </para>
+
+ <para>
+ If the value of the option starts with the character
+ <constant>+</constant>, the new field(s) will be added to the
+ default list. This allows to quickly see the default list
+ plus a few other fields, instead of retyping the entire list
+ of fields.
+ </para>
+
+ <para>
+ There is a subtle grouping about the available output
+ fields: all fields except for <option>oper_state</option>,
+ <option>oper_ram</option> and <option>status</option> are
+ configuration value and not run-time values. So if you don't
+ select any of the these fields, the query will be satisfied
+ instantly from the cluster configuration, without having to
+ ask the remote nodes for the data. This can be helpful for
+ big clusters when you only want some data and it makes sense
+ to specify a reduced set of output fields.
+ </para>
+
+ <para>The default output field list is:
+ <simplelist type="inline">
+ <member>name</member>
+ <member>os</member>
+ <member>pnode</member>
+ <member>admin_state</member>
+ <member>oper_state</member>
+ <member>oper_ram</member>
+ </simplelist>.
+ </para>
+ </refsect3>
+
+ <refsect3>
+ <title>INFO</title>
+
+ <cmdsynopsis>
+ <command>info</command>
+ <group>
+ <arg>-s</arg>
+ <arg>--static</arg>
+ </group>
+ <group choice="req">
+ <arg>--all</arg>
+ <arg rep="repeat"><replaceable>instance</replaceable></arg>
+ </group>
+ </cmdsynopsis>
+
+ <para>
+ Show detailed information about the given instance(s). This is
+ different from <command>list</command> as it shows detailed data
+ about the instance's disks (especially useful for the drbd disk
+ template).
+ </para>
+
+ <para>
+ If the option <option>-s</option> is used, only information
+ available in the configuration file is returned, without
+ querying nodes, making the operation faster.
+ </para>
+
+ <para>
+ Use the <option>--all</option> to get info about all instances,
+ rather than explicitely passing the ones you're interested in.
+ </para>
+ </refsect3>
+
+ <refsect3>
+ <title>MODIFY</title>
+
+ <cmdsynopsis>
+ <command>modify</command>
+ <sbr>
+ <arg choice="opt">-H <replaceable>HYPERVISOR_PARAMETERS</replaceable></arg>
+ <sbr>
+ <arg choice="opt">-B <replaceable>BACKEND_PARAMETERS</replaceable></arg>
+ <sbr>
+ <group>
+ <arg>--net add<replaceable><optional>:options</optional></replaceable></arg>
+ <arg>--net remove</arg>
+ <arg>--net <replaceable>N:options</replaceable></arg>
+ </group>
+ <sbr>
+ <group>
+ <arg>--disk add:size=<replaceable>SIZE</replaceable></arg>
+ <arg>--disk remove</arg>
+ <arg>--disk <replaceable>N</replaceable>:mode=<replaceable>MODE</replaceable></arg>
+ </group>
+
+ <sbr>
+ <arg>--submit</arg>
+ <sbr>
+ <arg choice="req"><replaceable>instance</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Modifies the memory size, number of vcpus, ip address, MAC
+ address and/or bridge for an instance. It can also add and
+ remove disks and NICs to/from the instance. Note that you
+ need to give at least one of the arguments, otherwise the
+ command complains.
+ </para>
+
+ <para>
+ The <option>-H</option> option specifies hypervisor options
+ in the form of <userinput>name=value[,...]</userinput>. For details which options can be specified, see the <command>add</command> command.
+ </para>
+
+ <para>
+ The <option>--disk
+ add:size=<replaceable>SIZE</replaceable></option> option
+ adds a disk to the instance. The <option>--disk
+ remove</option> will remove the last disk of the
+ instance. The <option>--disk
+ <replaceable>N</replaceable>:mode=<replaceable>MODE</replaceable></option>
+ option will change the mode of the Nth disk of the instance
+ between read-only (<literal>ro</literal>) and read-write
+ (<literal>rw</literal>).
+ </para>
+
+ <para>
+ The <option>--nic
+ add:<replaceable>options</replaceable></option> option will
+ add a new NIC to the instance. The available options are the
+ same as in the <command>add</command> command (mac, ip,
+ bridge). The <option>--nice remove</option> will remove the
+ last NIC of the instance, while the <option>--nic
+ <replaceable>N</replaceable>:<replaceable>options</replaceable></option>
+ option will change the parameters of the Nth instance NIC.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
+ </para>
+
+ <para>
+ All the changes take effect at the next restart. If the
+ instance is running, there is no effect on the instance.
+ </para>
+ </refsect3>
+
+ <refsect3>
+ <title>REINSTALL</title>
+
+ <cmdsynopsis>
+ <command>reinstall</command>
+ <arg choice="opt">-o <replaceable>os-type</replaceable></arg>
+ <arg>--select-os</arg>
+ <arg choice="opt">-f <replaceable>force</replaceable></arg>
+ <arg>--force-multiple</arg>
+ <sbr>
+ <group choice="opt">
+ <arg>--instance</arg>
+ <arg>--node</arg>
+ <arg>--primary</arg>
+ <arg>--secondary</arg>
+ <arg>--all</arg>
+ </group>
+ <arg>--submit</arg>
+ <arg choice="opt" rep="repeat"><replaceable>instance</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Reinstalls the operating system on the given instance(s). The
+ instance(s) must be stopped when running this command. If the
+ <option>--os-type</option> is specified, the operating
+ system is changed.
+ </para>
+
+ <para>
+ The <option>--select-os</option> option switches to an
+ interactive OS reinstall. The user is prompted to select the OS
+ template from the list of available OS templates.
+ </para>
+
+ <para>
+ Since this is a potentially dangerous command, the user will
+ be required to confirm this action, unless the
+ <option>-f</option> flag is passed. When multiple instances
+ are selected (either by passing multiple arguments or by
+ using the <option>--node</option>,
+ <option>--primary</option>, <option>--secondary</option> or
+ <option>--all</option> options), the user must pass both the
+ <option>--force</option> and
+ <option>--force-multiple</option> options to skip the
+ interactive confirmation.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
+ </para>
+
+
+ </refsect3>
+
+ <refsect3>
+ <title>RENAME</title>
+
+ <cmdsynopsis>
+ <command>rename</command>
+ <arg>--no-ip-check</arg>
+ <arg>--submit</arg>
+ <arg choice="req"><replaceable>instance</replaceable></arg>
+ <arg choice="req"><replaceable>new_name</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Renames the given instance. The instance must be stopped
+ when running this command. The requirements for the new name
+ are the same as for adding an instance: the new name must be
+ resolvable and the IP it resolves to must not be reachable
+ (in order to prevent duplicate IPs the next time the
+ instance is started). The IP test can be skipped if the
+ <option>--no-ip-check</option> option is passed.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
+ </para>
+
+ </refsect3>
+
+ </refsect2>
+
+ <refsect2>
+ <title>Starting/stopping/connecting to console</title>
+
+ <refsect3>
+ <title>STARTUP</title>
+
+ <cmdsynopsis>
+ <command>startup</command>
+ <sbr>
+ <arg>--force</arg>
+ <sbr>
+ <arg>--force-multiple</arg>
+ <sbr>
+ <group choice="opt">
+ <arg>--instance</arg>
+ <arg>--node</arg>
+ <arg>--primary</arg>
+ <arg>--secondary</arg>
+ <arg>--all</arg>
+ </group>
+ <sbr>
+ <arg>-H <option>key=value...</option></arg>
+ <arg>-B <option>key=value...</option></arg>
+ <sbr>
+ <arg>--submit</arg>
+ <sbr>
+ <arg choice="opt"
+ rep="repeat"><replaceable>name</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Starts one or more instances, depending on the following
+ options. The four available modes are:
+ <variablelist>
+ <varlistentry>
+ <term><option>--instance</option></term>
<listitem>
- <simpara>the actual state of the instance; can take of
- the values "running", "stopped", "(node down)"</simpara>
+ <simpara>will start the instances given as arguments
+ (at least one argument required); this is the default
+ selection</simpara>
</listitem>
</varlistentry>
<varlistentry>
- <term>oper_ram</term>
+ <term>--node</term>
<listitem>
- <simpara>the actual memory usage of the instance as seen
- by the hypervisor</simpara>
+ <simpara>will start the instances who have the given
+ node as either primary or secondary</simpara>
</listitem>
</varlistentry>
<varlistentry>
- <term>ip</term>
+ <term><option>--primary</option></term>
<listitem>
- <simpara>the ip address ganeti recognizes as associated with
- the instance interface</simpara>
+ <simpara>will start all instances whose primary node
+ is in the list of nodes passed as arguments (at least
+ one node required)</simpara>
</listitem>
</varlistentry>
<varlistentry>
- <term>mac</term>
+ <term><option>--secondary</option></term>
<listitem>
- <simpara>the instance interface MAC address</simpara>
+ <simpara>will start all instances whose secondary node
+ is in the list of nodes passed as arguments (at least
+ one node required)</simpara>
</listitem>
</varlistentry>
<varlistentry>
- <term>bridge</term>
+ <term>--all</term>
<listitem>
- <simpara>bridge the instance is connected to
- </simpara>
+ <simpara>will start all instances in the cluster (no
+ arguments accepted)</simpara>
</listitem>
</varlistentry>
</variablelist>
</para>
<para>
- There is a subtle grouping about the available output
- fields: all fields except for <option>oper_state</option>
- and <option>oper_ram</option> are configuration value and
- not run-time values. So if you don't select any of the
- <option>oper_*</option> fields, the query will be satisfied
- instantly from the cluster configuration, without having to
- ask the remote nodes for the data. This can be helpful for
- big clusters when you only want some data and it makes sense
- to specify a reduced set of output fields.
+ Note that although you can pass more than one selection
+ option, the last one wins, so in order to guarantee the
+ desired result, don't pass more than one such option.
</para>
- <para>The default output field list is:
- <simplelist type="inline">
- <member>name</member>
- <member>os</member>
- <member>pnode</member>
- <member>admin_state</member>
- <member>oper_state</member>
- <member>oper_ram</member>
- </simplelist>.
+ <para>
+ Use <option>--force</option> to start even if secondary disks are
+ failing.
</para>
- </refsect3>
-
- <refsect3>
- <title>INFO</title>
-
- <cmdsynopsis>
- <command>info</command>
- <arg rep="repeat"><replaceable>instance</replaceable></arg>
- </cmdsynopsis>
<para>
- Show detailed information about the (given) instances. This
- is different from <command>list</command> as it shows
- detailed data about the instance's disks (especially useful
- for remote raid templates).
+ The <option>--force-multiple</option> will skip the
+ interactive confirmation in the case the more than one
+ instance will be affected.
</para>
- </refsect3>
-
- <refsect3>
- <title>MODIFY</title>
-
- <cmdsynopsis>
- <command>modify</command>
- <arg choice="opt">-m <replaceable>memsize</replaceable></arg>
- <arg choice="opt">-p <replaceable>vcpus</replaceable></arg>
- <arg choice="opt">-i <replaceable>ip</replaceable></arg>
- <arg choice="opt">-b <replaceable>bridge</replaceable></arg>
- <arg choice="req"><replaceable>instance</replaceable></arg>
- </cmdsynopsis>
<para>
- Modify the memory size, number of vcpus, ip address and/or bridge
- for an instance.
+ The <option>-H</option> and <option>-B</option> options
+ specify extra, temporary hypervisor and backend parameters
+ that can be used to start an instance with modified
+ parameters. They can be useful for quick testing without
+ having to modify an instance back and forth, e.g.:
+ <screen>
+# gnt-instance start -H root_args="single" instance1
+# gnt-instance start -B memory=2048 instance2
+ </screen>
+ The first form will start the instance
+ <userinput>instance1</userinput> in single-user mode, and
+ the instance <userinput>instance2</userinput> with 2GB of
+ RAM (this time only, unless that is the actual instance
+ memory size already).
</para>
<para>
- The memory size is given in MiB. Note that you need to give
- at least one of the arguments, otherwise the command
- complains.
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
</para>
<para>
- All the changes take effect at the next restart. If the
- instance is running, there is no effect on the instance.
+ Example:
+ <screen>
+# gnt-instance start instance1.example.com
+# gnt-instance start --node node1.example.com node2.example.com
+# gnt-instance start --all
+ </screen>
</para>
</refsect3>
- </refsect2>
-
- <refsect2>
- <title>Starting/stopping/connecting to console</title>
-
<refsect3>
- <title>STARTUP</title>
+ <title>SHUTDOWN</title>
<cmdsynopsis>
- <command>startup</command>
- <arg>--extra=<replaceable>PARAMS</replaceable></arg>
- <arg choice="req"><replaceable>instance</replaceable></arg>
+ <command>shutdown</command>
+ <sbr>
+ <arg>--force-multiple</arg>
+ <sbr>
+ <group choice="opt">
+ <arg>--instance</arg>
+ <arg>--node</arg>
+ <arg>--primary</arg>
+ <arg>--secondary</arg>
+ <arg>--all</arg>
+ </group>
+ <sbr>
+ <arg>--submit</arg>
+ <sbr>
+ <arg choice="opt"
+ rep="repeat"><replaceable>name</replaceable></arg>
</cmdsynopsis>
<para>
- Starts an instance. The node where to start the instance is
- taken from the configuration.
+ Stops one or more instances. If the instance cannot be
+ cleanly stopped during a hardcoded interval (currently 2
+ minutes), it will forcibly stop the instance (equivalent to
+ switching off the power on a physical machine).
</para>
<para>
- The <option>--extra</option> option is used to pass
- additional argument to the instance's kernel for this start
- only. Currently there is no way to specify a persistent set
- of arguments (beside the one hardcoded). Note that this may
- not apply to all virtualization types.
+ The <option>--instance</option>, <option>--node</option>,
+ <option>--primary</option>, <option>--secondary</option> and
+ <option>--all</option> options are similar as for the
+ <command>startup</command> command and they influence the
+ actual instances being shutdown.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
</para>
<para>
Example:
<screen>
-# gnt-instance start instance1.example.com
-# gnt-instance start --extra single test1.example.com
+# gnt-instance shutdown instance1.example.com
+# gnt-instance shutdown --all
</screen>
</para>
</refsect3>
<refsect3>
- <title>SHUTDOWN</title>
+ <title>REBOOT</title>
<cmdsynopsis>
- <command>shutdown</command>
- <arg choice="req"><replaceable>instance</replaceable></arg>
+ <command>reboot</command>
+ <sbr>
+ <arg>--type=<replaceable>REBOOT-TYPE</replaceable></arg>
+ <sbr>
+ <arg>--ignore-secondaries</arg>
+ <sbr>
+ <arg>--force-multiple</arg>
+ <sbr>
+ <group choice="opt">
+ <arg>--instance</arg>
+ <arg>--node</arg>
+ <arg>--primary</arg>
+ <arg>--secondary</arg>
+ <arg>--all</arg>
+ </group>
+ <sbr>
+ <arg>--submit</arg>
+ <sbr>
+ <arg choice="opt"
+ rep="repeat"><replaceable>name</replaceable></arg>
</cmdsynopsis>
<para>
- Stops the instance. If the instance cannot be cleanly
- stopped during a hardcoded interval (currently 2 minutes),
- it will forcibly stop the instance (equivalent to switching
- off the power on a physical machine).
+ Reboots one or more instances. The type of reboot depends on
+ the value of <option>--type</option>. A soft reboot does a
+ hypervisor reboot, a hard reboot does a instance stop,
+ recreates the hypervisor config for the instance and
+ starts the instance. A full reboot does the equivalent
+ of <command>gnt-instance shutdown && gnt-instance
+ startup</command>. The default is hard reboot.
+ </para>
+
+ <para>
+ For the hard reboot the option
+ <option>--ignore-secondaries</option> ignores errors for the
+ secondary node while re-assembling the instance disks.
+ </para>
+
+ <para>
+ The <option>--instance</option>, <option>--node</option>,
+ <option>--primary</option>, <option>--secondary</option> and
+ <option>--all</option> options are similar as for the
+ <command>startup</command> command and they influence the
+ actual instances being rebooted.
+ </para>
+
+ <para>
+ The <option>--force-multiple</option> will skip the
+ interactive confirmation in the case the more than one
+ instance will be affected.
</para>
<para>
Example:
<screen>
-# gnt-instance shutdown instance1.example.com
+# gnt-instance reboot instance1.example.com
+# gnt-instance reboot --type=full instance1.example.com
</screen>
</para>
</refsect3>
<title>CONSOLE</title>
<cmdsynopsis>
<command>console</command>
+ <arg choice="opt">--show-cmd</arg>
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
<para>
- Connects to the console of the given instance. If the instance
- is not up, an error is returned.
+ Connects to the console of the given instance. If the
+ instance is not up, an error is returned. Use the
+ <option>--show-cmd</option> option to display the command
+ instead of executing it.
+ </para>
+
+ <para>
+ For HVM instances, this will attempt to connect to the
+ serial console of the instance. To connect to the
+ virtualized "physical" console of a HVM instance, use a VNC
+ client with the connection info from the
+ <command>info</command> command.
</para>
<para>
<cmdsynopsis>
<command>replace-disks</command>
- <arg choice="req">--new-secondary <replaceable>NODE</replaceable></arg>
+ <arg>--submit</arg>
+ <arg choice="req">-p</arg>
+ <arg>--disks <replaceable>idx</replaceable></arg>
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
- <para>
- This command does a full add and replace for both disks of
- an instance. It basically does an
- <command>addmirror</command> and
- <command>removemirror</command> for both disks of the
- instance.
- </para>
-
- <para>
- If you also want to replace the secondary node during this
- process (for example to fix a broken secondary node), you
- can do so using the <option>--new-secondary</option> option.
- </para>
- </refsect3>
+ <cmdsynopsis>
+ <command>replace-disks</command>
+ <arg>--submit</arg>
+ <arg choice="req">-s</arg>
+ <arg>--disks <replaceable>idx</replaceable></arg>
+ <arg choice="req"><replaceable>instance</replaceable></arg>
+ </cmdsynopsis>
- <refsect3>
- <title>ADD-MIRROR</title>
<cmdsynopsis>
- <command>add-mirror</command>
- <arg choice="req">-b <replaceable>sdX</replaceable></arg>
- <arg choice="req">-n <replaceable>node</replaceable></arg>
+ <command>replace-disks</command>
+ <arg>--submit</arg>
+ <group choice="req">
+ <arg>--iallocator <replaceable>name</replaceable></arg>
+ <arg>--new-secondary <replaceable>NODE</replaceable></arg>
+ </group>
+
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
+
<para>
- Adds a new mirror to the disk layout of the instance, if the
- instance has a remote raid disk layout.
+ This command is a generalized form for replacing disks. It
+ is currently only valid for the mirrored (DRBD) disk
+ template.
+ </para>
- The new mirror member will be between the instance's primary
- node and the node given with the <option>-n</option> option.
+ <para>
+ The first form (when passing the <option>-p</option> option)
+ will replace the disks on the primary, while the second form
+ (when passing the <option>-s</option> option will replace
+ the disks on the secondary node. For these two cases (as the
+ node doesn't change), it is possible to only run the replace
+ for a subset of the disks, using the option
+ <option>--disks</option> which takes a list of
+ comma-delimited disk indices (zero-based),
+ e.g. <userinput>0,2</userinput> to replace only the first
+ and third disks.
</para>
- </refsect3>
- <refsect3>
- <title>REMOVE-MIRROR</title>
+ <para>
+ The third form (when passing either the
+ <option>--iallocator</option> or the
+ <option>--new-secondary</option> option) is designed to
+ change secondary node of the instance. Specifying
+ <option>--iallocator</option> makes the new secondary be
+ selected automatically by the specified allocator plugin,
+ otherwise the new secondary node will be the one chosen
+ manually via the <option>--new-secondary</option> option.
+ </para>
- <cmdsynopsis>
- <command>removemirror</command>
- <arg choice="req">-b <replaceable>sdX</replaceable></arg>
- <arg choice="req">-p <replaceable>id</replaceable></arg>
- <arg choice="req"><replaceable>instance</replaceable></arg>
- </cmdsynopsis>
<para>
- Removes a mirror componenent from the disk layout of the
- instance, if the instance has a remote raid disk layout.
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
</para>
<para>
- You need to specifiy on which disk to act on using the
- <option>-b</option> option (either <filename>sda</filename>
- or <filename>sdb</filename>) and the mirror component, which
- is identified by the <option>-p</option> option. You can
- find the list of valid identifiers with the
- <command>info</command> command.
+ Note that it is not possible to select an offline or drained
+ node as a new secondary.
</para>
+ </refsect3>
+
<refsect3>
<title>ACTIVATE-DISKS</title>
<cmdsynopsis>
<command>activate-disks</command>
+ <arg>--submit</arg>
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
<para>
successful, the command will show the location and name of
the block devices:
<screen>
-node1.example.com:sda:/dev/md0
-node1.example.com:sdb:/dev/md1
+node1.example.com:disk/0:/dev/drbd0
+node1.example.com:disk/1:/dev/drbd1
</screen>
In this example, <emphasis>node1.example.com</emphasis> is
the name of the node on which the devices have been
- activated. The <emphasis>sda</emphasis> and
- <emphasis>sdb</emphasis> are the names of the block devices
- inside the instance. <emphasis>/dev/md0</emphasis> and
- <emphasis>/dev/md1</emphasis> are the names of the block
- devices as visible on the node.
+ activated. The <emphasis>disk/0</emphasis> and
+ <emphasis>disk/1</emphasis> are the Ganeti-names of the
+ instance disks; how they are visible inside the instance is
+ hypervisor-specific. <emphasis>/dev/drbd0</emphasis> and
+ <emphasis>/dev/drbd1</emphasis> are the actual block devices
+ as visible on the node.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
</para>
<para>
<cmdsynopsis>
<command>deactivate-disks</command>
+ <arg>--submit</arg>
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
<para>
De-activates the block devices of the given instance. Note
- that if you run this command for a remote raid instance
- type, while it is running, it will not be able to shutdown
- the block devices on the primary node, but it will shutdown
- the block devices on the secondary nodes, thus breaking the
- replication.
+ that if you run this command for an instance with a drbd
+ disk template, while it is running, it will not be able to
+ shutdown the block devices on the primary node, but it will
+ shutdown the block devices on the secondary nodes, thus
+ breaking the replication.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
+ </para>
+
+ </refsect3>
+
+ <refsect3>
+ <title>GROW-DISK</title>
+ <cmdsynopsis>
+ <command>grow-disk</command>
+ <arg>--no-wait-for-sync</arg>
+ <arg>--submit</arg>
+ <arg choice="req"><replaceable>instance</replaceable></arg>
+ <arg choice="req"><replaceable>disk</replaceable></arg>
+ <arg choice="req"><replaceable>amount</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Grows an instance's disk. This is only possible for
+ instances having a <literal>plain</literal> or
+ <literal>drbd</literal> disk template.
+ </para>
+
+ <para>
+ Note that this command only change the block device size; it
+ will not grow the actual filesystems, partitions, etc. that
+ live on that disk. Usually, you will need to:
+ <orderedlist>
+ <listitem>
+ <simpara>use <command>gnt-instance grow-disk</command></simpara>
+ </listitem>
+ <listitem>
+ <simpara>reboot the instance (later, at a convenient
+ time)</simpara>
+ </listitem>
+ <listitem>
+ <simpara>use a filesystem resizer, such as
+ <citerefentry> <refentrytitle>ext2online</refentrytitle>
+ <manvolnum>8</manvolnum> </citerefentry> or
+ <citerefentry> <refentrytitle>xfs_growfs</refentrytitle>
+ <manvolnum>8</manvolnum> </citerefentry> to resize the
+ filesystem, or use <citerefentry>
+ <refentrytitle>fdisk</refentrytitle>
+ <manvolnum>8</manvolnum> </citerefentry> to change the
+ partition table on the disk
+ </simpara>
+ </listitem>
+ </orderedlist>
+ </para>
+
+
+ <para>
+ The <replaceable>disk</replaceable> argument is the index of
+ the instance disk to grow. The
+ <replaceable>amount</replaceable> argument is given either
+ as a number (and it represents the amount to increase the
+ disk with in mebibytes) or can be given similar to the
+ arguments in the create instance operation, with a suffix
+ denoting the unit.
+ </para>
+
+ <para>
+ Note that the disk grow operation might complete on one node
+ but fail on the other; this will leave the instance with
+ different-sized LVs on the two nodes, but this will not
+ create problems (except for unused space).
</para>
+ <para>
+ If you do not want gnt-instance to wait for the new disk
+ region to be synced, use the
+ <option>--no-wait-for-sync</option> option.
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
+ </para>
+
+
+ <para>Example (increase the first disk for instance1 by 16GiB):
+ <screen>
+# gnt-instance grow-disk instance1.example.com 0 16g
+ </screen>
+ </para>
+
+ <para>
+ Also note that disk shrinking is not supported; use
+ <command>gnt-backup export</command> and then
+ <command>gnt-backup import</command> to reduce the disk size
+ of an instance.
+ </para>
</refsect3>
</refsect2>
<command>failover</command>
<arg>-f</arg>
<arg>--ignore-consistency</arg>
+ <arg>--submit</arg>
<arg choice="req"><replaceable>instance</replaceable></arg>
</cmdsynopsis>
<para>
Failover will fail the instance over its secondary
- node. This works only for instances having a remote raid
- disk layout.
+ node. This works only for instances having a drbd disk
+ template.
</para>
<para>
disks before failing over the instance. If you are trying to
migrate instances off a dead node, this will fail. Use the
<option>--ignore-consistency</option> option for this
- purpose.
+ purpose. Note that this option can be dangerous as errors in
+ shutting down the instance will be ignored, resulting in
+ possibly having the instance running on two machines in
+ parallel (on disconnected DRBD drives).
+ </para>
+
+ <para>
+ The <option>--submit</option> option is used to send the job to
+ the master daemon but not wait for its completion. The job
+ ID will be shown so that it can be examined via
+ <command>gnt-job info</command>.
</para>
<para>
</para>
</refsect3>
+ <refsect3>
+ <title>MIGRATE</title>
+
+ <cmdsynopsis>
+ <command>migrate</command>
+ <arg>-f</arg>
+ <arg choice="req">--cleanup</arg>
+ <arg choice="req"><replaceable>instance</replaceable></arg>
+ </cmdsynopsis>
+
+ <cmdsynopsis>
+ <command>migrate</command>
+ <arg>-f</arg>
+ <arg>--non-live</arg>
+ <arg choice="req"><replaceable>instance</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Migrate will move the instance to its secondary node without
+ shutdown. It only works for instances having the drbd8 disk
+ template type.
+ </para>
+
+ <para>
+ The migration command needs a perfectly healthy instance, as
+ we rely on the dual-master capability of drbd8 and the disks
+ of the instance are not allowed to be degraded.
+ </para>
+
+ <para>
+ The <option>--non-live</option> option will switch (for the
+ hypervisors that support it) between a "fully live"
+ (i.e. the interruption is as minimal as possible) migration
+ and one in which the instance is frozen, its state saved and
+ transported to the remote node, and then resumed there. This
+ all depends on the hypervisor support for two different
+ methods. In any case, it is not an error to pass this
+ parameter (it will just be ignored if the hypervisor doesn't
+ support it).
+ </para>
+
+ <para>
+ If the <option>--cleanup</option> option is passed, the
+ operation changes from migration to attempting recovery from
+ a failed previous migration. In this mode, ganeti checks if
+ the instance runs on the correct node (and updates its
+ configuration if not) and ensures the instances's disks are
+ configured correctly. In this mode, the
+ <option>--non-live</option> option is ignored.
+ </para>
+
+ <para>
+ The option <option>-f</option> will skip the prompting for
+ confirmation.
+ </para>
+ <para>
+ Example (and expected output):
+ <screen>
+# gnt-instance migrate instance1
+Migrate will happen to the instance instance1. Note that migration is
+**experimental** in this version. This might impact the instance if
+anything goes wrong. Continue?
+y/[n]/?: y
+* checking disk consistency between source and target
+* ensuring the target is in secondary mode
+* changing disks into dual-master mode
+ - INFO: Waiting for instance instance1 to sync disks.
+ - INFO: Instance instance1's disks are in sync.
+* migrating instance to node2.example.com
+* changing the instance's disks on source node to secondary
+ - INFO: Waiting for instance instance1 to sync disks.
+ - INFO: Instance instance1's disks are in sync.
+* changing the instance's disks to single-master
+#
+ </screen>
+ </para>
+ </refsect3>
+
+ </refsect2>
+
+ <refsect2>
+ <title>TAGS</title>
+
+ <refsect3>
+ <title>ADD-TAGS</title>
+
+ <cmdsynopsis>
+ <command>add-tags</command>
+ <arg choice="opt">--from <replaceable>file</replaceable></arg>
+ <arg choice="req"><replaceable>instancename</replaceable></arg>
+ <arg choice="req"
+ rep="repeat"><replaceable>tag</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Add tags to the given instance. If any of the tags contains
+ invalid characters, the entire operation will abort.
+ </para>
+ <para>
+ If the <option>--from</option> option is given, the list of
+ tags will be extended with the contents of that file (each
+ line becomes a tag). In this case, there is not need to pass
+ tags on the command line (if you do, both sources will be
+ used). A file name of - will be interpreted as stdin.
+ </para>
+ </refsect3>
+
+ <refsect3>
+ <title>LIST-TAGS</title>
+
+ <cmdsynopsis>
+ <command>list-tags</command>
+ <arg choice="req"><replaceable>instancename</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>List the tags of the given instance.</para>
+ </refsect3>
+
+ <refsect3>
+ <title>REMOVE-TAGS</title>
+ <cmdsynopsis>
+ <command>remove-tags</command>
+ <arg choice="opt">--from <replaceable>file</replaceable></arg>
+ <arg choice="req"><replaceable>instancename</replaceable></arg>
+ <arg choice="req"
+ rep="repeat"><replaceable>tag</replaceable></arg>
+ </cmdsynopsis>
+
+ <para>
+ Remove tags from the given instance. If any of the tags are
+ not existing on the node, the entire operation will abort.
+ </para>
+
+ <para>
+ If the <option>--from</option> option is given, the list of
+ tags will be extended with the contents of that file (each
+ line becomes a tag). In this case, there is not need to pass
+ tags on the command line (if you do, both sources will be
+ used). A file name of - will be interpreted as stdin.
+ </para>
+ </refsect3>
+
</refsect2>
</refsect1>