Performing direct data manipulation on a storage device
First Claim
1. A method, comprising:
- receiving at a storage server a repacking command in a network storage communication protocol, from a client device executing a host application, the repacking command having been generated at the client device by the client device having incorporated a plurality of ordered instructions into the repacking command, the repacking command identifying a source data set and a destination data set stored at the storage server, the source data set occupying a plurality of file system level segments,wherein each of the plurality of instructions includes instructions to manipulate the destination data set using at least one of the plurality of file system level segments of the source data set at the storage server, and each instruction includes information identifying at least one of the file system level segments in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments of the source data set from the repacking command;
wherein the destination data set is a copy of the source data set and the repacking command causes the storage server to reclaim unused storage space, such that the destination data set occupies a smaller number of segments than the source data set;
accessing at the storage server the plurality of instructions in the repacking command;
reordering the plurality of instructions in the storage server to improve a performance of the plurality of instructions;
manipulating the destination data set using at least one of the file system level segments of the source data set at the storage server in response to receiving the repacking command, without transferring data of the destination data set or the source data set to the client device, by executing the plurality of instructions in the storage server, wherein the manipulating comprises;
for each instruction;
retrieving the at least one of the file system level segments of the source data set from a storage media of the storage server;
inserting data of the at least one of the file system level segments of the source data set to the destination data set stored in the storage server; and
in an event the repacking command includes an instruction to remove a file system level segment of destination data set, removing the file system level segment from the destination data set stored in the storage server; and
sending a result of the repacking command from the storage server to the client device.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and system for performing data manipulation on a storage device is disclosed. A data manipulation command is created on a computing device, wherein the computing device is separate from the storage device. The computing device is a client or a server that requests services of a storage system to store data on a storage medium. The computing device and the storage device are connected over a network. The computing device executes a host application, and its data is stored on the medium. The computing device issues a command to the storage device to be performed on the data. The storage device executes the command and sends the result to the computing device. As a result, the data is not sent to the computing device for manipulation.
-
Citations
36 Claims
-
1. A method, comprising:
-
receiving at a storage server a repacking command in a network storage communication protocol, from a client device executing a host application, the repacking command having been generated at the client device by the client device having incorporated a plurality of ordered instructions into the repacking command, the repacking command identifying a source data set and a destination data set stored at the storage server, the source data set occupying a plurality of file system level segments, wherein each of the plurality of instructions includes instructions to manipulate the destination data set using at least one of the plurality of file system level segments of the source data set at the storage server, and each instruction includes information identifying at least one of the file system level segments in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments of the source data set from the repacking command; wherein the destination data set is a copy of the source data set and the repacking command causes the storage server to reclaim unused storage space, such that the destination data set occupies a smaller number of segments than the source data set; accessing at the storage server the plurality of instructions in the repacking command; reordering the plurality of instructions in the storage server to improve a performance of the plurality of instructions; manipulating the destination data set using at least one of the file system level segments of the source data set at the storage server in response to receiving the repacking command, without transferring data of the destination data set or the source data set to the client device, by executing the plurality of instructions in the storage server, wherein the manipulating comprises; for each instruction; retrieving the at least one of the file system level segments of the source data set from a storage media of the storage server; inserting data of the at least one of the file system level segments of the source data set to the destination data set stored in the storage server; and in an event the repacking command includes an instruction to remove a file system level segment of destination data set, removing the file system level segment from the destination data set stored in the storage server; and sending a result of the repacking command from the storage server to the client device. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method, comprising:
-
receiving at a storage server a repacking command from a client over a network, the repacking command having been generated by the client and including information identifying a source file at the storage server and a destination file stored at the storage server, the repacking command further including a plurality of ordered instructions; wherein each of the plurality of instructions includes instructions to manipulate the destination file using at least one of a plurality of file system level segments for the storage server, and each instruction includes information identifying at least one of the plurality of file system level segments to copy from the source file to the destination file in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments from the repacking command; wherein the destination file is a copy of the source file and the repacking command causes the storage server to reclaim unused storage space, such that the destination file occupies a smaller number of segments than the source file; and at the storage server, copying file system level segments identified in the information from the source file to the destination file, in response to the plurality of instructions, without transferring any portion of the source file or the destination file to the client, wherein the copying comprises; accessing at the storage server the plurality of instructions in the repacking command; reordering the plurality of instructions in the storage server to improve a performance of the plurality of instructions; manipulating the destination file using at least one of the file system level segments of the source file at the storage server in response to receiving the repacking command, without transferring data of the destination file or the source file to the client device, by executing the plurality of instructions in the storage server, wherein the manipulating comprises; for each instruction; retrieving the at least one of the file system level segments of the source file from a storage media of the storage server; inserting data of the at least one of the file system level segments of the source file to the destination file stored in the storage server; and in an event the repacking command includes an instruction to remove a file system level segment of destination file, removing the file system level segment from the destination file stored in the storage server; and sending a result of the repacking command from the storage server to the client. - View Dependent Claims (8, 9, 10, 11, 12, 13, 14, 15, 16, 17)
-
-
18. A storage server, comprising:
-
a storage adapter through which to access a set of storage media of the storage server; a network adapter through which to receive a network file system protocol repacking command over a network from a client, the repacking command having been generated by the client to include information identifying a source file at the storage server and a destination file stored at the storage server, the repacking command further including a plurality of ordered instructions; wherein each of the plurality of instructions includes instructions to manipulate the destination file using at least one of a plurality of file system level segments for the storage server, and each instruction includes information identifying at least one of the plurality of file system level segments for the storage server to copy from the source file to the destination file in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments from the repacking command, wherein the destination file is a copy of the source file and the repacking command causes the storage server to reclaim unused storage space, such that the destination file occupies a smaller number of segments than the source file; and a processor coupled to the storage adapter and the network adapter and configured to copy file system level segments identified in the information in the command from the source file to the destination file at the storage server, in response to the plurality of instructions without transferring any portion of the source file or the destination file to the client, wherein the copying comprises; access at the storage server the plurality of instructions in the repacking command; reorder the plurality of instructions in the storage server to improve a performance of the plurality of instructions; manipulate the destination file using at least one of the file system level segments of the source file at the storage server in response to receiving the repacking command, without transferring data of the destination file or the source file to the client, by executing the plurality of instructions in the storage server, wherein the manipulating comprises; for each instruction; retrieving the at least one of the file system level segments of the source data set from a storage media of the storage server; inserting data of the at least one of the file system level segments of the source data set to the destination data set stored in the storage server; and in an event the repacking command includes an instruction to remove a file system level segment of destination data set, removing the file system level segment from the destination data set stored in the storage server; and send a result of copying the file system level segments identified in the list to said client. - View Dependent Claims (19, 20)
-
-
21. A storage server, comprising:
-
a storage adapter through which to access a set of storage media of the storage server; a network adapter through which to receive a repacking command identifying a source data set and a destination data set stored at the storage server from a client via a network, the repacking command having been generated by the client, by the client having incorporated a plurality of ordered instructions into the repacking command, the source data set occupying a plurality of file system level segments, and each instruction includes information identifying at least one of the file system level segments in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments of the source data set from the repacking command, wherein the destination data set is a copy of the source data set and the repacking command causes the storage server to reclaim unused storage space, such that the destination data set occupies a smaller number of segments than the source data set; and a processor coupled to the storage adapter and the network adapter and configured to control the storage server to provide network storage services to the client, including controlling the storage server to accessing the plurality of instructions in the repacking command; reordering the plurality of instructions in the storage server to improve a execution of the repacking command; and manipulating the destination data set using at least one of the file system level segments of the source data set at the storage server in response to the repacking command, without transferring data of the destination data set or the source data set to the client, by executing the plurality of instructions, wherein the manipulating comprises; for each instruction; retrieving the at least one of the file system level segments of the source data set from a storage media of the storage server; inserting data of the at least one of the file system level segments of the source data set to the destination data set stored in the storage server; and in an event the repacking command includes an instruction to remove a file system level segment of destination data set, removing the file system level segment from the destination data set stored in the storage server; and sending a result of the repacking command from the storage server to the client device. - View Dependent Claims (22, 23, 24, 25, 26, 27, 28)
-
-
29. A method, comprising:
-
creating in a client device a network storage communication protocol repacking command for a storage server that provides network storage services to the client device, by the client device incorporating into the repacking command a plurality of ordered instructions to be executed by the storage server, the repacking command identifying a source data set and a destination data set managed by the storage server, the source data set occupying a plurality of file system level segments at the storage server, wherein each instruction includes information identifying at least one of the file system level segments in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments of the source data set from the repacking command; wherein the destination data set is a copy of the source data set and the repacking command causes the storage server to reclaim unused storage space, such that the destination data set occupies a smaller number of segments than the source data set; sending the repacking command from the client device over a network to the storage server, to cause the storage server to access the plurality of instructions in the repacking command and manipulate the destination data set using at least one of the file system level segments according to the plurality of instructions; wherein the plurality of instructions are reordered in the storage server to improve a performance of the plurality of instructions; wherein the manipulating comprises; for each instruction; retrieving the at least one of the file system level segments of the source data set from a storage media of the storage server; inserting data of the at least one of the file system level segments of the source data set to the destination data set stored in the storage server; and in an event the repacking command includes an instruction to remove a file system level segment of destination data set, removing the file system level segment from the destination data set stored in the storage server; and receiving at the client device from the storage server a result of the storage server having executed the repacking command. - View Dependent Claims (30, 31, 32, 33, 34)
-
-
35. A method, comprising:
-
receiving at a storage server a repacking command in accordance with a network storage communication protocol, from a client device executing a host application, the repacking command having been generated by the client device, by the client device having incorporated a plurality of ordered instructions into the repacking command, the repacking command identifying a source data set and a destination data set stored at the storage server, the source data set occupying a plurality of file system level segments at the storage server, wherein each of the plurality of instructions includes instructions to manipulate the destination data set using at least one of the plurality of file system level segments of the source data set at the storage server, and each instruction includes information identifying at least one of the file system level segments in such a manner that no mapping function is needed to unambiguously ascertain each of said file system level segments of the source data set from the repacking command; wherein the destination data set is a copy of the source data set and the repacking command causes the storage server to reclaim unused storage space, such that the destination data set occupies a smaller number of segments than the source data set; accessing by the storage server the plurality of instructions in the repacking command; determining by the storage server a reordering of the plurality of instructions relative to an ordering of the instructions in the repacking command; reordering the plurality of instructions in the storage server according to the reordering to improve a performance of the plurality of instructions; and manipulating the destination data set using at least one of the file system level segments of the source data set at the storage server in response to receiving the repacking command, without transferring data of the destination data set or the source data set to the client device, by executing the plurality of instructions in the storage server according to the reordering, wherein the manipulating comprises; for each instruction; retrieving the at least one of the file system level segments of the source data set from a storage media of the storage server; inserting data of the at least one of the file system level segments of the source data set to the destination data set stored in the storage server; and in an event the repacking command includes an instruction to remove a file system level segment of destination data set, removing the file system level segment from the destination data set stored in the storage server; and sending a result of the repacking command from the storage server to the client device. - View Dependent Claims (36)
-
Specification