A storage apparatus for providing a virtual volume (16, #100) having a plurality of virtual storage areas to a host system, comprising: a plurality of disks; and a controller charachterized in that the controller is configured to: configure at least three error correcting code groups with the plurality of disks, each of the at least three ECC groups being allocated a plurality of storage areas from the plurality of disks; allocate at least one of the storage areas respectively from the at least three ECC groups to at least one of the plurality of virtual storage areas of the virtual volume (16, #100) dynamically based on a request received from the host system; manage configuration information that represents a plurality of numbers of storage areas, each of the plurality of numbers of storage areas being a number of storage areas allocated to the virtual volume (16, #100) and belonging to a respective one of the at least three ECC groups; execute a rearranging process in which: when it is determined, based on the configuration information, that a difference between a maximum value of the plurality of numbers of storage areas and a minimum value of the plurality of numbers of storage areas is greater than a threshold, one storage area of the ECC group having the maximum value that is allocated to the virtual volume (16, #100) is migrated to one storage area of the ECC group having the minimum value, in order to make the difference between the maximum value and the minimum value smaller. a plurality of disks; and a controller configure at least three error correcting code groups with the plurality of disks, each of the at least three ECC groups being allocated a plurality of storage areas from the plurality of disks; allocate at least one of the storage areas respectively from the at least three ECC groups to at least one of the plurality of virtual storage areas of the virtual volume (16, #100) dynamically based on a request received from the host system; manage configuration information that represents a plurality of numbers of storage areas, each of the plurality of numbers of storage areas being a number of storage areas allocated to the virtual volume (16, #100) and belonging to a respective one of the at least three ECC groups; execute a rearranging process in which: when it is determined, based on the configuration information, that a difference between a maximum value of the plurality of numbers of storage areas and a minimum value of the plurality of numbers of storage areas is greater than a threshold, one storage area of the ECC group having the maximum value that is allocated to the virtual volume (16, #100) is migrated to one storage area of the ECC group having the minimum value, in order to make the difference between the maximum value and the minimum value smaller. when it is determined, based on the configuration information, that a difference between a maximum value of the plurality of numbers of storage areas and a minimum value of the plurality of numbers of storage areas is greater than a threshold, one storage area of the ECC group having the maximum value that is allocated to the virtual volume (16, #100) is migrated to one storage area of the ECC group having the minimum value, in order to make the difference between the maximum value and the minimum value smaller.