Drobo and a Asus RT-N16 running DD-WRT

Here are some tips on getting a Drobo (tested with a 1st Generation Drobo) working with an Asus RT-N16 running DD-WRT.

DD-WRT's notes on the Asus RT-N16

First off, BACKUP your data on the Drobo. You'll probably need to change the partitions and reformat your Drobo.

It looks like DD-WRT 24 does not support GUID Partition Tables (GPT) which means you need to use a MBR partition table and you LUN size will be limited to 2TB. This was not really a problem in my case since the 1st Generation Drobo is restricted to a 2TB LUN.

I think the standard Drobo tools will use a GPT. To check if your Drobo has a GPT just run fdisk on the drobo

$ sudo fdisk -clu /dev/sdc
WARNING: GPT (GUID Partition Table) detected on '/dev/sdc'! The util fdisk doesn't support GPT. Use GNU Parted.
Disk /dev/sdc: 2199.0 GB, 2199023185920 bytes
87 heads, 57 sectors/track, 866095 cylinders, total 4294967160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xa103ff18
Device Boot Start End Blocks Id System
/dev/sdc1 2048 4294967159 2147482556 83 Linux

Did you BACKUP your Drobo?

To remove the GPT, erase the first and last sectors:

$ sudo dd if=/dev/zero of=/dev/sdc bs=512 count=2
$ sudo dd if=/dev/zero of=/dev/sdc bs=512 seek=4294967159

Now create a new partition on the Drobo with fdisk, then format the partition as ext3 as described on the DataRobotics website (skip the GPT part).

Next up (hopefully) is a C program that will report the Drobo's status. I needed to write a C program because unfortunately the excellent drobo-utils is written in Python and Python needs more space than is available on a router. I also didn't want to install Python to external storage attached to the router, because if that storage fails, then there would be no way to determine the status of the Drobo.

No comments:

PreferenceKey Quirks

PreferenceKey has a few quirks that have tripped me up. One is the reduce(value:nextValue:) implementation. The other is that a PreferenceKe...