Table of Contents
- Overview
- Interface
- Implementation details
- Create the script 'localdisk' to perform the partitioning
- Add the handling of 'getpartition' command in xcatd and 'getpartition.pm' plugin
- Add the binaries which are needed to perform the script 'localdisk'
- Perform the script 'localdisk'
- Handle the litefile with option 'localdisk'
- Limitation
Table of Contents
{{: Design Warning}}
Overview
The nfs-based statelite has some shortages that some persistent files like the log need to be accessed continually with plenty of communication data which causing the nfs performance issue, and also that the growing of the temporary files in node will eat up the ram space. Then xCAT figures out a function that enable a local hard disk for the statelite node so that the unimportant log files and temporary files can be put on the local disk to reduce the using of nfs network bandwidth and reduce the using of ram space. Also, a swap space could be enabled base on the local disk to facilitate the applications.
Interface
Customer needs to manipulate two places to enable the local disk support.
Configure that how to partition the local disk
Since the configuring of the local disk is a little complex, put it in a configuration file is a good choice. The configuration file is configured in the osimage attribute 'partitionfile' (linuximage.partitionfile).
The format of the configuration file:
enable=yes
enablepart=no
[disk]
dev=/dev/sdb
clear=yes
parts=100M-200M,1G-2G
[disk]
dev=/dev/sdc
clear=yes
parts=10,20,30
[disk]
dev=/dev/sda
clear=yes
parts=10,20,30
[localspace]
dev=/dev/sda1
fstype=ext3
[swapspace]
dev=/dev/sda2
There are two global attributes 'enable' and 'enablepart' to control the enable and disable of the total function.
- enable: This feature only works when 'enable' set to 'yes'. If set to 'no', nothing will be done.
- enablepart: The partition action (refer to [disk] section) will be done only when 'enablepart=yes'.
[disk] section is used to configure how to part a hard disk.
- dev: The path of the device file.
- clear: To specify that whether to clear all the existed partitions. 'yes' - to clear, otherwise do not clear.
- fstype: The fs type for the new created partition. 'ext3' is the default value if not setting.
- parts: The space range for the partition which will be created on the 'dev'. The valid format could be '<startpoint>-<endpoint>' or 'percentage of the disk'. So you could set it to '100M-10G' or '50'. If you set it to '50', that means 50% of the disk space will be assigned to partition which will be used for local space.
[localspace] section is used to specify which partition will be used as local storage for the statelite node.
- dev: The path of the partition file.
- fstype: The fs type on the partition which specified in 'dev'.
[swapspace]: section is used to configure the swap space for the statelite node.
- dev: The path of the partition file which will be used as the swap space.
To enable this function for the node base on a specific osimage, create the configuration file and set the path to the partitionfile for the osimage like following:
chdef -t osimage partitionfile=/tmp/cfglocaldisk
Configure the files in the litefile table
For the files that customer would like to store it in the local disk, add an entry like following in the litefile table: (localdisk is the option to specify that this file or directory should be put in the local disk.)
"ALL","/tmp/","localdisk",,
Implementation details
Create the script 'localdisk' to perform the partitioning
The code logic in the script:
Send a request command 'getpartition' to xcatd to get the partition configuration
Parse the arguments which returned by 'getpartition' request
If 'enable != yes', return directly
If 'enablepart != yes', skip the partition section in [disk].
To part a disk which specified in [disk]:
Go through the partition information of the target disk which specified in 'dev'
if 'clear=yes', remove the current partition
else record the existed partitions
Calculate the 'start' and 'end' points for the partition if 'xxxxspace=percentage'
Create partition on the target disk. And format the partition to the file system type which specified in 'fstype' parameter.
If having [localspace], mount the partition 'dev' to /.sllocal
If having [swapspace], create the swap space against 'dev' and enable it.
Add the handling of 'getpartition' command in xcatd and 'getpartition.pm' plugin
Inside the 'getparition.pm' plugin, it will read the configuration file from linuximage.partitionfile and parse it, then generate a parameter list and send it to node.
And add the entry in policy table to permit the running of this command from node:
chtab priority=7.1 policy.commands=getpartition policy.rule=allow
Add the binaries which are needed to perform the script 'localdisk'
There are several binaries need to be injected to the initrd so that the partition script could be run.
parted mke2fs bc swapon swapoff chmod
Perform the script 'localdisk'
The partition script 'localdisk' will be run before the running of 'rc.statelite' which is using to configure the lite files.
Handle the litefile with option 'localdisk'
Add changes in the 'rc.statelite' to support the option 'localdisk'. If the 'option=localdisk', mount the original file to the one in the /.sllocal
Limitation
1. The partition configuration setting only can be set in osimage level.
News
- Apr 22, 2016: xCAT 2.11.1 released.
- Mar 11, 2016: xCAT 2.9.3 (AIX only) released.
- Dec 11, 2015: xCAT 2.11 released.
- Nov 11, 2015: xCAT 2.9.2 (AIX only) released.
- Jul 30, 2015: xCAT 2.10 released.
- Jul 30, 2015: xCAT migrates from sourceforge to github
- Jun 26, 2015: xCAT 2.7.9 released.
- Mar 20, 2015: xCAT 2.9.1 released.
- Dec 12, 2014: xCAT 2.9 released.
- Sep 5, 2014: xCAT 2.8.5 released.
- May 23, 2014: xCAT 2.8.4 released.
- Jan 24, 2014: xCAT 2.7.8 released.
- Nov 15, 2013: xCAT 2.8.3 released.
- Jun 26, 2013: xCAT 2.8.2 released.
- May 17, 2013: xCAT 2.7.7 released.
- May 10, 2013: xCAT 2.8.1 released.
- Feb 28, 2013: xCAT 2.8 released.
- Nov 30, 2012: xCAT 2.7.6 released.
- Oct 29, 2012: xCAT 2.7.5 released.
- Aug 27, 2012: xCAT 2.7.4 released.
- Jun 22, 2012: xCAT 2.7.3 released.
- May 25, 2012: xCAT 2.7.2 released.
- Apr 20, 2012: xCAT 2.7.1 released.
- Mar 19, 2012: xCAT 2.7 released.
- Mar 15, 2012: xCAT 2.6.11 released.
- Jan 23, 2012: xCAT 2.6.10 released.
- Nov 15, 2011: xCAT 2.6.9 released.
- Sep 30, 2011: xCAT 2.6.8 released.
- Aug 26, 2011: xCAT 2.6.6 released.
- May 20, 2011: xCAT 2.6 released.
- Feb 14, 2011: Watson plays on Jeopardy and is managed by xCAT!
- xCAT Release Notes Summary
- xCAT OS And Hw Support Matrix
- xCAT Test Environment Summary
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.