The disclosure generally relates to storage systems and, more particularly, to apparatuses and methods and computer program products for a redundant array of independent disk (RAID) reconstruction.
A storage system typically includes one or more storage devices, such as hard disks (HDs), solid state disks (SSDs), into which data may be written, and from which the data may be read, as desired. The operating system (OS) may implement a high-level module, such as a file system, to logically organize the information stored on the devices as storage containers, such as files. Data is distributed across the drives in one of several ways, referred to as redundant array of independent disk (RAID) levels, depending on the required level of redundancy and performance. The different data distribution layouts are named by the word “RAID” followed by a number, such as RAID 0, RAID 1, RAID 5, RAID 6, etc. RAID levels greater than RAID 0 provide protection against unrecoverable sector read errors, as well as against failures of whole physical drives. Upon failure of one physical drive, the failed drive is replaced with a new one and a RAID rebuild is performed. Data or parity information of each chunk of the new drive is calculated based on data, parity information, or the combination of the other chunks within the same stripe. It typically takes hours or even the whole day to perform the RAID rebuild. Thus, it is desirable to have apparatuses and methods and computer program products for a RAID rebuild to shorten the rebuild time.
In view of the foregoing, it may be appreciated that a substantial need exists for methods, computer program products and apparatuses that mitigate or reduce the problems above.
In an aspect of the invention, the invention introduces an apparatus for a redundant array of independent disk (RAID) reconstruction, at least including a RAID group and a processing unit. The processing unit starts an unused-space scan procedure to determine a logical address range that is a candidate to be skipped for the RAID group and send the logical address range to a stripe reconstruction procedure; and starts the stripe reconstruction procedure to receive the logical address range from the unused-space scan procedure, determine a stripe of drives of the RAID group to be skipped from being reconstructed according to the logical address range, and omit a reconstruction to the determined strip.
In another aspect of the invention, the invention introduces a non-transitory computer program product for a RAID reconstruction, when being executed by a processing unit coupled to a RAID group, the computer program product at least including program code to: start an unused-space scan procedure to determine a logical address range that is a candidate to be skipped for the RAID group and send the logical address range to a stripe reconstruction procedure; and start the stripe reconstruction procedure to receive the logical address range from the unused-space scan procedure, determine a stripe of drives of the RAID group to be skipped from being reconstructed according to the logical address range, and omit a reconstruction to the determined strip.
Both the foregoing general description and the following detailed description are examples and explanatory only, and are not restrictive of the invention as claimed.
Reference is made in detail to embodiments of the invention, which are illustrated in the accompanying drawings. The same reference numbers may be used throughout the drawings to refer to the same or like parts, components, or operations.
The present invention will be described with respect to particular embodiments and with reference to certain drawings, but the invention is not limited thereto and is only limited by the claims. It will be further understood that the terms “comprises,” “comprising,” “includes” and/or “including,” when used herein, specify the presence of stated features, integers, steps, operations, elements, and/or components, but do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, and/or groups thereof.
Use of ordinal terms such as “first”, “second”, “third”, etc., in the claims to modify a claim element does not by itself connote any priority, precedence, or order of one claim element over another or the temporal order in which acts of a method are performed, but are used merely as labels to distinguish one claim element having a certain name from another element having the same name (but for use of the ordinal term) to distinguish the claim elements.
It will be understood that when an element is referred to as being “connected” or “coupled” to another element, it can be directly connected or coupled to the other element or intervening elements may be present. In contrast, when an element is referred to as being “directly connected” or “directly coupled” to another element, there are no intervening elements present. Other words used to describe the relationship between elements should be interpreted in a like fashion (e.g., “between” versus “directly between,” “adjacent” versus “directly adjacent.” etc.)
Embodiments of a storage system may be practiced in a file server, a database server, a network attached storage (NAS) server or others. One or more clients may connect to the storage system via networks including a local area network (LAN), a wireless telephony network, the Internet, a personal area network (PAN) or any combination thereof.
Each RAID controller may access data requested by the processing unit 110 (i.e. the host). The data is stored on drives, for example, the drives 180-1-1 to 180-m-n(1), the drives 180-m-1 to 180-m-n(m), and so on, where each of n(1) to n(m) may be configured to an arbitrary integer greater than 1 depending on different system requirements. Each drive is a non-volatile storage device, such as a hard disk (HD) drive, a solid state disk (SSD) drive, a NOR flash memory drive, or others. Each RAID controller and the connected or coupled drives form a RAID group. In some embodiments, two or more drives (n>=2) may be configured to RAID 1 to consist of data mirroring, without parity or striping. Data is written identically to the two drives, thereby producing a mirrored set of drives. Any read request can be serviced by any drive in the set. In alternative embodiments, two or more drives (n>=2) may be configured to RAID 2 to consist of bit-level striping with dedicated Hamming-code parity. All disk spindle rotation is synchronized and data is striped such that each sequential bit is on a different drive. Hamming-code parity is calculated across corresponding bits and stored on at least one parity drive. In still alternative embodiments, three or more drives (n>=3) may be configured to RAID 5 to consist of chunk-level striping with distributed parity. Parity information is distributed among the drives, requiring all drives but one to be present to operate. Upon failure of a single drive, subsequent reads can be calculated from the distributed parity such that no data is lost. In still alternative embodiments, four or more drives (n>=4) may be configured to RAID 6 to consist of chunk-level striping with double distributed parity. Parity information is distributed among the drives, requiring all drives but two to be present to operate. Double parity provides fault tolerance up to two failed drives. The SSD drive may contain NAND flash cells, e.g., single-level cells (SLCs), multi-level cells (MLCs), triple-level cells (TLCs) or quad-level cells (QLCs), to store data. Each RAID controller may include one or more ports having I/O interface circuitry that couples or connects to the drives. The processing unit 110 may communicate with each RAID controller through a standard protocol, such as USB (Universal Serial Bus), ATA (Advanced Technology Attachment), SATA (Serial ATA), PCI-E (Peripheral Component Interconnect Express) or others. The RAID controller may communicate with the coupled or connected drives using a Double Data Rate (DDR) protocol, such as Open NAND Flash Interface (ONFI), DDR toggle, or others.
In alternative embodiments, the RAID controller may be implemented by software program. In such embodiments, the processing unit 110 may have knowledge of the physical organization of data and parity information within each RAID group. The RAID controllers 180-1 to 180-m, assuming they are hardware RAID controller, may be removed from the system architecture shown in
A failover process may be performed upon one drive has failed physically. The failed drive is disconnected from a RAID group and a new drive is added and connected to the RAID group to provide storage services in replacement of the failed one. Then, a file system run on the processing unit 110 may initiate a RAID rebuild process to calculate and write data or parity information into each chunk of the added drive according to data or a combination of data and parity information of the other drives stipe-by-stripe.
To improve the error tolerance capacity, a new drive may be added to a RAID 5 group to serve and the RAID 5 group is converted to a RAID 6 group. Then, a file system run on the processing unit 110 may initiate a RAID rebuild process to calculate parity information according to the associated data of the other drives and write the parity information into, or move relevant data from a specified drive to each chunk of the new drive stripe-by-stripe.
To increase the data storage capacity, a new drive may be added to a RAID 5 group to serve this purpose. Then, a user may interact with an UI (User Interface) to trigger a RAID expansion process. The RAID expansion process may rearrange and store each chunk data in a specified chunk of a specified drive, and recalculate and store each parity information in a specified chunk of a specified drive according to the associated data stripe-by-stripe.
Storage Space fragmentation may occur when unused space, file system metadata, operating system metadata, or a single file are not contiguous. For example, a file system may allocate unused space for the data and its metadata when a file is created. The space they were allocated may be released for use by other files as files are deleted. When a file is created and there is not an area of contiguous space available for its initial allocation the space must be assigned in fragments. When a file or the metadata of the file system is modified to become larger it may exceed the space initially allocated to it. Additional space may be assigned elsewhere and the file or the metadata of the file system becomes fragmented. Following the case illustrated in
The RAID reconstruction process may include parallelly executed procedures: an unused-space scan and a stripe reconstruction. To shorten the reconstruction time, the unused-space scan procedure may scan unused-region information (may be represented in logical addresses) to determine which logical address range/ranges (hereinafter may also be referred to address range/ranges for brevity) that is/are candidate/candidates to be skipped for a RAID group and send hint requests with the logical address ranges to the stripe reconstruction procedure. Embodiments of the invention may introduce a stripe-by-stripe scheme to conduct a RAID reconstruction that is used in the stripe reconstruction procedure for calculating data or parity information and performing necessary data or parity movements between the drives of the RAID group. For example, the stripes 230-1, 230-2, and so on, are sequentially processed by the stripe reconstruction procedure. The stripe reconstruction procedure may continuously collect the logical address ranges sent from the unused-space scan procedure, determine which stripes of the drives of the RAID group are to be skipped from being reconstructed according to the collected logical address ranges, omit reconstructions to the determined stripes and reconstruct all rather than the determined stripes.
The aforementioned RAID reconstruction process may be applied in several software configurations depending on different hardware settings.
The software configuration 510 may be employed in hardware environment that includes one RAID group. A RAID manager 529 may be used to perform a RAID reconstruction process in coordination with one file system 521. The file system 521 and the RAID manager 529 may be composed of software instructions with relevant data abstracts and can be loaded and executed by the processing unit 110 in a multitasking environment or in parallel executions of multiple tasks. Each of the file system 521 and the RAID manager 529 may include one or more software modules for performing designated operations. The RAID manager 529 may translate a logical address of a request sent by the file system 521 into a physical location and drive an associated RAID controller to perform a data access, such as a data read, write, movement, or others, on the physical location according to the request. In alternative embodiments, the RAID manager 529 may directly drive relevant drive(s) to perform a data access after the address translation so that the RAID controllers (for example, hardware-type RAID controllers) are absent from the system architecture. The file system 521 may implement an unused-space scan procedure while the RAID manager 529 may implement a stripe reconstruction procedure. The RAID manager 529 may send commands to drive a RAID controller of a RAID 1, 2, 5 or 6 group for reconstructing one or more stripes.
The software configuration 530 may be employed in hardware environment including one RAID group. Two file systems 541 and 543 may be employed in the same operating system (OS) or different OS, such as Microsoft Windows, and Linux. Each of the file systems 541 and 543 may implement an unused-space scan procedure. The partition converter 549 may assign an exclusive logical address range (hereinafter referred to as a visible address range) to each file system that is mapped to a respective portion of the storage space of the RAID group. The partition converter 549 may add an offset to a logical address sent from the file system 543, so as to convert the logical address to one of the visible address range. For example, suppose that a logical address range between 0 and 2047 is assigned to the file system 541 while a logical address range between 2048 and 4095 is assigned to the file system 543: For dealing with a data read request with a logical address 1000 from the file system 543, the partition converter 547 may add the offset 2048 to the address 1000 to become a new address 3048. The RAID manager 549 may translate a logical address of a request sent by the partition converter 547 into a physical location and drive an associated RAID controller to perform a data access operation, such as a data read, write, movement, or others, on the physical location according to the request.
In alternative embodiments that the RAID controllers are absent from the system architecture, the RAID manager 549 may directly drive relevant drive(s) to perform a data access after the address translation. The file systems 541 and 543, the partition converter 547 and the RAID manager 549 may be composed of software instructions with relevant data abstracts and can be loaded and executed by the processing unit 110 in a multitasking environment or in parallel executions of multiple tasks. Each of the file systems 541 and 543 may implement an unused-space scan procedure in coordination with the partition converter 547 for determining unused address ranges. The RAID manager 529 may implement a stripe reconstruction procedure, in which collects unused address ranges from the partition converter 547, translates the unused address ranges into unused-stripes and skips the unused-stripes from being reconstructed. Each of the file systems 541 and 543, the partition converter 547, and the RAID manager 549 may be implemented in one or more software modules for performing designated operations. The partition converter 547 may be referred to as an intermediary layer. The RAID manager 549 may send commands to drive the associated RAID controller of a RAID 1, 2, 5 or 6 group for reconstructing one or more stripes. In alternative embodiments, the RAID manager 549 may directly drive relevant drive(s) for reconstructing one or more stripes so that the RAID controllers (for example, hardware-type RAID controllers) are absent from the system architecture.
The software configuration 550 may be employed in hardware environment including three RAID groups managed by the RAID managers 585, 587 and 589, respectively. Any RAID group may be configured as RAID 1, 2, 5 or 6. The partition converter 579 may mange a visible address range that is associated with a portion of storage space of a first RAID group implemented in HD drives through the RAID manager 585 while the other portion thereof is not used or assigned. The partition converter 579 may mange a visible address range that is associated with a portion of storage space of a second RAID group implemented in HD drives through the RAID manager 587 while the other portion thereof is not used or assigned. The RAID manager 589 may manage a third RAID group implemented in SSD drives for providing fast-access capability. Two file systems 561 and 563 may be employed in the same or different OS. The file system 561 may implement an unused-space scan procedure with the partition converter 579 and the operations are similar with that of the file system 541 with the partition converter 547. The cache controller 575 may detect frequently assessed data (hereinafter referred to as hot data) of the HD drives and advise a cache controller 575 to copy the hot data from the HD drives and write the copied data in the SSD drives as a cache mirror in coordination with the partition converter 579. The frequently assessed data may be defined as that has been assessed from the HD drives over a predefined number of times for the last time period, for example, the last n minutes, hours, days, months, or others, where n is a positive integer. For the newly detected hot data, the cache controller 575 may send a data read request with a logical address range indicated by the file system 563 to the partition converter 579 to obtain the hot data and send a data write request with the hot data to the RAID manager 589. After the hot data has been written successfully, the RAID manager 589 may respond to a logical address range corresponding to third RAID group. The cache controller 575 may maintain a cache table storing mappings between the logical addresses associated with the second and third RAID groups, respectively, for the hot data. In an embodiment, the hot data may need to write back to the HD drives. For example, the hot data stored in the SSD drives may be updated first, and the corresponding hot data stored in the HD drives are outdated. In this situation, the hot data is only available from the SSD drives unless the data is written back to the HD drives. For writing back the hot data, the cache controller 575 may send a data write request with a logical address range of the second RAID group indicated by the file system 563 to the partition converter 579 to update the data into HD drives. In another embodiment, when the hot data is updated, the hot data is updated to the SSD drives and the HDD drives approximately at the same time. In this situation, the cache controller 575 may send a data write request with a logical address range of the second RAID group indicated by the file system 563 to the partition converter 579 to write the hot data into HD drives and obtain a logical address range of the third RAID group according to the mappings of the cache table and send a data write request with the logical address range of the third RAID group to the RAID manager 589 to write the hot data into SSD. The file system 563 may implement an unused-space procedure with the cache controller 575 and the partition converter 579. The partition converter 579 may add an offset to a logical address indicated by the file system 561 or 563, so as to convert the logical address to one of the assigned address range. The offset may be set to zero if no conversion needs to perform.
The file systems 561 and 563, the cache controller 575, the partition converter 579, and the RAID managers 585, 587 and 589 may be composed of software instructions with relevant data abstracts and can be loaded and executed by the processing unit 110 in a multitasking environment or in parallel executions of multiple tasks. The file system 561 may implement the unused-space scan procedure in coordination with the partition converter 579 for determining unused address ranges. The file system 563 may perform similar scans in coordination with the partition converter 579 for determining unused address ranges. The cache controller 575 may implement an unused-space scan procedure to determine unused address ranges by searching the cache table. Each of the RAID managers 585 and 587 may implement a stripe reconstruction procedure, in which collects unused address ranges from the partition converter 579, translates the unused address ranges into unused-stripes and skips the unused-stripes from being reconstructed. The RAID manager 589 may implement a stripe reconstruction procedure to collect unused address ranges from the cache controller 575, translate the unused address ranges into unused-stripes and skip the unused-stripes from being reconstructed. Each of the file systems 561 and 563, the cache controller 575, the partition converter 579, and the RAID managers 585, 587 and 589 may be implemented in one or more software modules for performing designated operations. The cache controller 575 and the partition converter 579 may be referred to as an intermediary layer collectively. Each of the first to third RAID groups may be a RAID 1, 2, 5 or 6 group. In an embodiment, the RAID managers 585, 587 and 589 may send commands to drive the hardware-type RAID controllers associated with the first to third RAID groups, respectively, for reconstructing one or more stripes. In an alternative embodiment, the hardware-type RAID controllers are absent from the system architecture, and each of the RAID managers 585, 587 and 589 may be considered as software-type RAID controllers and can directly drive relevant drive(s) for reconstructing one or more stripes.
The unused-space scan procedure is compute-bound involving heavy calculations performed by the processing unit 110 while the stripe reconstruction procedure is IO-bound that predominantly uses peripherals, such as the HD, SSD drives, etc. Since the modules, such as the assembly of the file system 521 and the RAID manager 529, the assembly of the file systems 541 and 543, the partition converter 545 and the RAID manager 549, the assembly of the file systems 561 and 563, the cache controller 575, the partition converter 579 and the RAID managers 585, 587 and 589, etc., may be run in a multitasking environment or in parallel executions of multiple tasks, the unused-space scan and the stripe reconstruction procedures can be realized parallelly to improve the overall performance. At least two processing units may be required to execute multiple tasks in parallel.
Any of the file systems 521, 541, 543, 561 and 563 may be, but not limited to, NTFS (New Technology File System), FAT (File Allocation Table), exFAT (extended File Allocation Table), ext4 (extended file system 4), or Btrfs (B-tree file system). The file system may organize files and directories and keep track of which regions of the storage media belong to which file and which regions thereof are not been used. Note that the file system run on the processing unit 110 may provide an API (Application Programming Interface) to interact with an application to perform file operations, such as a file open, close, read or write, a RAID reconstruction, etc. The application may provide a man-machine interface (MMI) including graphical user interface (GUI) displayed on the display unit 120 and the input devices 130 that handles human-machine interaction. A user may operate the MMI to trigger a RAID reconstruction process.
The file system 630 may include a FS unused-scanner 635 implementing an unused-space scan procedure. The file system 630 may update unused-region information stored in the memory 150 each time a portion of unused space has been allocated for a file, or a portion of used space has been released for use by other files. The unused-region information may periodically be flushed to the storage device 140, so as to be recovered from the storage device 140 once an unexceptional power down or off occurs. Or, the unused-region information may be flushed on demand. The FS unused-scanner 635 determines the logical address range/ranges that is/are candidates to be skipped by searching the unused-region information. In alternative embodiments, a plug-in scanner, which is composed of software instructions or program code with relevant data abstracts and is developed by a third party, may be downloaded from a server through Internet and may coordinate with the file system 630 in execution by the processing unit 110 to obtain the unused-region information. The unused-space scan procedure may be implemented in the plug-in scanner to request the file system 630 for the unused-region information, obtain the unused-region information from replied results sent by the file system 630 and determine the logical address range/ranges of the obtained unused-region information that is/are candidates to be skipped. The unused-region information may be implemented in a table, a tree, a bitmap, or any combinations thereof, or others.
The following introduces an exemplary implementation combining a table with bitmaps. Table 1 shows an exemplary combination:
Each entry of Table 1 may store information about continuous free space represented by a start address and a length (such as a number of blocks, sectors, bytes, etc.) or a linkage to a bitmap associated with an address range. The entries may be sorted in an ascending or descending order according to their start addresses. If a continuous space is fragmented and messy, the file system 630 may use a bitmap to record that each data unit of the address range, such as a block, a sector, etc., is free or occupied. A bitmap flag of each entry indicates whether a bitmap is used to represent the free space of the associated address. If so, the bitmap flag is set to one, otherwise, to zero. For example, a bitmap is used to represent the free space of the 128 sectors from address 1100. The bitmap may include a bit sequence of 128 bits, in which each bit being 0 indicates that the corresponding data unit is unused while being 1 indicates that the corresponding data unit has been occupied. The unused regions include 256 sectors from the address 0, 20 sectors from the address 800, 256 sectors from the address 1300 and 256 sectors from the address 1700.
The unused-region information, in alternative information, may be implemented in a large bitmap including a bit sequence of n bits, where n represents a total amount of data units that the file system 630 manages.
In alternative embodiments, the intermediary layer 650 may include an intermediary unused-scanner 655 implementing an unused-space scan procedure. The intermediary layer 650 may be any partition converter as shown in
Once a hint request is received, a handler of the RAID manager 670, or others, may be triggered to mark unused stripes.
The cells are associated with the chunks A1 to D3 in sequence. For example, when an address range of a hint request is translated into the chunks A3 to D1, the exemplary partial RAID bitmap of Table 3 is modified to become Table 3:
The cell associated with each of the chunks A3 to D1 is set to 0. After that, a stripe bitmap is updated according to the RAID bitmap. Each cell of the stripe bitmap stores a value indicating whether an associated stripe is used, where “1” represents that the associated stripe is used, otherwise, is unused. Each cell is initially set to 1. Table 4 shows an exemplary partial stripe bitmap that is generated according to the RAID bitmap as shown in Table 3:
Since the chunks A1, A2, D2 and D3 are used, the stripes 230-1 and 230-4 cannot be marked as unused that are indicated in the first and fourth cells. Conversely, the stripes 230-2 and 230-3 are marked as unused that are indicated in the second to third cells because all data chunks of the stripes are unused. Note that those artisans may modify the stripe bitmap to a different data structure, such as a tree, a linked list, etc., to convey the unused-stripe information, and the invention should not be limited thereto.
The RAID manager 670 may implement a stripe reconstruction procedure for skipping unused stripes with references made to the hint requests sent by the upper layer(s) and reconstructing all the other stripes.
Embodiments of the invention introduce a method for activating the stripe reconstruction and the unused-space scan procedures.
Although embodiments of the invention describe that the application 610, the FS unused-scanner 635, the intermediary unused-scanner 655 and the RAID manager 670 are run by the same processing unit 110, those artisans may devise the software deployment to install the application 610 in a remote client rather than being bundled with the FS unused-scanner 635, the intermediary unused-scanner 655 and the RAID manager 670. The application 610 may start the stripe reconstruction procedure of the RAID manager 670, and the unused-space scan procedures of the FS unused-scanner 635 and the intermediary unused-scanner 655 through a remote procedure call (RPC), or others.
An embodiment of the invention introduces network architecture containing clients and a storage server that can enable location-independent data storage and retrieval.
With the capacity of a storage server being shared by multiple clients, the software configuration 530 as shown in
The file system may be run on each remote client while the partition converter 547 and the RAID manager 549 may be run on the storage server 1310. Each file system may update unused-region information stored in a memory each time a portion of unused space has been allocated for a file, or a portion of used space has been released for use by other files. In some embodiments, each file system may include a FS unused-scanner implementing an unused-space scan procedure to determine the logical address range/ranges that is/are candidates to be skipped by searching the unused-region information. The detailed operations may refer to relevant descriptions of the FS unused-scanner 635 and are omitted for brevity. In alternative embodiments, a plug-in scanner, which is composed of software instructions or program code with relevant data abstracts and is developed by a third party, may be downloaded from a server through Internet and may coordinate with a file system in execution to obtain the unused-region information. The unused-space scan procedure may be implemented in the plug-in scanner to request the file system for the unused-region information, obtain the unused-region information from replied results sent by the file system and determine the logical address range/ranges of the obtained unused-region information that is/are candidates to be skipped. A hint request with an unused address range generated by the FS unused-scanner or the plug-in scanner is encapsulated in a SCSI command and the SCSI command is sent to the storage server 1310 through the networks 1320. The partition converter 549 may obtain the hint request with the unused address range from the SCSI commands sent from the clients, convert each logical address of the hint requests to one of the corresponding visible address range according to which client issues the SCSI command and send the converted hint request to the stripe reconstruction procedure of the RAID manager 549. The stripe reconstruction procedure may continuously collect the converted logical address ranges with the hint requests, determine which stripes of the drives of the RAID group are to be skipped from being reconstructed according to the collected logical address ranges, omit reconstructions to the determined stripes and reconstruct all rather than the determined stripes.
Moreover, the aforementioned adaptations to the unused-space scan procedure and the stripe reconstruction procedure to conform to the network architecture that storage capacity of the storage server 1310 shared by multiple clients 1330_1 to 1330_n may also be applied in the software configurations 550 with analogous modifications for a RAID rebuild, conversion or expansion process, or others.
With the capacity of the storage server 1310 being accessed by a single client, the software configuration 510 as shown in
The unused-space scan procedure and the strip reconstruction procedure may be applied in a distributed replicated storage system, such as Distributed Replicated Block Device (BRBD) for a RAID rebuild, conversion or expansion process, or others.
The intermediary layer 650_1, the RAID manager 670_1 and the device driver 690_1 run on the secondary node 1500_1 are identical to the intermediary layer 650_0, the RAID manager 670_0 and the device driver 690_0, respectively. The file system 1530 is run on the primary node 1500_0 when the primary node 1500_0 is operated in an active mode. The file system 1530 may update unused-region information stored in a memory each time a portion of unused space has been allocated for a file, or a portion of used space has been released for use by other files. In some embodiments, the file system 1530 may include a FS unused-scanner implementing an unused-space scan procedure to determine the logical address range/ranges that is/are candidates to be skipped by searching the unused-region information. The detailed operations may refer to relevant descriptions of the FS unused-scanner 635 and are omitted for brevity. In alternative embodiments, a plug-in scanner, which is composed of software instructions or program code with relevant data abstracts and is developed by a third party, may be downloaded from a server through Internet and may coordinate with the file system 1530 in execution to obtain the unused-region information. The unused-space scan procedure may be implemented in the plug-in scanner to request the file system 1530 for the unused-region information, obtain the unused-region information from replied results sent by the file system 1530 and determine the logical address range/ranges of the obtained unused-region information that is/are candidates to be skipped. A hint request with an unused address range generated by the FS unused-scanner 1530 or the plug-in scanner may be transferred to the intermediary layer 650_0 and simultaneously transmitted to intermediary layer 650_1 of the secondary node 1500_1 through the networks. In alternative embodiments, the intermediary layer 650_0 and 560_1 may be absent from the software configuration, a hint request with an unused address range may be transferred to the RAID manager 670_0 and simultaneously transmitted to RAID manager 670_1 of the secondary node 1500_1 through the networks. References made to the intermediary layers 650_0 and 650_1, the intermediary unused-scanners 655_0 and 655_1, the RAID managers 670_0 and 670_1 and the device drivers 690_0 and 690_1 may be referred to relevant passages described with
Some or all of the aforementioned embodiments of the method of the invention may be implemented in a computer program such as an operating system for a computer, a driver for a dedicated hardware of a computer, or a software application program. Other types of programs may also be suitable, as previously explained. Since the implementation of the various embodiments of the present invention into a computer program can be achieved by the skilled person using his routine skills, such an implementation will not be discussed for reasons of brevity. The computer program implementing some or more embodiments of the method of the present invention may be stored on a suitable computer-readable data carrier such as a DVD, CD-ROM, USB stick, a hard disk, which may be located in a network server accessible via a network such as the Internet, or any other suitable carrier.
The computer program may be advantageously stored on computation equipment, such as a computer, a notebook computer, a tablet PC, a mobile phone, a digital camera, a consumer electronic equipment, or others, such that the user of the computation equipment benefits from the aforementioned embodiments of methods implemented by the computer program when running on the computation equipment. Such the computation equipment may be connected to peripheral devices for registering user actions such as a computer mouse, a keyboard, a touch-sensitive screen or pad and so on.
Although the embodiment has been described as having specific elements in
While the invention has been described by way of example and in terms of the preferred embodiments, it should be understood that the invention is not limited to the disclosed embodiments. On the contrary, it is intended to cover various modifications and similar arrangements (as would be apparent to those skilled in the art). Therefore, the scope of the appended claims should be accorded the broadest interpretation so as to encompass all such modifications and similar arrangements.
This application claims the benefit of priority to U.S. Provisional Application Ser. No. 62/657,895, filed on Apr. 15, 2018; the entirety of which is incorporated herein by reference for all purposes.
Number | Date | Country | |
---|---|---|---|
62657895 | Apr 2018 | US |