beofdisk – Query and modify hard drive partitions on compute nodes.


beofdisk [-h, –help] [-v, –version] [-q, –query] [-w, –write] [-d, –default] [-M, –mbr] [-n num, –node num]


This script allows you to partition the hard drives on compute nodes.

When you query, it will create files in /etc/beowulf/fdisk/, one for each device/drive geometry it finds. These files can then be modified by hand, or with the defaults options, then written back to the hard drives.


-h, --help

Display a help message and exit.

-v, --version

Display version information and exit.

-q, --query

Queries the hard drives and writes their current partition tables into files in /etc/beowulf/fdisk/. If no -n num node is specified, then all nodes are queried.

-w, --write

Matches the files in /etc/beowulf/fdisk/ with the hard drives and changes the partition tables on the compute nodes to match what is in the files. If no -n num node is specified, then all nodes are written.

WARNING: This option is potentially dangerous. It modifies partition tables, and incorrect partition tables can cause problems.

-d, --default

This will cause beofdisk to go through the files in /etc/beowulf/fdisk/ and set them all to contain default partitioning schemes that include a beoboot partition, a swap partition, and the rest as /.

-M, --MBR

Write a simple Master Boot Record to the hard drive that directs the BIOS to “boot next device” after each failure to boot. Typically, this ultimately results in a PXE boot. If no -n num node is specified, then all nodes are written with this new MBR.

-n num, --node num

By default, the apply the specified operation to all nodes. Optionally, apply the operation only to node num.


Creating default partition schemes:

[root@cluster ~] # beofdisk -d
 Creating a default partition table for hda:2495:255:63
 Creating a default partition table for hda:1222:255:63

Writing the defaults to node 0’s hard drive:

[root@cluster ~] #  beofdisk -w -n 0

Disk /dev/hda: 2495 cylinders, 255 heads, 63 sectors/track
Old situation:
Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0

   Device Boot Start     End   #cyls   #blocks   Id  System
/dev/hda1   *      0+      0       1-     8001   89  Unknown
/dev/hda2          1      32      32    257040   82  Linux swap
/dev/hda3         33    2494    2462  19776015   83  Linux
/dev/hda4          0       -       0         0    0  Empty
New situation:
Units = sectors of 512 bytes, counting from 0

   Device Boot    Start       End  #sectors  Id  System
/dev/hda1   *        63     16064     16002  89  Unknown
/dev/hda2         16065    546209    530145  82  Linux swap
/dev/hda3        546210  40082174  39535965  83  Linux
/dev/hda4             0         -         0   0  Empty
Successfully wrote the new partition table

Re-reading the partition table ...

If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes:  dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
Node partition tables have been modified.
You must reboot each affected node for changes to take effect.

Query the disks on the compute nodes to determine how they are partitioned:

[root@cluster ~] # beofdisk -q

The following creates a partition file in /etc/beowulf/fdisk, with a name similar to sda:512:128:32 and containing lines similar to the following:

[root@cluster ~] # cat sda:512:128:32
 /dev/sda1  :  start=    32,  size=  8160,   id=89,  bootable
 /dev/sda2  :  start=    8192,   size=    1048576,  Id=82
 /dev/sda3  :  start=    1056768,    size=    1040384,  Id=83
 /dev/sda4  :  start=    0, size=  0,  Id=0