As there's not much in the way of information on this, here's a brief guide towards expanding your RAID array on the Escalade 9650 series controllers using 3ware Online Capacity Expansion and OpenSUSE 10.1.
Note that you can also use this to migrate between RAID5 and RAID6, assuming you have the correct number of extra drives.
0. Back up everything. [May be hard with big arrays - consider using a USB drive dock.]
1. Hook up your new drive(s). Usual disclaimers about not hot-swapping, etc, apply.
2. Log in to 3DM2 at http://192.168.1.111:888/
3. Go to Management/Maintenance.
4. Check your main RAID array and press "Migrate".
5. Check the drives you want to add. Select the correct RAID type (RAID5 or RAID6) and stripe size (64k stripe is default). Press OK.
6. Wait for migration. Can take a while.
7. Reboot to remount new RAID volume. The OS will not see the expansion yet.
8. Back up everything new.
9. Unmount your RAID array ('unmount' command).
9a. Start parted on your device (i.e. parted /dev/sdc), enter "check" as the command.
9b. Parted will complain the GPT table is not using all the available space. Hit "F" to fix it. This takes seconds.
10. Go to YaST2 Partition Manager.
11. Underneath the physical volume, select "linux native". Hit "Resize".
12. Set "Unused space" to zero. Apply.
13. Wait. (Maybe up to an hour - see below.)
Done! OpenSUSE should now see the expanded array size.
The steps are similar for Windows, although you will need to alter steps 9 through 12 to allow Windows to 'see' the expanded array.
Note that YaST Partitioner is a parted front-end, and parted ALWAYS resizes NON-destructively.
[Edit]: Well, I tried my own recipe, and it didn't work. It fails at step 12, where Yast Partitioner does not resize the partition so Opensuse can use the free space. I remember having this problem before, but it resolved itself, so the recipe above should be accurate. No dice this time, at least so far.
Trying GParted, I have found there is a GParted bug that prevents it from working. The fix is reportedly to run parted from the command line first. Run parted on the drive (i.e. /dev/sdc) and not the partition (i.e. /dev/sdc1). Solution thread is here.
[Edit]: Success! Steps 9a and 9b added above to fix the GPT table before trying Yast Partitioner. I'm sure GParted would work too, but it does basically what Yast Partitioner does.
For those wondering, the resize for a 10 Tb array took approximately 30 minutes. Horror stories about resize operations taking hours (or days) were, fortunately, not accurate in my case. This is also with the 3ware controller doing a background rebuild!
GParted uses e2fsck, so it may take considerably longer. Either that, or e2fsck takes a lot, lot less time than everybody says, even on multi-terabyte arrays.