Skip to content

Capture_Linux_Image_from_running_node_to_create_a_stateless statelite_image

ligc edited this page Jul 30, 2015 · 8 revisions

Table of Contents

{{:Design Warning}}

This feature aims to capture the image from running node to create a stateless/statelite image. Currently it support Linux only.

Basic Idea

There're many available capture utility candidates, including cpio, tar, pax and afio. These utilites handle the files as the targets to be archieved and they are capable of excluding specific files and/or directories from the targets. They are even create a single archive which contains files from multiple file systems.

Note: the cpio utility was standardized in POSIX. 1-1988, and was dropped from the later version, starting with POSIX. 1-2001 due to its 8 GB filesize limit. The POSIX standardized pax utility can be used to read and write cpio archives instead.

  • In order to capture the Linux image, we need to specify one diskful Linux node.

  • We also need one file to contain the files excluded from the image, the files and directories in this file will be excluded.

  • The diskful Linux node should be managed by xCAT, because xdsh and xdcp are necessary.

  • Following the existing genimage code to generate stateless image:

    /bin/find . ! -path './xxxx*' |cpio -H newc -o |gzip -c - > /tmp/rootimg.gz

  • Use the xdcp command to copy the rootimg.gz file from the specified diskful node to the MN.

  • Extract the contents of rootimg.gz to /install/netboot////rootimg

  • Run the command genimage

  • Run the packimage or liteimg command

  • Run the _nodeset osimage=

xCAT Interface

New xCAT command: capimage

 capimage node [ -p|--profile <profile> ] 

Requirements:

  • The node here should be one diskful Linux node;
  • -p is optional, the user can specify the profile name for the statelite/stateless image to be created; if not specified, the current profile attribute of the node will be used for the image to be created.

The files/direcotries to be excluded

Some files/directories should be excluded when capturing the diskful Linux image from the running node, or else capturing will be failed. In my investagation, the following directories should be excluded:

 /tmp/
 /proc/
 /sys/
 /dev/
 /xcatpost/
 /install/

The implementation

  • Parse the paramaters of the capimage command, get the node name and the profile name;

  • Build the command

    /bin/find / ! -path './tmp*' ! -path './proc*' ! -path './sys*' ! -path './dev*' ! -path './xcatpost*' ! -path './install*' |cpio -H newc -o |gzip -c - > /tmp/rootimg.gz

  • Use xdsh and the command above to capture and generate the image on the specified diskful node.

  • Use xdcp to copy the /tmp/rootimg.gz file from the specified diskful node

  • Extract the contents of rootimg.gz to the /install/netboot////rootimg directory on MN.

  • Create the directories excluded when capturing the image

    /tmp/ /proc/ /sys/ /dev/

The next steps will be documented.

  • Run the genimage command
  • Run the liteimg/packimage command
  • Run the nodeset osimage=

Notes

It seems the root image captured from the diskful node requires many memory capabilities. For example, I captured the image from the diskful Linux node, which is installed by xCAT; then I tried to boot one LPAR with this image, but it always failed until I updated the memory capability to 5120MB. Here is output of the df -h command, you can see the usage of the memory in the stateless mode:

[root@945n02 ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
test_ppc64            2.5G  2.3G  190M  93% /
tmpfs                 2.5G     0  2.5G   0% /dev/shm
tmpfs                  10M  192K  9.9M   2% /tmp
tmpfs                  10M     0   10M   0% /var/tmp

News

History

  • Oct 22, 2010: xCAT 2.5 released.
  • Apr 30, 2010: xCAT 2.4 is released.
  • Oct 31, 2009: xCAT 2.3 released. xCAT's 10 year anniversary!
  • Apr 16, 2009: xCAT 2.2 released.
  • Oct 31, 2008: xCAT 2.1 released.
  • Sep 12, 2008: Support for xCAT 2 can now be purchased!
  • June 9, 2008: xCAT breaths life into (at the time) the fastest supercomputer on the planet
  • May 30, 2008: xCAT 2.0 for Linux officially released!
  • Oct 31, 2007: IBM open sources xCAT 2.0 to allow collaboration among all of the xCAT users.
  • Oct 31, 1999: xCAT 1.0 is born!
    xCAT started out as a project in IBM developed by Egan Ford. It was quickly adopted by customers and IBM manufacturing sites to rapidly deploy clusters.
Clone this wiki locally