IP Library Granted Patent US 11,397,668
Granted Patent B2
US 11,397,668 · App. 16/856,257 · Granted Jul 26, 2022

Data read/write method and apparatus, and storage server

Inventors: Tangren Yao (Shenzhen, CN); Chen Wang (Shanghai, CN); Feng Wang (Chengdu, CN); Wei Feng (Shenzhen, CN)
Assignee: HUAWEI TECHNOLOGIES CO., LTD.
G06F12/023
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,397,668
App. No.
16/856,257
Granted
Jul 26, 2022
Kind
B2
Abstract

In a data read/write method, a storage server receives a write request of a client and performs storage. Each write request carries a to-be-written slice, an ID of a first storage device, and a virtual storage address of a first virtual storage block. If storage is performed continuously successfully from a start address within virtual storage space of a virtual storage block in the storage device, a successful continuous storage address range is recorded. For each storage device, all data within the successful continuous storage address range is successfully stored data. When receiving a read request of a client for an address segment within the address range, the storage server may directly return data that needs to be read to the client.

Claims (53)

1. A data processing method comprising:

dividing data into slices;

sending the slices to storage devices in corresponding storage servers for storing, wherein each of the storage servers comprises at least one of the storage devices, and wherein the storage devices comprise a first storage device; and

recording, in a virtual storage block, in response to stored slices being successfully stored in the first storage device, and in a direct manner, a successful continuous storage address range of the stored slices by:

updating the successful continuous storage address range to an end address of a slice when the slice is written successfully and when all previous slices before the slice in an extent are written successfully; and

not updating the successful continuous storage address range when the slice is not written successfully or when a previous slice before the slice in the extent is not written successfully,

wherein, within each of the storage devices comprising the stored slices, the stored slices are adjacent to each other.

2. The data processing method of claim 1 , further comprising receiving a first read request comprising a first virtual address.

3. The data processing method of claim 2 , further comprising determining whether the first virtual address falls within the successful continuous storage address range.

4. The data processing method of claim 3 , further comprising reading corresponding data from the first virtual address when the first virtual address falls within the successful continuous storage address range.

5. The data processing method of claim 4 , further comprising receiving a second read request comprising a second virtual address.

6. The data processing method of claim 5 , further comprising:

determining whether the second virtual address falls within the successful continuous storage address range; and

returning a failure response when the second virtual address does not fall within the successful continuous storage address range.

7. The data processing method of claim 1 , wherein the slices belong to a stripe.

8. The data processing method of claim 1 , wherein the slices are copies of the data.

9. The data processing method of claim 1 , wherein the successful continuous storage address range is of a logical block or logical blocks.

10. A data processing apparatus comprising:

a processor configured to divide data into slices; and

an interface coupled to the processor and configured to send the slices to storage devices in corresponding storage servers for storing, wherein each of the storage servers comprises at least one of the storage devices, wherein the storage devices comprise a first storage device,

wherein the processor is further configured to record, in a virtual storage block, in response to stored slices being successfully stored in the first storage device, and in a direct manner; a successful continuous storage address range of the stored slices by:

updating the successful continuous storage address range to an end address of a slice when the slice is written successfully and when all previous slices before the slice in an extent are written successfully; and

not updating the successful continuous storage address range when the slice is not written successfully or when a previous slice before the slice in the extent is not written successfully, and

wherein, within each of the storage devices comprising the stored slices, the stored slices are adjacent to each other.

11. The data processing apparatus of claim 10 , wherein the processor is further configured to receive a first read request comprising a first virtual address.

12. The data processing apparatus of claim 11 , wherein the processor is further configured to determine whether the first virtual address falls within the successful continuous storage address range.

13. The data processing apparatus of claim 12 , wherein the processor is further configured to read corresponding data from the first virtual address when the first virtual address falls within the successful continuous storage address range.

14. The data processing apparatus of claim 13 , wherein the processor is further configured to:

receive a second read request comprising a second virtual address;

determine whether the second virtual address falls within the successful continuous storage address range; and

return a failure response when the second virtual address does not fall within the successful continuous storage address range.

15. The data processing apparatus of claim 10 , wherein the slices belong to a stripe.

16. The data processing apparatus of claim 10 , wherein the slices are copies of the data.

17. The data processing apparatus of claim 10 , wherein the successful continuous storage address range is of a logical block or logical blocks.

18. A computer program product comprising instructions that are stored on a non-transitory medium and that, when executed by a processor, cause a data processing apparatus to:

divide data into slices;

send the slices to storage devices in corresponding storage servers for storing, wherein each of the storage servers comprises at least one of the storage devices, and wherein the storage devices comprise a first storage device; and

record, in a virtual storage block, in response to stored slices being successfully stored in the first storage device, and in a direct manner, a successful continuous storage address range of the stored slices by:

updating the successful continuous storage address range to an end address of a slice when the slice is written successfully and when all previous slices before the slice in an extent are written successfully; and

not updating the successful continuous storage address range when the slice is not written successfully or when a previous slice before the slice in the extent is not written successfully,

wherein, within each of the storage devices comprising the stored slices, the stored slices are adjacent to each other.

19. The computer program product of claim 18 , wherein the instructions further cause the data processing apparatus to:

receive a first read request comprising a first virtual address;

determine whether the first virtual address falls within the successful continuous storage address range; and

read corresponding data from the first virtual address when the first virtual address falls within the successful continuous storage address range.

20. The computer program product of claim 19 , wherein the instructions further cause the data processing apparatus to:

receive a second read request comprising a second virtual address;

determine whether the second virtual address falls within the successful continuous storage address range; and

return a failure response when the second virtual address does not fall within the successful continuous storage address range.

21. The computer program product of claim 18 , wherein the slices belong to a stripe.

22. The computer program product of claim 18 , wherein the slices are copies of the data.

23. The data processing method of claim 1 , wherein continuous means that an end address of one of the stored slices is adjacent to a start address of next one of the stored slices so that there is no hole between the stored slices.

24. The computer program product of claim 18 , wherein the successful continuous storage address range is of a logical block or logical blocks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2021
From: YAO, TANGREN; WANG, CHEN; WANG, FENG; FENG, WEI
To: HUAWEI TECHNOLOGIES CO., LTD.
Reel/Frame 057982/0485 →
Continuity (2)
Continuation PCTCN2018071637 · Jan 5, 2018
Related Publication 20200250080A1 · Aug 6, 2020