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.