A Heterogeneous Disk Array (HDA) architecture is proposed that allows device heterogeneity, as well as RAID level heterogeneity. Various disks of different types may be incorporated into a single HDA, and multiple RAID levels may coexist in the same array while sharing disk space. The goal of this architecture is to utilize the resources of all its disks to the maximum possible extent by using appropriate RAID levels to meet the varying availability and performance requirements for different applications. An improved best-fit allocation algorithm is proposed for the HDA to meet this goal.