I've looked at the Areca SDK and it looks like it is possible
to implement support for those cards such that disks behind a RAID would show up as individual disks in the disks list, instead of one RAID drive. It also appears to be possible to send commands directly to the individual disks and that will give us Direct I/O (which enabled disk identify and SMART / SCT queries).
There are significant caveats though:
- Since their library file needs to query a system in order to identify any available Areca cards, ideally it should only do that if the user tells us that they use such a card.
We can either put a checkbox in settings, a .config setting, or a plug-in architecture (like in DrivePool).
I think a plug-in architecture would be best suited here.
- The SDK is not clear which cards support the pass-through methods. Only the latest ZIP file contains the required pass-through methods, the previous ones do not.
Some of the other SMART information that past SDKs provide is not very useful to the Scanner. The SMART data is abstracted behind their own structures, which prevents the Scanner from interpreting it.
- The cards themselves are expensive.
So yes, we can do this theoretically. I'm not clear as to whether it would actually work in a practical sense without playing with the SDK and actual Areca hardware. It would be a significant time investment and large portions of the Scanner would need to be extended to support this.
I think it would be practical, as a first step, to open up the Scanner's disk enumeration / identification / SMART querying processes with our own SDK so that anyone can implement plug-ins for custom cards. That should be our goal.