-
Notifications
You must be signed in to change notification settings - Fork 173
The minidesign for diskdiscover and configraid
This mini-design will support 2 new features for RAID supports, these functions can be shipped in xCAT-genesis-scripts, we can run these functions under xCAT genesis system.
- Discover disk devices under xcat genesis system;
- Configure RAID, including creating RAID arrays and deleting RAID arrays;
Input parameter: PCI_ID or nothing
Description: User can use this command to get the overview of disks/RAID from compute node; The output will be useful information for configure RAID support; The input parameter is PCI_ID, PCI_ID includes PCI vender and device ID. For example, We can find power8 SAS adapter info from http://pci-ids.ucw.cz/read/PC/1014/034a; 1014 is vender info, 034a is PCI-E IPR SAS Adapter.
The framework process:
- If input parameter PCI_ID is not null:
- diskdiscover read PCI_ID, it can find related PCI_SLOT_NAME; use different functions to get disk devices, their Resource_Path, their status, descriptions and overview of RAID arrays; combine these output as a metrix;
- else:
- diskdiscover will find all advanced function disks and its related info, including PCI_ID,PCI_SLOT_NAME.....; It also show the RAID arrays;
Work process:
- Start xCAT genesis system in P8 system, let P8 system enter xCAT genesis system shell.
- From xcat management node, execute
xdsh nodename "diskdiscover 1014:034a"
orxdsh nodename "diskdiscover"
.- The format of output will be a metrix; The column can include PCI_ID, PCI_Address, Resource_Path, devices, status, Descriptions.
Reference example:
PCI_ID : 1014:034a ---------------- PCI_SLOT_NAME Resource_Path disk_Devices Status Descriptions 0001:08:00.0 00-01 sg0 Active Advanced Function Disk 0001:08:00.0 00-00 sg1 Active RAID 0 Array Member RAID overview: ------------- Name PCI/SCSI Location Description Status sda 0001:08:00.0/0:2:0:0 RAID 10 Disk Array 1% Rebuilt
Script: configraid
Function: delete RAID arrays, create RAID arrays
- Command format:
-
- ::
- configraid delete_raid=[all|raid_array_list|null] stripe_size_in_kb=[16|64|256] create_raid = rl#[0,10,5,6] | [PCI_ID#<num>|PCI_SLOT_name#<pci_slot_name>]|disk_num#<number of disks for one raid> create_raid = rl#[0,10,5,6] | [PCI_ID#<num>|PCI_SLOT_name#<pci_slot_name>]|disk_num#<number of disks for one raid> ...
Description:
-
Input parameters:
- delete_raid:
-
- delete_raid list raid arrays which should be removed. If its value is all, all raid arrays detected should be deleted.
- If its value is a list of raid names, these raid arrays will be deleted. Raid array names should be seperated by
#
. If its value is null, no raid array will be deleted.If there is no delete_raid, the default value is null. - format is : delete_raid = [all|raid_array_list|null]
-
- example: ::
- delete_raid = sda!sdd
create_raid:
- When we want to create a raid array, we can add a line begginning with create_raid.
- The format is : create_raid="rl#<raidlevel>|[pci_id#<num>|pci_slot_name#<pci_slot_name>|disk_names#<sg0>#..#<sgn>]|disk_num#<number>" ...
- rl means RAID level, RAID level can be any supported RAID level for the given adapter, such as 0, 10, 5, 6.
- pci_id is PCI vender and device ID; refer to http://pci-ids.ucw.cz/read/PC/1014/034a;
- disk_num is the number of disk this RAID will contain;
- pci_slot_name is the specified PCI location. If specify pci_slot_name, this raid will be created using disks from this PCI_SLOT;
- If specify pci_id, configraid will detect all disks under pci_id.
- If specify disk_names, configraid will configure raid using specified disks.
- stripe_size_in_kb:
-
- Currently supported stripe sizes in kb include 16, 64, and 256.
- If stripe size is not specified, it will default to the recommended stripe size for the selected RAID level.
-
Framework main process a. load input parameters; b. If delete_raid is not null:
- If delete_raid is all:
-
collect all the RAID arrays; delete all RAID array or specifed RAID arrays from delete_raid list;
- else:
-
give information that no need to delete RAID arrays;
-
If there are several input parameters of create_raid, handle each create_raid, find target number disks and create raid;
- If there is PCI_ID and there is no PCI_SLOT_name:
-
find out all ipr ioa pci locations based on PCI_ID reorder ipr ioa pci locations by its primary and secondary state return ordered groups name pci_slot_group with PCI_SLOT_name
- If there is PCI_SLOT_name or there are both PCI_SLOT_name and PCI_ID:
-
use PCI_SLOT_name, so empty pci_slot_group let PCI_SLOT_name into pci_slot_group
- If there is no PCI_ID or PCI_SLOT_name:
-
find out all advanced functions disks save as af_disks_group;
- If there is pci_slot_group:
-
for each PCI_SLOT_name in pci_slot_group: find out all member disks in IPR raid adapter, we will get multilines, sloc_of_disks_group, such as <pciloc_of_ioa1>=<sloc_of_disk1>,<sloc_of_disk2>......
<pciloc_of_ioa2>=<sloc_of_disk1>,<sloc_of_disk2>......
- for each create_raid :
-
- if sloc_of_disks_group is not null:
-
find out its <pciloc_of_ioa1>=<sloc_of_disk1>,<sloc_of_disk2>, sort disk devices by resource path find the required number disks, disk_num is disks number, these disks are af disks, save as af_disks_group
- if af_disks_group is not null:
-
- if disk_num is not null:
-
if there is not enough disks on adapter, break current loop; if all target disks were already in use, reuse this array, break current loop;
- else:
-
disk_num is the number of all disks in af_disks_group
pick up af disks to form a list create an array using specified raid_level, stripe_size_in_kb, list of af disks; check if the array is ready or not.
-
log files are saved in /tmp/
-
Other common functions called by main process:
- load configure file
- log utils
- delete ipr arrays
- create ipr arrays
- check ipr device status
- wait for ipr device status
- check disk format, af or jbod
- order resource path
- convert between disk scsi location and device_name
- sort disk devices by resource path
- reorder ipr ioa pci locations by its primary and secondary state
- format jbod disks into advanced format
- pick up specified number of disks from af_disks_group
- other
Work process:
- Execute commands in xcat MN, for example ppc64, delete all raid arrays, create a raid10 using pci_slot 0001:08:00.0 first 2 disks:
- ::
- nodeset <compute_node> cmd=configRAID delete_raid=all create_raid=rl#10|pci_slot_name#0001:08:00.0|disk_num#2,shell rpower <compute_node> reset
- Use xdsh to monitor the process of raid building.
- In current stage, we will focus on the framework process, the monitor of raid building process can be considered in the future.
- Nov 13, 2024: xCAT 2.17 released.
- Mar 08, 2023: xCAT 2.16.5 released.
- Jun 20, 2022: xCAT 2.16.4 released.
- Nov 17, 2021: xCAT 2.16.3 released.
- May 25, 2021: xCAT 2.16.2 released.
- Nov 06, 2020: xCAT 2.16.1 released.
- Jun 17, 2020: xCAT 2.16 released.
- Mar 06, 2020: xCAT 2.15.1 released.
- Nov 11, 2019: xCAT 2.15 released.
- Mar 29, 2019: xCAT 2.14.6 released.
- Dec 07, 2018: xCAT 2.14.5 released.
- Oct 19, 2018: xCAT 2.14.4 released.
- Aug 24, 2018: xCAT 2.14.3 released.
- Jul 13, 2018: xCAT 2.14.2 released.
- Jun 01, 2018: xCAT 2.14.1 released.
- Apr 20, 2018: xCAT 2.14 released.
- Mar 14, 2018: xCAT 2.13.11 released.
- Jan 26, 2018: xCAT 2.13.10 released.
- Dec 18, 2017: xCAT 2.13.9 released.
- Nov 03, 2017: xCAT 2.13.8 released.
- Sep 22, 2017: xCAT 2.13.7 released.
- Aug 10, 2017: xCAT 2.13.6 released.
- Jun 30, 2017: xCAT 2.13.5 released.
- May 19, 2017: xCAT 2.13.4 released.
- Apr 14, 2017: xCAT 2.13.3 released.
- Feb 24, 2017: xCAT 2.13.2 released.
- Jan 13, 2017: xCAT 2.13.1 released.
- Dec 09, 2016: xCAT 2.13 released.
- Dec 06, 2016: xCAT 2.9.4 (AIX only) released.
- Nov 11, 2016: xCAT 2.12.4 released.
- Sep 30, 2016: xCAT 2.12.3 released.
- Aug 19, 2016: xCAT 2.12.2 released.
- Jul 08, 2016: xCAT 2.12.1 released.
- May 20, 2016: xCAT 2.12 released.
- 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 OS And Hw Support Matrix
- 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.