A data storage methodology wherein a data file is initially stored in a format
consistent with RAID-1 and RAID-X and then migrated to a format consistent with
RAID-X and inconsistent with RAID-1 when the data file grows in size beyond a certain
threshold. Here, RAID-X refers to any non-mirrored storage scheme employing XOR-based
error correction coding (e.g., a RAID-5 configuration). Each component object (including
the data objects and the parity object) for the data file is configured to be stored
in a different stripe unit per object-based secure disk. Each stripe unit may store,
for example, 64 KB of data. So long as the data file does not grow beyond the size
threshold of a stripe unit (e.g., 64 KB), the parity stripe unit contains a mirrored
copy of the data stored in one of the data stripe units because of the exclusive-ORing
of the input data with "all zeros" assumed to be contained in empty or partially-filled
stripe units. When the file grows beyond the size threshold, the parity stripe
unit starts storing parity information instead of a mirrored copy of the file data.
Thus, the data file can be automatically migrated from a format consistent with
RAID-1 and RAID-X to a format consistent with RAID-X and inconsistent with RAID-1
without the necessity to duplicate or rewrite the stored data.