IP Library Granted Patent US 11,422,931
Granted Patent B2
US 11,422,931 · App. 16/904,218 · Granted Aug 23, 2022

Method and system for facilitating a physically isolated storage unit for multi-tenancy virtualization

Inventor: Shu Li (Bothell, WA)
Assignee: Alibaba Group Holding Limited
G06F12/0246G06F9/45558G06F11/1068G06F12/0253G06F2009/45583G06F2201/805G06F2212/7206
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,422,931
App. No.
16/904,218
Granted
Aug 23, 2022
Kind
B2
Abstract

One embodiment provides a system which facilitates organization of data. During operation, the system allocates, to a function associated with a host, a number of block columns to obtain a physical storage space for the function, wherein a block column corresponds to a block from each of a plurality of dies of a non-volatile storage device. In response to processing an incoming host write instruction and an internal background write instruction, the system allocates a first block column to the incoming host write instruction and a second block column to the internal background write instruction, thereby extending a lifespan of the non-volatile storage device by recycling the first block column when deleting a namespace or virtual machine associated with the function.

Claims (82)

1. A computer-implemented method, comprising:

allocating, to a function associated with a host, a number of block columns to obtain a physical storage space for the function, wherein a block column corresponds to a block from each of a plurality of dies of a non-volatile storage device; and

in response to processing an incoming host write instruction and an internal background write instruction, allocating a first block column to the incoming host write instruction and a second block column to the internal background write instruction.

2. The method of claim 1 , wherein the function is a virtual function, and wherein the method further comprises:

in response to receiving a command to delete a namespace or a virtual machine associated with the virtual function:

erasing the number of block columns of the physical storage space allocated for the virtual function; and

returning the number of block columns to a block column pool.

3. The method of claim 1 , wherein allocating the number of block columns comprises:

obtaining the number of block columns from a block column pool.

4. The method of claim 1 , further comprising:

in response to receiving the incoming host write instruction, writing data associated with the host write to at least the first block column allocated to the function.

5. The method of claim 1 , further comprising:

identifying a sealed block column which is filled with data; and

executing the internal background write instruction as a garbage collection process based on the second block column, by:

copying valid data from blocks of the sealed block column to blocks of the second block column;

erasing data stored in the blocks of the sealed block column; and

returning the sealed block column to a block column pool.

6. The method of claim 1 ,

wherein the non-volatile storage device is one of a plurality of non-volatile storage devices which communicate with a storage controller which includes a global flash translation layer,

wherein the global flash translation layer allocates the number of block columns to the function,

wherein the allocated block columns correspond to at least two of the non-volatile storage devices, and

wherein the function is one of a plurality of virtual functions to which the global flash translation layer allocates block columns.

7. The method of claim 6 ,

wherein the global flash translation layer maps each virtual function to an allocated physical storage space, and

wherein each physical storage space includes block columns corresponding to the at least two of the non-volatile storage devices.

8. The method of claim 6 ,

wherein the storage controller further includes an erasure coding (EC) encoder module which performs EC encoding for the functions and an EC decoder module which performs EC decoding for the functions,

wherein data associated with the function is stored in the allocated number of block columns across the at least two non-volatile storage devices, and wherein the method further comprises:

performing, by the EC encoder module, EC encoding on the data prior to the data being stored in the allocated number of block columns to obtain an EC codeword;

distributing the EC codeword to be stored in block columns in the allocated number of block columns across the at least two non-volatile storage devices.

9. The method of claim 1 , further comprising:

dividing a physical storage capacity of the non-volatile storage device into a plurality of block groups, wherein a block group comprises a plurality of block columns.

10. A computer system, comprising:

a processor; and

a non-transitory memory coupled to the processor and storing instructions which, when executed by the processor, cause the processor to perform a method, the method comprising:

allocating, to a function associated with a host, a number of block columns to obtain a physical storage space for the function, wherein a block column corresponds to a block from each of a plurality of dies of a non-volatile storage device; and

in response to processing an incoming host write instruction and an internal background write instruction, allocating a first block column to the incoming host write instruction and a second block column to the internal background write instruction.

11. The computer system of claim 10 , wherein the function is a virtual function, and wherein the method further comprises:

in response to receiving a command to delete a namespace or a virtual machine associated with the virtual function:

erasing the number of block columns of the physical storage space allocated for the virtual function; and

returning the number of block columns to a block column pool.

12. The computer system of claim 10 , wherein allocating the number of block columns comprises:

obtaining the number of block columns from a block column pool.

13. The computer system of claim 10 , wherein the method further comprises:

in response to receiving the incoming host write instruction, writing data associated with the host write to at least the first block column allocated to the function.

14. The computer system of claim 10 , wherein the method further comprises:

identifying a sealed block column which is filled with data; and

executing the internal background write instruction as a garbage collection process based on the second block column, by:

copying valid data from blocks of the sealed block column to blocks of the second block column;

erasing data stored in the blocks of the sealed block column; and

returning the sealed block column to a block column pool.

15. The computer system of claim 10 ,

wherein the non-volatile storage device is one of a plurality of non-volatile storage devices which communicate with a storage controller which includes a global flash translation layer,

wherein the global flash translation layer allocates the number of block columns to the function,

wherein the allocated number of block columns correspond to at least two of the non-volatile storage devices, and

wherein the function is one of a plurality of virtual functions to which the global flash translation layer allocates block columns.

16. The computer system of claim 15 ,

wherein the global flash translation layer maps each virtual function to an allocated physical storage space, and

wherein each physical storage space includes block columns corresponding to the at least two of the non-volatile storage devices.

17. The computer system of claim 15 ,

wherein the storage controller further includes an erasure coding (EC) encoder module which performs EC encoding for the functions and an EC decoder module which performs EC decoding for the functions,

wherein data associated with the function is stored in the allocated number of block columns across the at least two non-volatile storage devices, and wherein the method further comprises:

performing, by the EC encoder module, EC encoding on the data prior to the data being stored in the allocated number of block columns to obtain an EC codeword;

distributing the EC codeword to be stored in block columns in the allocated number of block columns across the at least two non-volatile storage devices.

18. The computer system of claim 10 , wherein the method further comprises:

dividing a physical storage capacity of the non-volatile storage device into a plurality of block groups, wherein a block group comprises a plurality of block columns.

19. An apparatus, comprising:

a block column-allocating unit configured to allocate, to a function associated with a host, a number of block columns to obtain a physical storage space for the function, wherein a block column corresponds to a block from each of a plurality of dies of a non-volatile storage device;

a host write-processing unit configured to process an incoming host write instruction; and

a background write-processing unit configured to process an internal background write instruction;

wherein the block column-allocating unit is further configured to, in response to the host write-processing unit processing the incoming host write instruction and the background write-processing unit processing the internal background write instruction, allocate a first block column to the incoming host write instruction and a second block column to the internal background write instruction, and

wherein the block column-allocating unit, the host write-processing unit, and the background write-processing unit perform their functions based on instructions stored on a non-transitory computer readable medium executed by a processor.

20. The apparatus of claim 19 , wherein the function is a virtual function, wherein the number of block columns are allocated from and obtained from a block column pool, and wherein the apparatus further comprises:

a physical capacity-dividing unit configured to divide a physical storage capacity of the non-volatile storage device into a plurality of block groups, wherein a block group comprises a plurality of block columns;

a communication unit configured to receive a command to delete a namespace or a virtual machine associated with the virtual function; and

a block column-recycling unit configured to, in response to the communication unit receiving the command to delete the namespace or the virtual machine associated with the virtual function:

erase the number of block columns of the physical storage space allocated for the virtual function; and

return the number of block columns to the block column pool, wherein the non-volatile storage device is one of a plurality of non-volatile storage devices which communicate with a storage controller which includes a global flash translation layer,

wherein the global flash translation layer allocates the number of block columns to the function,

wherein the allocated block columns correspond to at least two of the non-volatile storage devices,

wherein the function is one of a plurality of virtual functions to which the global flash translation layer allocates block columns, and

wherein the physical capacity-dividing unit, the communication unit, and the block column-recycling unit perform their functions based on the instructions stored on the non-transitory computer readable medium executed by the processor.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 29, 2026
From: ALIBABA GROUP HOLDING LIMITED
To: CLOUD INTELLIGENCE ASSETS HOLDING (SINGAPORE) PRIVATE LIMITED
Reel/Frame 075499/0384 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 18, 2020
From: LI, SHU
To: ALIBABA GROUPD HOLDING LIMITED
Reel/Frame 052975/0052 →
Continuity (1)
Related Publication 20210397547A1 · Dec 23, 2021
Cited By (1)
US 12,499,042