1. A data processing system, comprising: at least two disk emulators operating in parallel and each emulating a disk subsystem, the disk emulators using a file in a file system for any data stored on the respective disk; a separate de-duplicator for de-duplicating the data stored in the files, the de-duplicator operating in parallel to the disk emulators, the de-duplicator further using an additional disk emulator emulating an additional disk subsystem by using an additional file in a file system for storing data shared between the other disk subsystems; and wherein, the additional file is accessible by all disk emulators; the de-duplicator comprising: duplication identification means for communicating with the disk emulators to identify duplicated data in the respective files; storing means responsive to the duplication identification means to retrieve duplicated data from the files and store it in the additional file via the additional disk emulator; linking means responsive to the storing means to instruct a disk emulator to delete the retrieved duplicated data in its file and replace it with a reference to the duplicated data in the additional file; and upon receiving an instruction to delete and replace data from the de-duplicator a disk emulator performing an atomic operation to delete the respective data and replacing it with a reference to the respective data in the additional file.