ThorneLabs

Reconfigure a Dell RAID (PERC) Controller through the Dell iDRAC Using racadm

• Updated March 17, 2019


While setting up an OpenStack Swift cluster, I had five Dell R720 servers with incorrectly configured RAID arrays. The two operating system hard drives were configured in a RAID1 array, as expected, but the 24 data hard drives were configured in two RAID5 arrays. The data hard drives in OpenStack Swift storage nodes should not be in a RAID array; Swift simply wants each hard drive on its own.

You can reboot most of Dell’s enterprise servers into the Dell RAID (PERC) Controller to get access to a GUI to re-configure the RAID arrays. But, with five servers and 24 disks on each, using the GUI would have been a very tedious and time consuming task. So, I began looking into what the racadm command was capable of.

You can SSH to the IP address of a Dell iDRAC and use the racadm command to run all sorts of commands. Luckily, the racadm command has a set of subcommands that allow you to reconfigure the RAID arrays.

After SSH’ing into the Dell iDRAC, I needed to get the names of the existing virtual disks:

racadm raid get vdisks

You can get more detail using racadm raid get vdisks -o -p layout,status.

The command returned the following output:

Disk.Virtual.0:RAID.Integrated.1-1
Disk.Virtual.1:RAID.Integrated.1-1
Disk.Virtual.2:RAID.Integrated.1-1

Disk.Virtual.0:RAID.Integrated.1-1 was the RAID1 array containing the two operating system hard drives. That did not need to be changed. The other two virtual disks were the incorrectly configured RAID5 arrays. Those two virtual disks needed to be deleted:

racadm raid deletevd:Disk.Virtual.1:RAID.Integrated.1-1
racadm raid deletevd:Disk.Virtual.2:RAID.Integrated.1-1

Even though I issued the delete command, nothing had actually happened. For those commands to actually run, I needed to put them into a job:

racadm jobqueue create RAID.Integrated.1-1

With the job created, I verified there was actually a job pending:

racadm jobqueue view

Then, to run the job, I power cycled the server:

racadm serveraction powercycle

During the boot process, the Lifecycle Controller GUI came up and performed the tasks within the job. Once the Lifecycle Controller GUI closed, the job was completed.

When I re-ran the racadm raid get vdisks command, I only had one virtual disk, as expected:

Disk.Virtual.0:RAID.Integrated.1-1

Next, I needed to reconfigure the 24 hard drives, now not tied to any virtual disks.

First, I needed the names of the physical disks:

racadm raid get pdisks

The command returned the following output:

Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1
Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1
Disk.Bay.2:Enclosure.Internal.0-1:RAID.Integrated.1-1
... truncated ...
Disk.Bay.23:Enclosure.Internal.0-1:RAID.Integrated.1-1
Disk.Bay.24:Enclosure.Internal.0-1:RAID.Integrated.1-1
Disk.Bay.25:Enclosure.Internal.0-1:RAID.Integrated.1-1

In this particular case, Disk.Bay.24 and Disk.Bay.25 were the two operating system drives in the RAID1 array. Just like earlier, those hard drives did not need to be reconfigured. However, Disk.Bay.0 through Disk.Bay.23 did need to be reconfigured.

For whatever reason, The Dell RAID (PERC) Controller does not allow you to create a JBOD, or in other words, have each hard drive exist on its own outside of a virtual disk. If I left the hard drives as they were, not part of any virtual disks, the Dell RAID (PERC) Controller would not present them to the operating system. So, my only option was to create 24 virtual disks with 1 disk in each in a RAID0. This was done with the following commands:

racadm raid createvd:RAID.Integrated.1-1 -rl r0 -pdkey:Disk.Bay.0:Enclosure.Internal.0-1:RAID.Integrated.1-1
racadm raid createvd:RAID.Integrated.1-1 -rl r0 -pdkey:Disk.Bay.1:Enclosure.Internal.0-1:RAID.Integrated.1-1
racadm raid createvd:RAID.Integrated.1-1 -rl r0 -pdkey:Disk.Bay.2:Enclosure.Internal.0-1:RAID.Integrated.1-1
... truncated ...
racadm raid createvd:RAID.Integrated.1-1 -rl r0 -pdkey:Disk.Bay.21:Enclosure.Internal.0-1:RAID.Integrated.1-1
racadm raid createvd:RAID.Integrated.1-1 -rl r0 -pdkey:Disk.Bay.22:Enclosure.Internal.0-1:RAID.Integrated.1-1
racadm raid createvd:RAID.Integrated.1-1 -rl r0 -pdkey:Disk.Bay.23:Enclosure.Internal.0-1:RAID.Integrated.1-1

Once again, even though I issued the create command, nothing had actually happened. For those commands to actually run, I needed to put them into another job:

racadm jobqueue create RAID.Integrated.1-1

Again, with the job created, I verified there was actually a job pending:

racadm jobqueue view

And, to run the job, I power cycled the server:

racadm serveraction powercycle

Once again, during the boot process, the Lifecycle Controller GUI came up and performed the tasks within the job. Once the Lifecycle Controller GUI closed, the job was completed.

Now, when I ran racadm raid get vdisks I had 25 virtual disks:

Disk.Virtual.0:RAID.Integrated.1-1
Disk.Virtual.1:RAID.Integrated.1-1
Disk.Virtual.2:RAID.Integrated.1-1
... truncated ...
Disk.Virtual.22:RAID.Integrated.1-1
Disk.Virtual.23:RAID.Integrated.1-1
Disk.Virtual.24:RAID.Integrated.1-1

When I logged into the operating system, in this particular case RHEL 6.5, and ran fdisk -l, I saw /dev/sda through /dev/sdy.

Because /dev/sda contained the operating system, it had already been partitioned and formatted. But, with all the of RAID re-configuration, I was then able to partition and format /dev/sdb through /dev/sdy as needed.

References

If you found this post useful and would like to help support this site - and get something for yourself - sign up for any of the services listed below through the provided affiliate links. I will receive a referral payment from any of the services you sign-up for.

Get faster shipping and more with Amazon Prime: About to order something from Amazon but want to get more value out of the money you would normally pay for shipping? Sign-up for a free 30-day trial of Amazon Prime to get free two-day shipping, access to thousands of movies and TV shows, and more.

Thanks for reading and take care.