System and method for creating conditional immutable objects in a storage device

A data storage system includes a storage device and a data handler that receives an object, creates metadata for the object that includes a key and an authorization, stores the object on the storage device, receives a request for the object, determines if the request includes the key, and, if the request has authorization information, permits access to the object. The data handler receives another request for the object, determines if the request includes the key, and, if the request does not have the authorization information, denies access to the object.

FIELD OF THE DISCLOSURE

This disclosure relates generally to information handling systems, and relates more particularly to conditional immutable data storage in an information handling system.

BACKGROUND

Regulatory requirements for data retention may require that certain information be maintained as immutable data at one time, but that the same information must be deleted at a later time. For example, regulations may require that employment records for an employee be stored permanently while the employee is employed, but the regulations may also require that the records be deleted within a certain time after employment ceases. An information handling system may include a Write-Once Read-Many (WORM) data storage systems to permanently retain data.

DETAILED DESCRIPTION OF DRAWINGS

An information handling system can include a data storage system. In a particular embodiment, described herein, a host processing system writes data to, and reads data from the data storage system. The data storage system provides immutable data storage functionality, mutable data storage functionality, and conditional immutable data storage functionality for the information handling system. A non-limiting example of a data storage system includes disk memory, non-volatile random access memory such as FLASH or other non-volatile storage, another data storage system, or a combination thereof.

FIG. 1illustrates a data storage system100according to an embodiment of the present disclosure, including client processing systems110and115, a data handler120, and a storage device130. Storage device130includes a storage controller132and a storage medium134, and can include other storage media (not illustrated). Client processing systems110and115are connected to data handler120, and data handler120is connected to storage device130. Client processing systems110and115are adapted to transfer data to and from storage device130over an interface such as a Small Computer System Interface (SCSI), a Peripheral Component Interconnect Express (PCI Express) interface, or another data communication interface.

Client processing systems110and115represent various users of the storage space on storage device130. As such, client processing systems110and115can include one or more applications operated on an information handling system and that utilizes storage resources while running the application. For example, client processing systems110and115can include an e-mail processing environment with applications and servers available to process and store e-mail data, a database system operating to run one or more databases, a custom application such as a medical records system or human resource record system, another operating environment, or a combination thereof. Client processing systems110and115can also include one or more end user information handling systems. For example, client processing systems110and115can represent a single information handling system operated by a single end user or shared by multiple end users, or can represent a group of information handling systems with a common usage. For example, client processing system110can represent a group of managers that have a particular level of access to employee records on a human resource record system, and client processing system115can represent a group of human resources personnel that have a different level of access to the employee records.

Data handler120represents a shared resource between client processing systems110and115and storage device130. Data handler120interacts with client processing systems110and115to process storage requests to read or write data to storage device130, and interacts with storage device130to process the requests. Data handler120receives write requests from client processing systems110and115. The write requests include an object that is to be written to storage device130. Data handler120also receives read requests from client processing systems110and115to retrieve objects that have been previously written to storage device130. Data handler120further receives delete requests from client processing systems110and115to delete objects that have been previously written to storage device130. In each case, data handler120forwards the write requests, read requests, and delete requests to storage device130. Data handling system120can be implemented as a hardware device, as a module of an information handling system, as an information handling system, or a combination thereof.

Storage device130represents a data storage device such as a direct-attached storage (DAS) system, a network-attached storage (NAS) system, a storage-area network (SAN), another storage device, or a combination thereof. Storage controller132receives the write requests, read requests, and delete requests from data handler120, takes appropriate action to store, retrieve, or delete objects from storage medium134, and provides the appropriate response back to data handler120.FIGS. 2-4include flowcharts showing how storage controller132responds to a write request200, a read request300, and a delete request400. InFIG. 2, illustrating write request200, storage controller132receives an object from data handler120in block212. The object is streamed to storage media134in block214, and the stream is written on storage media134in block216. When the object is successfully written to storage media134, a universally unique identifier (UUID) is generated by storage controller132and sent to data handler120in block218. The UUID is associated with the location where the object is stored on storage media134.

InFIG. 3, illustrating read request300, storage controller132receives a UUID in block312. The UUID is associated with the location of an object that is stored on storage media134. Storage controller132determines the location associated with the UUID and initiates a stream read from storage media134in block314. The object is read from storage media134in block316, and the object is sent to data handler120in block318.

In a particular embodiment, storage device130functions to provide immutable data storage, such that data, once written to storage media134, cannot be overwritten or deleted. For example, storage media134can be implemented as a Write-Once Read-Many (WORM) storage device. In another embodiment, storage media134can include portions of the retained data that is immutable, while other portions of the retained data remain mutable. When some or all of storage media134includes immutable data, the delete request400is performed, as illustrated inFIG. 4. Storage controller132receives a UUID from data handler120in block412. Storage controller132determines if the location associated with the UUID is immutable in decision block414. If so, then the “NO” branch of decision block414is taken, indicating that the delete request is invalid, and storage controller132indicates that the delete request resulted in a failure to data handler120in block416. If the location associated with the UUID is not immutable, then the “YES” branch of decision block414is taken, indicating that the delete request is valid, and the associated stream is deleted from storage media134in block418. Storage controller132then indicates that the delete request400resulted in a success to data handler120in block420.

In another embodiment, data handler120operates to provide three types of data storage on storage device130, including immutable data, mutable data, and conditional immutable data, in addition to flexible mechanisms of controlling access to stored data. Immutable data is data that is intended to be retained indefinitely. Thus, once immutable data is written to storage media134, subsequent modify or delete requests result in a failed request. Mutable data is data that can be overwritten or deleted. Conditional immutable data is data that is treated as immutable data in some circumstances, and treated as mutable data in other circumstances. For example, a particular object can be treated as immutable when accessed by client processing system110, but can be treated as mutable when accessed by client processing system115. In another example, a time limit can be placed on a particular object, such that before the time limit is expired, the object is immutable, but after that time the object is mutable.

FIG. 5illustrates a data object500that provides for conditional immutable data operations on data storage system100, including object content510and object metadata520. Object content510includes the content data provided from client processing systems110or115for storage in storage device130. Object metadata520is information added to data object500by data handler120that provides for keyed conditional access to data object500and for authorization of access to the functions of data storage device130. Object metadata520includes an authentication key522and an authorizations field524.

Authentication key522provides a field for authenticating access requests to object content510in data object500. Here, on creation of data object500, data handler120determines a value for authentication key522to append in object metadata520. After data object500is stored on storage device130, requests to access data object500include an authentication key that is compared with authentication key522. If the value of the provided authentication key matches the value of authentication key522, then access to data object500as given in authorization field524, described below, is granted. If the value of the provided authentication key does not match the value of authentication key522, then access to data object500is denied. For example, data handler120generates authentication key522to append with object metadata520when object content510is to be written to storage device130. For example, data handler120can generate a UUID associated with object content510, and append the UUID as authentication key522. Other examples include providing an authentication number using another securely generated identification number or other identification mechanism. In another embodiment, client systems110or115can provide an identification mechanism, a password, another means of identifying with object content510, or a combination thereof.

Authorizations field524describes the actions permitted on data object500. In a particular embodiment, authorizations field524includes one or more type authorization bit-fields526. Type authorization bit-field526includes a type field530, and operation fields540. Each operation field540includes a key enabled field542and a keyless enabled field544. Type field530indicates a particular feature or type of access to which the authorizations in operation fields540apply. For example, type field530can indicate that members of a particular group have the specified access, that access to the specified authorizations applies until a particular time, that access to the specified authorizations applies based upon another type of feature or type, or a combination thereof.

Operation fields540indicate whether or not a write access, a modify access, a read access, or a delete access is permitted when authentication key522is present, as indicated by the value of the associated key enabled field542. Operation fields540also indicate whether or not a write access, a modify access, a read access, or a delete access is permitted when authentication key522is not present, as indicated by the value of the associated keyless enabled field544. In a particular embodiment, a logic “1” can indicate that the associated feature is enabled. Thus, for example, a logic value of “1000 1110” would indicate that a write operation on storage device130is permitted only with an authorization key, a modify operation is not permitted, either with or without the authorization key, a read operation is permitted with or without the authorization key, and a delete operation is only permitted with an authorization key. In another embodiment (not illustrated), object metadata in a data object can include multiple authentication keys and multiple authorizations, thus different authorizations can be applied based upon the presence of different authentication keys.

FIGS. 6-9include flowcharts showing how data handler120sends a write request600, a modify request700, a read request800, and a delete request900to storage device130, and the actions taken to store, modify, retrieve, or delete objects from storage medium134. InFIG. 6, illustrating write request600, storage controller132receives an object including object data and object metadata from data handler120in block612. The object is streamed to storage media134in block614, and the stream is written on storage media134in block616. When the object is successfully written to storage media134, a UUID is generated and sent to data handler120in block618.

InFIG. 7, illustrating modify request700, data handler120sends a UUID to storage controller132in block712. The UUID may or may not include an authentication key. In response to receiving the UUID, storage controller132streams the metadata from the object associated with the UUID to data handler120in block714. A decision is made as to whether or not the key provided in the UUID matches the key in the metadata in decision block716. If not, the “NO” branch of decision block716is taken, and a modify failure is indicated in block724. If the key provided in the UUID matches the key in the metadata, the “YES” branch of decision block716is taken, and a decision is made as to whether a modification to the object is authorized in decision block718. If not, the “NO” branch of decision block718is taken, and a modify failure is indicated in block724. If a modification to the object is authorized, the “YES” branch of decision block718is taken, the object is modified on storage media in block720, and a modify success is indicated in block722.

InFIG. 8, illustrating read request800, data handler120sends a UUID to storage controller132in block812. The UUID may or may not include an authentication key. In response to receiving the UUID, storage controller132streams the metadata from the object associated with the UUID to data handler120in block814. A decision is made as to whether or not the key provided in the UUID matches the key in the metadata in decision block816. If not, the “NO” branch of decision block816is taken, and a read failure is indicated in block826. If the key provided in the UUID matches the key in the metadata, the “YES” branch of decision block816is taken, and a decision is made as to whether a read of the object is authorized in decision block818. If not, the “NO” branch of decision block818is taken, and a read failure is indicated in block824. If a read of the object is authorized, the “YES” branch of decision block818is taken, the object is read from storage media in block820, and a read success is indicated in block822.

InFIG. 9, illustrating delete request900, data handler120sends a UUID to storage controller132in block912. The UUID may or may not include an authentication key. In response to receiving the UUID, storage controller132streams the metadata from the object associated with the UUID to data handler120in block914. A decision is made as to whether or not the key provided in the UUID matches the key in the metadata in decision block916. If not, the “NO” branch of decision block916is taken, and a delete failure is indicated in block924. If the key provided in the UUID matches the key in the metadata, the “YES” branch of decision block916is taken, and a decision is made as to whether a deletion of the object is authorized in decision block918. If not, the “NO” branch of decision block918is taken, and a delete failure is indicated in block924. If a delete of the object is authorized, the “YES” branch of decision block918is taken, the object is deleted from storage media in block920, and a delete success is indicated in block922.

In a particular embodiment, an information handling system can be used to carry out one or more of the methods described above. In another embodiment, one or more of the systems described above can be implemented in the form of an information handling system.FIG. 10illustrates a functional block diagram of an embodiment of an information handling system, generally designated as1000. Information handling system1000includes processor1010, a chipset1020, a memory1030, a graphics interface1040, an input/output (I/O) interface1050, a disk controller1060, a network interface1070, and a disk emulator1080.

Processor1010is coupled to chipset1020. Chipset1020supports processor1010, allowing processor1010to process machine-executable code. In a particular embodiment (not illustrated), information handling system1000includes one or more additional processors, and chipset1020supports the multiple processors, allowing for simultaneous processing by each of the processors, permitting the exchange of information between the processors and the other elements of information handling system1000. Processor1010can be coupled to chipset1020via a unique channel, or via a bus that shares information between processor1010, chipset1020, and other elements of information handling system1000.

Memory1030is coupled to chipset1020. Memory1030can be coupled to chipset1020via a unique channel, or via a bus that shares information between chipset1020, memory1030, and other elements of information handling system1000. In particular, a bus can share information between processor1010, chipset1020and memory1030. In a particular embodiment (not illustrated), processor1010is coupled to memory1030through a unique channel. In accordance with another aspect (not illustrated), an information handling system can include a separate memory dedicated to each of the processors. A non-limiting example of memory1030includes static, dynamic. Or non-volatile random access memory (SRAM, DRAM, or NVRAM), read only memory (ROM), flash memory, another type of memory, or any combination thereof.

Graphics interface1040is coupled to chipset1020. Graphics interface1040can be coupled to chipset1020via a unique channel, or via a bus that shares information between chipset1020, graphics interface1040, and other elements of information handling system1000. Graphics interface1040is coupled to a video display1044. Other graphics interfaces (not illustrated) can also be used in addition to graphics interface1040if needed or desired. Video display1044can include one or more types of video displays, such as a flat panel display or other type of display device.

I/O interface1050is coupled to chipset1020. I/O interface1050can be coupled to chipset1020via a unique channel, or via a bus that shares information between chipset1020, I/O interface1050, and other elements of information handling system1000. Other I/O interfaces (not illustrated) can also be used in addition to I/O interface1050if needed or desired. I/O interface1050is coupled to one or more add-on resources1054. Add-on resource1054is connected to a storage device1056, and can also include another data storage device, a graphics interface, a network interface card (NIC), a sound/video processing card, another suitable add-on resource or any combination thereof.

Network interface device1070is coupled to I/O interface1050. Network interface1070can be coupled to I/O interface1050via a unique channel, or via a bus that shares information between I/O interface1050, network interface1070, and other elements of information handling system1000. Other network interfaces (not illustrated) can also be used in addition to network interface1070if needed or desired. Network interface1070can be a network interface card (NIC) disposed within information handling system1000, on a main circuit board (e.g., a baseboard, a motherboard, or any combination thereof), integrated onto another component such as chipset1020, in another suitable location, or any combination thereof. Network interface1070includes a network channel1072that provide interfaces between information handling system1000and other devices (not illustrated) that are external to information handling system1000. Network interface1070can also include additional network channels (not illustrated).

Disk controller1060is coupled to chipset1010. Disk controller1060can be coupled to chipset1020via a unique channel, or via a bus that shares information between chipset1020, disk controller1060, and other elements of information handling system1000. Other disk controllers (not illustrated) can also be used in addition to disk controller1060if needed or desired. Disk controller1060can include a disk interface1062. Disk controller1060can be coupled to one or more disk drives via disk interface1062. Such disk drives include a hard disk drive (HDD)1064or an optical disk drive (ODD)1066(e.g., a Read/Write Compact Disk (R/W-CD), a Read/Write Digital Video Disk (R/W-DVD), a Read/Write mini Digital Video Disk (R/W mini-DVD), or another type of optical disk drive), or any combination thereof. Additionally, disk controller1060can be coupled to disk emulator1080. Disk emulator1080can permit a solid-state drive1084to be coupled to information handling system1000via an external interface1082. The external interface1082can include industry standard busses (e.g., USB or IEEE 1384 (Firewire)) or proprietary busses, or any combination thereof. Alternatively, solid-state drive1084can be disposed within information handling system1000.

In the embodiments described above, an information handling system can include any instrumentality or aggregate of instrumentalities operable to compute, classify, process, transmit, receive, retrieve, originate, switch, store, display, manifest, detect, record, reproduce, handle, or use any form of information, intelligence, or data for business, scientific, control, entertainment, or other purposes. For example, an information handling system can be a personal computer, a PDA, a consumer electronic device, a network server or storage device, a switch router, wireless router, or other network communication device, or any other suitable device and can vary in size, shape, performance, functionality, and price. The information handling system can include memory (volatile (e.g. random-access memory, etc.), nonvolatile (read-only memory, flash memory etc.) or any combination thereof), one or more processing resources, such as a central processing unit (CPU), a graphics processing unit (GPU), hardware or software control logic, or any combination thereof. Additional components of the information handling system can include one or more storage devices, one or more communications ports for communicating with external devices, as well as, various input and output (I/O) devices, such as a keyboard, a mouse, a video/graphic display, or any combination thereof. The information handling system can also include one or more buses operable to transmit communications between the various hardware components. Portions of an information handling system may themselves be considered information handling systems.

When referred to as a “device,” a “module,” or the like, the embodiments described above can be configured as hardware. For example, a portion of an information handling system device may be hardware such as, for example, an integrated circuit (such as an Application Specific Integrated Circuit (ASIC), a Field Programmable Gate Array (FPGA), a structured ASIC, or a device embedded on a larger chip), a card (such as a Peripheral Component Interface (PCI) card, a PCI-express card, a Personal Computer Memory Card International Association (PCMCIA) card, or other such expansion card), or a system (such as a motherboard, a system-on-a-chip (SoC), or a stand-alone device). The device or module can include software, including firmware embedded at a device, such as a Pentium class or PowerPC™ brand processor, or other such device, or software capable of operating a relevant environment of the information handling system. The device or module can also include a combination of the foregoing examples of hardware or software. Note that an information handling system can include an integrated circuit or a board-level product having portions thereof that can also be any combination of hardware and software.