RAID is a pseudo standard that describes how data can be stored on an array of disks. The standard describes four different ways to store data (technically more, but mostly nobody cares about the others):
Raid-0: Striping. Each block of data is split across each member of the RAID device. No redundancy, so it is more of just an Array of Inexpensive Disks, not Redundant array of inexpensive disk.
Raid-1: Mirroring. Each block of data is stored on every disk in the array. This only really makes since with two disks. RAID 1/0 or just RAID 10 is a combination of mirroring and striping and can be used to take advantage of more than two disks.
Raid-5: Parity. Each block of data is split across each member of the RAID device + one disk is dedicated to parity.
Raid-6: Double Parity: Same as Raid-5, but with two parity disks.
That's it. Raid doesn't describe what to do about size mis-matches or anything, but striping only really works with equally sized disks. Typically the way to get around this is that you could use the left over space as a separate disk drive.
Stepping away from RAID as a way of creating a large disk array, you can use things like ZFS and just add disks to a storage pool. ZFS would always try to use both disks as efficiently as possible, and you could tell ZFS what level of redundancy you are happy with.
Prior technologies are things like volume mapping (i.e. LVM, or it's windows equivalent), which abstract the idea of mapping blocks to disk to a higher level. With LVM you can span across disks, expand partitions, have non-contiguous partitions and so on. Volume mapping is not RAID, and rather than increasing performance as you increase disks it just will randomly pick to write to one disk or the other depending on where you are in the file system. This is referred to as spanning and is typically better than RAID if you are going for IOPS rather then raw performance.
Im not sure if this would work with some hardware raids but with software raids, In order to take advantage of some aspects of raid 0 while using more of available space on two dissimilar sized drives like one 100GB and one 350GB you you might try creating 3 100GB partitions on the larger drive, and stripe the 100KB partition on the first and the 3 100GB partitions on the second drive. Raid level 0 will give you 400 gigs to use while providing some read/write performance increase, but it would probably be less than if you striped two 200GB drives. – Keith Reynolds – 2015-07-07T18:46:40.343
Normally you would not want to do this, For demonstration purposes I set up a RAID0 using one 1G and 16G flash drives. I made an extended partitions filling up each disk. Then I made a 981MB partitions on each drive until they were full. Then I made a raid using the 16 partitions with the command on linux
mdadm --create --verbose /dev/md0 --chunk=512 -l0 -n16 /dev/sdd5 /dev/sde5 /dev/sde6 /dev/sde7 /dev/sde8 /dev/sde9 /dev/sde10 /dev/sde11 /dev/sde12 /dev/sde13 /dev/sde14 /dev/sde15 /dev/sde16 /dev/sde17 /dev/sde18 /dev/sde19
. I ended up with less space than had I just used the 16GB drive – Keith Reynolds – 2015-07-07T19:15:27.017