A method of operating a first memory controller, the first memory controller controlling a first memory device that includes a plurality of memory blocks, the method comprising:
- receiving bad block information of a second memory device controlled by a second memory controller from a host device, wherein the bad block information of the second memory device includes physical addresses of bad blocks of the second memory device;
- designating source bad blocks of the first memory device based on the physical addresses of the bad blocks of the second memory device;
- and
- storing data stored in the source bad blocks of the first memory device in other memory blocks of the first memory device,
- wherein physical addresses of the source bad blocks in the first memory device are the same as the physical addresses of the bad blocks in the second memory device.