A data prefetching method for a distributed hash table DHT storage system, comprising: receiving, by a first storage node, a read request sent by a client; recording, by the first storage node, a read data block and a time stamp of the read data block in a read recording table, wherein the time stamp is used to identify read time of the read data block, and the read recording table corresponds to a same segment of raw data; and determining, by a first storage node, a to-be-prefetched data block and a second storage node where the to-be-prefetched data block resides according to the read data block and a set to-be-prefetched data block threshold, and sending a prefetching request to the second storage node, wherein the prefetching request comprises identification information of the to-be-prefetched data block and the read recording table, and the identification information is used to uniquely identify the to-be-prefetched data block; judging, by the second storage node according to a count of the read data block and the time stamp with latest read time in the read recording table, whether the to-be-prefetched data block needs to be pre-acquired; and reading, by the second storage node, the to-be-prefetched data block from a disk according to the prefetching request, and storing the to-be-prefetched data block in a local buffer if the count of the read data block is greater than or equal to a set read data block threshold, and a difference between current pre-read time and the latest read time that is shown by the time stamp is less than or equal to set time, so that the client reads the to-be-prefetched data block from the local buffer of the second storage node. receiving, by a first storage node, a read request sent by a client; recording, by the first storage node, a read data block and a time stamp of the read data block in a read recording table, wherein the time stamp is used to identify read time of the read data block, and the read recording table corresponds to a same segment of raw data; and determining, by a first storage node, a to-be-prefetched data block and a second storage node where the to-be-prefetched data block resides according to the read data block and a set to-be-prefetched data block threshold, and sending a prefetching request to the second storage node, wherein the prefetching request comprises identification information of the to-be-prefetched data block and the read recording table, and the identification information is used to uniquely identify the to-be-prefetched data block; judging, by the second storage node according to a count of the read data block and the time stamp with latest read time in the read recording table, whether the to-be-prefetched data block needs to be pre-acquired; and reading, by the second storage node, the to-be-prefetched data block from a disk according to the prefetching request, and storing the to-be-prefetched data block in a local buffer if the count of the read data block is greater than or equal to a set read data block threshold, and a difference between current pre-read time and the latest read time that is shown by the time stamp is less than or equal to set time, so that the client reads the to-be-prefetched data block from the local buffer of the second storage node.