A random-access type storage device such as a hard disk or semiconductor memory is formatted to provide multiple partitions of varying block size. The data to be stored is in blocks of fixed size, and these blocks are compressed if the compressed size fits in the block size of a small-block partition in the storage device. If a data block is not compressible to the small block size, it is stored uncompressed in another of the partitions. The memory device also contains a table storing the locations of the blocks in the partitions, so upon recall the block is retrieved from location, decompressed (if it had been compressed), and sent to the CPU. For example, there may be two partitions, one using the block size of the original (uncompressed) data, and the other having a block size corresponding to the typical compressed size of the blocks of data (perhaps one-half the size of the original data blocks). The relative number of blocks in each partition (e.g., the physical storage capacity of each partition) is set at the average ratio of compressible blocks to uncompressible blocks for the compression algorithm used. For example, an algorithm may compress 90% of the blocks to 50% of their original size, so a ratio of the number of blocks in the compressed partition to the number of blocks in the uncompressed partition is selected as 90:10.