= How to save an existing disk image from one node of a Testbed = == Getting Started == If you have not done so yet: * [http://www.orbit-lab.org/register Register] for an account * [https://www.orbit-lab.org/schedule/ Make a reservation] on the Scheduler for a given testbed Lets assume that you registered as user 'bob' and made a reservation for the 'sb1' testbed. You then access the 'sb1' console using the command: {{{ ssh bob@console.sb1.orbit-lab.org }}} [[BR]] === Saving the image === Once you have the image prepared the way you want it. On the node run: {{{ ssh root@node1-1.sb1.orbit-lab.org root@node1-1.sb1.orbit-lab.org: ./prepare.sh }}} This will remove udev rules (to prevent renaming of interfaces) and dump log files to lower the size of the image. It also shutdown the node. Once the node has been shutdown, to save the existing disk image on node (1,1) of the 'sb1' testbed, use the command: {{{ omf save -n node1-1.sb1.orbit-lab.org # will save the current disk image on node [1,1] of the 'sb1' testbed }}} The output of this image saving process will look like the following: {{{ INFO NodeHandler: OMF Experiment Controller 5.4 (git c005675) INFO NodeHandler: Slice ID: pxe_slice INFO NodeHandler: Experiment ID: pxe_slice-2013-02-06t14.14.46-05.00 INFO NodeHandler: Message authentication is disabled INFO Experiment: load system:exp:stdlib INFO property.resetDelay: resetDelay = 230 (Fixnum) INFO property.resetTries: resetTries = 1 (Fixnum) INFO Experiment: load system:exp:eventlib INFO Experiment: load system:exp:saveNode INFO property.node: node = "node1-1.sb1.orbit-lab.org" (String) INFO property.pxe: pxe = "1.1.6" (String) INFO property.domain: domain = "grid.orbit-lab.org" (String) INFO property.started: started = "false" (String) INFO property.image: image = nil (NilClass) INFO property.resize: resize = nil (NilClass) WARN exp: Saving only works for ext2/ext3 partitions and MBR (msdos) partition tables. Saving any other filesystem or partition table type will produce a 0 byte image. INFO Topology: Loading topology 'node1-1.sb1.orbit-lab.org'. INFO Experiment: Resetting resources INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb1.orbit-lab.org) [0 sec.] . . . INFO stdlib: Waiting for nodes (Up/Down/Total): 0/1/1 - (still down: node1-1.sb1.orbit-lab.org) [80 sec.] INFO ALL_UP: Event triggered. Starting the associated tasks. INFO node1-1.sb1.orbit-lab.org: INFO node1-1.sb1.orbit-lab.org: - Saving image of '/dev/sda' on node 'node1-1.sb1.orbit-lab.org' INFO node1-1.sb1.orbit-lab.org: to the file 'bob-node-node1-1.sb1.orbit-lab.org-2013-02-06-14-16-23.ndz' on host '10.10.0.42' INFO node1-1.sb1.orbit-lab.org: INFO property.started: started = "true" (String) INFO exp: INFO exp: - Saving process started at: Wed Feb 06 14:16:27 -0500 2013 INFO exp: (this may take a while depending on the size of your image) INFO Experiment: DONE! INFO ExecApp: Application 'commServer' finished INFO run: Experiment sb1_2008_07_20_23_38_04 finished after 9:19 done. }}} At the end of the ''saving'' process, you will have disk image file with the name: ''"bob-node-node1-1.sb1.orbit-lab.org-2013-02-06-14-16-23.ndz"'' in the directory ''"/export/omf/omf-images"'' on the machine with the host name ''"frisbee"''. These information are all provided in the output displayed above. You can then: * install this disk image on a set of nodes, using the instructions described in this [wiki:Tutorial/HowToImage tutorial]. In this example, to install the newly created disk image on node (1,2): {{{ omf load -t node1-2.sb1.orbit-lab.org -i bob-node-1-1-2008-07-20-23-39-39.ndz # will install the disk image on node [1,2] of the 'sb1' testbed }}} * only for the purpose of making a backup of your image: log into the ''"repository"'' machine, and copy your image to your backup storage. [[BR]] == Learning More == The above disk image saving process is implemented as a ''special'' orbit experiment. As such, its execution will results in a log file as with any other orbit experiment. This log file should look like [attachment:sb1_2008_07_20_23_38_04.log this]. Each image created by the above saving process is a full hard-disk image, which can have arbitrary large file size (>200Mo or even more). As storage on the ''"frisbee"'' machine is limited, please be considerate in the number of images you save/use, and move any unused images to your own archival storage. The generic '''omf''' command used above is the access point to control various ORBIT functions, such as the saving of a disk image from a node, with the sub-command "save". To see a list of all the available '''omf''' commands, you should type ''"omf help"''. Finally, the complete available option/commands for the ''save'' function are given by ''"omf help save"'': {{{ omf save --help Save a disk image from a given node into an archive file Usage: omf save -n NODE [-h] [-c AGGREGATE] With: -h, --help print this help message -n, --node NODE a valid description of a single node (no default here, you have to enter a node!) -r, --resize SIZE Resizes the first partition to SIZE GB or to maximum size if SIZE=0 or leave x percent of free space if SIZE=x% Some Examples: omf save -n omf.nicta.node1 omf save -n omf.nicta.node3 -c grid }}}