US20110179238A1 - Storage controller and storage control method for accessing storage devices in sub-block units - Google Patents
Storage controller and storage control method for accessing storage devices in sub-block units Download PDFInfo
- Publication number
- US20110179238A1 US20110179238A1 US13/077,444 US201113077444A US2011179238A1 US 20110179238 A1 US20110179238 A1 US 20110179238A1 US 201113077444 A US201113077444 A US 201113077444A US 2011179238 A1 US2011179238 A1 US 2011179238A1
- Authority
- US
- United States
- Prior art keywords
- logical
- block
- data
- length
- access
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 238000004904 shortening Methods 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 18
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2211/00—Indexing scheme relating to details of data-processing equipment not covered by groups G06F3/00 - G06F13/00
- G06F2211/10—Indexing scheme relating to G06F11/10
- G06F2211/1002—Indexing scheme relating to G06F11/1076
- G06F2211/1014—Compression, i.e. RAID systems with parity using compression techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
Definitions
- the present invention generally relates to a storage controller for controlling the input and output of data to be used by a host system, and in particular relates to technology of a controller and a storage device handling data of mutually different sizes in a storage controller having such a controller and a storage device to be accessed by the controller.
- a storage controller (storage apparatus) comprising a plurality of storage devices, and a controller for processing commands from a host system (host) and processing the input and output [of data] to and from a plurality of storage devices.
- the controller improves the reliability of data by adding a guarantee code to data from the host system.
- the controller inputs and outputs data in logical sub-block units upon accessing the storage device. Meanwhile, the storage device performs processing in physical sub-block units to the controller.
- a storage controller has been proposed for commanding the writing of data in the storage device in third block units having a size that is a common multiple of the respective units of logical sub-block units and physical sub-block units (refer to Japanese Patent Laid-Open Publication No. 2006-195851).
- an object of the present invention is to improve the transaction performance. Further, another object of the present invention is to improve the access to an externally-connected storage device.
- the present invention is characterized in that it adjusts the balance of transaction performance and data utilization while securing data reliability by changing the guarantee code length upon making access in minimum common multiple units of logical sub-blocks and physical sub-blocks in which a guarantee code is added to a user code.
- the present invention is also characterized in that it improves the reliability of data by using a data guarantee code stored in a side file and improves the access to an externally-connected driver upon accessing the externally-connected storage device (externally-connected drive).
- the present invention provides a storage controller comprising a controller for receiving a read command and a write command from a host system, and a plurality of storage devices connected to the controller and from which data is read or to which data is written based on the control of the controller.
- the controller includes a logical sub-block unit setting unit for setting logical sub-block units in which an additional code containing a guarantee code is added to user data, and an additional code length setting unit capable of changing the code length of the additional code, and accesses the storage device in the logical sub-block units containing an additional code of a code length set with the additional code length setting unit.
- the storage device processes the access from the controller in physical sub-block units.
- the logical sub-block units and the physical sub-block units are of a different block size.
- the controller processes the access to and from the storage device in a specific block size configured from a common multiple of the logical sub-blocks and the physical sub-blocks.
- the storage device includes an externally-connected storage device, and the controller sets the externally-connected storage device as an access target.
- the controller includes an encryption unit for encrypting data to be subject to I/O processing to and from the host system or the storage device, a decryption unit for decrypting encrypted data among data from the host system or the storage device, and a data check unit for checking the reliability of data encrypted with the encryption unit or data decrypted with the decryption unit according to the guarantee code.
- the additional code length setting unit changes the additional code length according to the characteristics of a business application program of the host system.
- the additional code length setting unit shortens the additional code when transaction performance is requested, and lengthens the additional code when sequential performance is requested.
- the additional code contains pad data for giving user-designated information.
- the present invention further provides a storage control method of controlling the input and output of data between a controller for receiving a read command and a write command from a host system, and a plurality of storage devices connected to the controller and from which data is read or to which data is written based on the control of the controller.
- the storage device executes a step of processing the access from the controller in physical sub-block units.
- the controller executes a first step of setting logical sub-block units in which an additional code containing a guarantee code and capable of changing the code length is added to user data, a second step of accessing the storage device in the logical sub-block units containing the additional code of a set code length, and a third step of processing the access to and from the storage device in a specific block size configured from a common multiple of the logical sub-blocks having a different block size than and the physical sub-blocks units, and the physical sub-blocks.
- the controller further executes a fourth step of encrypting data to be subject to I/O processing to and from the host system or the storage device, a fifth step of decrypting encrypted data among data from the host system or the storage device, and a sixth step of checking the reliability of data encrypted with the encryption unit or data decrypted with the decryption unit according to the guarantee code.
- the first step includes a step of changing the additional code length according to the characteristics of a business application program of the host system.
- the first step includes a step of shortening the additional code when transaction performance is requested, and lengthening the additional code when sequential performance is requested.
- FIG. 1 is a block configuration diagram of a storage controller showing an embodiment of the present invention
- FIG. 2 is a diagram showing the function of a disk controller and the configuration of data for explaining the processing to be performed to an internally-connected drive;
- FIG. 3 is a diagram showing the configuration and change of data for explaining the processing to be performed by the disk controller to an externally-connected drive;
- FIG. 4 is a diagram explaining the configuration of a direct memory access controller and the configuration of data
- FIG. 5A is a flowchart explaining logical access block creation processing
- FIG. 5B is a flowchart explaining logical access block disassembly processing
- FIG. 6A and FIG. 6B are diagrams explaining the configuration of a logical access block
- FIG. 7A to FIG. 7D are diagrams explaining the configuration of a logical access block
- FIG. 8A to FIG. 8C are diagrams explaining the configuration of a logical access block
- FIG. 9A to FIG. 9C are diagrams explaining the selection policy of a guarantee code length, wherein FIG. 9A is a diagram explaining the selection based on data utilization and transaction performance, FIG. 9B is a diagram explaining the selection based on type of data conversion, and FIG. 9C is a diagram explaining the selection based on a 1 bit error correctable information block length;
- FIG. 10 is a diagram showing the effect of the disk controller according to the present invention.
- FIG. 11 is a diagram explaining the configuration of a hamming code
- FIG. 12 is a diagram showing the configuration of the relevant parts of the disk controller and the configuration of data showing another embodiment of the present invention.
- FIG. 13 is a configuration diagram explaining the relationship of a local router and an externally-connected drive
- FIG. 14 is a diagram explaining the configuration of a DMA parameter list to be used by the disk controller.
- FIG. 15 is a diagram explaining a logical access block format management screen.
- FIG. 1 is a diagram showing the block configuration of a storage controller applying an embodiment of the present invention.
- the storage controller comprises a disk controller 10 and an internal disk device 40 , and the disk controller 10 is connected to two host computers 20 as host systems, and the internal disk device 40 and an external disk controller 30 via a communication network such as a fibre channel, and connected to a management terminal 14 via a LAN 12 .
- the internal disk device 40 includes a plurality of storage devices 40 a
- the external disk controller 30 includes a plurality of storage devices 30 a
- the disk controller 10 is configured as a controller for receiving a read command and a write command from each host computer 20 so as to control the input and output of data to and from the storage devices 40 a of the internal disk device 40 or the storage devices 30 a of the external disk controller 30 .
- the disk controller 10 When the disk controller 10 , as the controller, accesses the respective storage devices 40 a , 30 a in minimum common multiple units of logical sub-blocks and physical sub-blocks in which a guarantee code is added to user data, it adjusts the balance of the transaction performance (number of IOs (inputs and outputs) that can be processed per unit time) and data utilization while securing the reliability of data by changing the guarantee code length.
- the disk controller 10 accesses the storage device 30 a of the external disk controller 30 , it improves the reliability of data and improves the access to the storage device 30 a by using the data guarantee code stored in a side file.
- the disk controller 10 comprises two front-end packages 100 , one front-end package 102 , one back-end package 200 , two microprocessor packages 300 , two cache memory packages 400 , and two switch packages 500 , and each front-end package 100 is connected to the host computer 20 , the front-end package 102 is connected to the external disk controller 30 , and the back-end package 200 is connected to the internal disk device 40 .
- Each front-end package 100 comprises a local router (LR) 110 , a host memory (HM) 120 , and a plurality of protocol engines (PE) 130
- the front engine package 102 comprises a local router 210 , a host memory 220 , and a plurality of protocol engines 230
- the back-end package 200 comprises a local router 210 , a host memory 220 , and a plurality of protocol engines 230 .
- Each microprocessor package 300 comprises a memory controller (MC) 310 , a local router (LM) 320 , and a plurality of microprocessors (MP) 330
- the cache memory package 400 comprises a cache memory controller (CMC) 410 , and a cache memory (CM) 420
- Each switch package 500 comprises a switch (SW) 510 , and each switch 510 opens and closes the communication path mutually connecting the local router 110 , the local router 210 , the memory controller 310 and the cache memory controller 410 .
- the back-end package 200 is able to control the input and output of data between the cache memory 420 and the internal disk device 40 .
- the cache memory 420 stores a data body DT and a logical block 5000 containing a logical address LA
- the logical block 5000 stored in the cache memory 420 is output to the back-end package 200 as a logical block 5010 to which a guarantee code CC 1 was added with a guarantee code creation unit 4110 .
- the logical block 5010 checked with a data check unit 2010 concerning the guarantee code CC 1 .
- the logical block output from the data check unit 2010 is added with data EDT encrypted with the encryption unit 2030 , and output as a logical block 5020 .
- This logical block 5020 is added with a guarantee code CC 2 with a guarantee code creation unit 2510 , and stored as a logical block 5032 in the host memory 220 .
- the logical block 5032 stored in the host memory 220 is checked with a data check unit 2310 concerning the guarantee code CC 2 , and the checked logical block is stored as a logical block 5042 in the internal disk device 40 .
- the logical block 5042 stored in the internal disk device 40 is encapsulated with an FC (Fiber Chanel) protocol and, after a guarantee code CC 2 is added thereto with a guarantee code creation unit 2320 , stored in the host memory 220 .
- the logical block 5037 stored in the host memory 220 is checked with a data check unit 2520 concerning the guarantee code CC 2 , and then output to a decryption unit 2040 .
- the decryption unit 2040 decrypts data, the decrypted logical block 5025 is checked with a data check unit 2020 concerning the guarantee code CC 1 , the checked logical block 5015 is checked with a guarantee code check unit 4120 of the cache memory package 400 concerning the guarantee code CC 1 , and the checked logical block 5005 is stored in the cache memory 420 .
- the front-end package 102 in order to control the input and output of data between the cache memory 420 and the external disk controller 30 , comprises data check units 1110 , 1120 , an encryption unit 1130 , a decryption unit 1140 , a guarantee code creation unit 1510 , a data check unit 1520 , a logical access block creation/disassembly logical unit 1500 , a guarantee code creation unit 1530 , a data check unit 1540 , a host memory 220 , a data check unit 2310 , and a guarantee code creation unit 2320 .
- the front-end package 102 provides the logical access block creation/disassembly logical unit 1500 , the guarantee code creation unit 1530 and the data check unit 1540 between the guarantee code creation unit 1510 and the guarantee code check unit 1520 , uses the logical access block creation/disassembly logical unit 1500 to create a logical access block 5030 or disassemble into a logical access block 5035 , sends and receives a logical access block 5040 or a logical access block 5045 between the direct memory access controller (DMAC) 150 and the protocol engine 230 via the host memory 220 , and sends and receives a logical access block 5050 or a logical access block 5055 between the protocol engine 230 and the external disk controller 30 .
- the remaining configuration is the same as the back-end package 200 .
- the front package 100 also comprises the same functions as the front-end package 102 , and the protocol engines 130 are respective connected to the host computers 20 .
- the direct memory access controller (DMAC) 150 comprises a guarantee code creation unit 1510 for creating a guarantee code CC 2 , a data check unit 1520 for checking the guarantee code CC 2 , a redundancy setting unit 1504 for setting the redundancy of the guarantee code CC 2 , a logical access block creation logical unit 1501 for creating a logical access block, a logical access block disassembly logical unit 1502 for disassembling a logical access block, a logical sub-block length setting unit 1505 for setting a logical sub-block length, an access block length setting unit 1506 for setting an access block length, an access block buffer 1503 , a guarantee code creation unit 1530 for creating a guarantee code CC 3 , a check unit 1540 for checking the guarantee code CC 3 , a counter 1507 for counting numbers concerning the creation of the guarantee code CC 3 , and a counter 1508 for counting numbers concerning the check of the guarantee code.
- a guarantee code creation unit 1510 for creating a guarantee code
- the logical access block creation logical unit 1501 acquires as parameters, for instance, a logical sub-block length, a logical access block length, and an access block format from the respective setting units 1505 , 1506 , analyzes the logical access block format (S 2 ), acquires the logical sub-blocks (S 3 ), creates a guarantee code such as CC 3 (S 4 ), determines whether to lengthen the logical access block length (S 5 ), returns to the processing at step S 3 when the logical access block length is not long and creates a logical access block when the logical access block length is long in order to lengthen the guarantee code length when sequential performance is requested and shorten the guarantee code length when transaction performance is requested, logical access block length, and thereby ends this processing routine. Examples of the created logical access block are shown in FIG. 6 , FIG. 7 and FIG. 8 .
- FIG. 6A shows a case where the guarantee code length (LA+CC 1 +CC 2 ) is 8 B (BYTE) and the physical sub-blocks b 1 in the storage devices (externally-connected drives) 30 a of the external disk controller are configured in 512 B, with the logical sub-blocks b 2 in the disk controller 10 , data is configured in 512 B and the guarantee code is configured in 8 B, and the logical access block b 3 is configured in 33280 B.
- FIG. 6A shows a case where the guarantee code length (LA+CC 1 +CC 2 ) is 8 B (BYTE) and the physical sub-blocks b 1 in the storage devices (externally-connected drives) 30 a of the external disk controller are configured in 512 B, with the logical sub-blocks b 2 in the disk controller 10 , data is configured in 512 B and the guarantee code is configured in 8 B, and the logical access block b 3 is configured in 33280 B.
- 6B shows a case where the guarantee code length (LA+CC 1 +CC 2 ) is 128 B (BYTE) and the physical sub-blocks b 1 in the storage devices (externally-connected drives) 30 a of the external disk controller are configured in 512 B, with the logical sub-blocks b 2 in the disk controller 10 , data is configured in 512 B and the guarantee code is configured in 128 B, and the logical access block b 3 is configured in 2560 B.
- FIG. 7A shows the configuration of a logical block in the disk controller 10 in which Hamming codes (D, C 2 ) and guarantee codes LA, C 1 were added to the data body DATA.
- FIG. 7B shows the configuration of the logical sub-blocks b 2 in the disk controller 10 in which the Hamming codes (D, C 2 ) and the guarantee codes LA, C 1 , C 2 were further added to the logical block illustrated in FIG. 7A .
- FIG. 7C shows the configuration of the physical sub-blocks b 1 in the storage devices (externally-connected drives) 30 a of the external disk controller.
- FIG. 7D shows the configuration of the physical sub-blocks b 1 upon adding the guarantee code C 3 to the physical sub-blocks b 1 in the storage devices (externally-connected drives) 30 a of the external disk controller.
- FIG. 8A shows the configuration of a logical block when the guarantee codes LA, C 1 are added to the data body DATA.
- FIG. 8B shows the configuration of the logical sub-blocks b 2 in the disk controller 10 in which the guarantee codes LA, C 1 , C 2 (encrypted guarantee codes), access history Ac 1 and access authority Act were added to the encrypted data body DATA.
- FIG. 8C shows the configuration of the physical sub-blocks b 1 in the storage devices (externally-connected drives) 30 a of the external disk controller.
- the logical access block disassembly logical unit 1502 Upon disassembling the logical address block, the logical access block disassembly logical unit 1502 acquires as parameters, for instance, a logical block length, a logical access block length, and an access block format (S 11 ), analyzes the logical access format (S 12 ), acquires the logical access block from the respective setting units 1505 , 1506 (S 13 ), disassembles the logical access block into logical sub-blocks (S 14 ), and thereafter disassembles and verifies the guarantee code (S 15 ).
- S 11 a logical block length
- S 12 acquires the logical access block from the respective setting units 1505 , 1506
- S 14 disassembles the logical access block into logical sub-blocks
- S 15 disassembles and verifies the guarantee code
- the logical access block disassembly logical unit 1502 determines whether the logical access block is long (S 16 ), returns to the processing at step S 14 when the logical access block is too long, ends this processing routine when the logical access block not long, and then ends this logical access block disassembly processing.
- the disk controller 10 accesses the internal disk device 40 or the external disk controller 30 , such access is made in minimum common multiple units of logical sub-blocks b 2 and physical sub-blocks b 1 in which a guarantee code is added to user code, and the guarantee code length, for instance, the length of the guarantee code CC 2 is changed.
- the guarantee code length for instance, the length of the guarantee code CC 2 is changed.
- the guarantee code length is 8 for plain text
- the guarantee code length is 16 for encrypted data
- the guarantee code length is 16 for compressed data
- the guarantee code length is 32 for encrypted+compressed data.
- 1 bit error correctable information block length is selected, the guarantee code lengths will respectively be 8, 16, 32, 64, 256 and 512 in relation to the 1 bit correctable information blocks 247 , 120 , 57 , 26 , 11 and 4 .
- FIG. 10 shows an example of the effect of the disk controller according to the present embodiment.
- the contents of the hamming code to be used here are depicted in FIG. 11 .
- the encoding ratio is information bit/code length.
- DMAC direct memory access controller
- the direct memory access controller 160 comprises a CC 1 reconfiguration logical unit 1600 for reconfiguring the guarantee code CC 1 , a guarantee code creation unit 1630 for creating the guarantee code CC 2 , and a check unit 1640 for checking the guarantee code CC 2 .
- the direct memory access controller 160 adds a logical block 5050 and the guarantee code CC 2 to the protocol engine 230 and transfers a logical block 5060 via the host memory 220 , inputs a logical block 5075 from the protocol engine 230 in a logical block 5065 via the host memory 220 , checks the guarantee code CC 2 of the logical block 5065 , and reconfigures the checked logical block 5055 with the CC 1 reconfiguration logical unit 1600 and outputs it as a logical block 5025 to the decryption unit 1140 .
- the host memory 120 in the local router 210 responds to a write access and stores data in the externally-connected drive 30 a via the protocol engine 230 , responds to a read access and incorporates the data stored in the externally-connected drive 30 a via the protocol engine 230 , and stores the guarantee code CC 2 in the guarantee code storage area 1210 .
- data is sent and received between the host memory 120 and the local memory 320 of the microprocessor package 300 , the local memory 320 sends and receives data to and from the cache memory 420 , and the cache memory 420 stores data of the drive 35 storing the guarantee code CC 1 .
- the DMA parameter list 120 a in the host memory 120 has a “FROM address,” a “TO address,” a “transfer length,” a “status return address,” a “guarantee code storage address,” “a transfer command” . . . a “parameter link address”, where the “guarantee code storage address” points to the guarantee code storage area 1210 of the host memory 120 .
- the guarantee code expectation is loaded into the guarantee code storage area 1210
- the guarantee code is saved.
- the cache memory 420 fetches the guarantee code in the cache memory, and stores the guarantee code into the guarantee code drive 30 a as necessary.
- contents of a table T 1 are displayed as the logical access block format on a screen of the management terminal 14 .
- Data is thereby converted by designating the size, logical sub-block length, logical access block length, guarantee code format and the like in logical volume units with a set configuration such as a parity (RAID) group.
- RAID parity
- the method such as encryption or compression it is also possible to use a configuration support tool that sets the appropriate logical sub-block length, logical access block length, guarantee code format and the like.
- the storage device of the external disk controller 30 or the internal disk controller 40 processes the access from the disk controller 10 in physical sub-block units.
- the disk controller 10 is to access the storage device of the external disk controller 30 or the internal disk device 40 in logical sub-block units in which an additional code containing a guarantee code is added to user data, it makes such access in minimum common multiple units of logical sub-blocks and physical sub-blocks, and changes the guarantee code length. It is thereby possible to improve the transaction performance while securing the reliability of data.
- the data guarantee code stored in a side file is used when the disk controller 10 accesses the externally-connected drive, it is possible to improve the reliability of data.
Abstract
Provided are a storage controller and storage control method capable of improving the transaction performance. This storage controller includes a disk controller for receiving a read command and a write command from a host computer, and an external disk controller and an internal disk device for sending and receiving data to and from the disk controller. A storage device of the external disk controller or the internal disk controller processes the access from the disk controller in physical sub-block units. When the disk controller is to access the storage device of the external disk controller or the internal disk device in logical sub-block units in which an additional code containing a guarantee code is added to user data, it makes such access in minimum common multiple units of logical sub-blocks and physical sub-blocks, and changes the guarantee code length.
Description
- This application is a continuation of U.S. patent application Ser. No. 12/007,531, filed Jan. 11, 2008, which relates to and claims priority from Japanese Patent Application No. 2007-112363, filed on Apr. 20, 2007, the entire disclosure of which is incorporated herein by reference.
- The present invention generally relates to a storage controller for controlling the input and output of data to be used by a host system, and in particular relates to technology of a controller and a storage device handling data of mutually different sizes in a storage controller having such a controller and a storage device to be accessed by the controller.
- Known is a storage controller (storage apparatus) comprising a plurality of storage devices, and a controller for processing commands from a host system (host) and processing the input and output [of data] to and from a plurality of storage devices. The controller improves the reliability of data by adding a guarantee code to data from the host system. The controller inputs and outputs data in logical sub-block units upon accessing the storage device. Meanwhile, the storage device performs processing in physical sub-block units to the controller. When the storage device is a hard disk drive using ATA (AT Attachment) as its protocol, since the logical sub-block units (first block units) and the physical sub-blocks (second block units) will differ, a storage controller has been proposed for commanding the writing of data in the storage device in third block units having a size that is a common multiple of the respective units of logical sub-block units and physical sub-block units (refer to Japanese Patent Laid-Open Publication No. 2006-195851).
- With conventional technology, when the controller executes I/O processing of data according to a write command, consideration is given to the difference in size of the logical sub-block units and the physical sub-block units, and data is written in the storage device according to third block units having a size that is a common multiple of both sizes. Nevertheless, there is concern that the access units of data will increase, the overhead during random access will increase, the cache hit ratio will deteriorate, and the transaction performance will deteriorate.
- Thus, an object of the present invention is to improve the transaction performance. Further, another object of the present invention is to improve the access to an externally-connected storage device.
- In order to achieve the foregoing objects, the present invention is characterized in that it adjusts the balance of transaction performance and data utilization while securing data reliability by changing the guarantee code length upon making access in minimum common multiple units of logical sub-blocks and physical sub-blocks in which a guarantee code is added to a user code.
- In order to achieve the foregoing objects, the present invention is also characterized in that it improves the reliability of data by using a data guarantee code stored in a side file and improves the access to an externally-connected driver upon accessing the externally-connected storage device (externally-connected drive).
- In other words, the present invention provides a storage controller comprising a controller for receiving a read command and a write command from a host system, and a plurality of storage devices connected to the controller and from which data is read or to which data is written based on the control of the controller. The controller includes a logical sub-block unit setting unit for setting logical sub-block units in which an additional code containing a guarantee code is added to user data, and an additional code length setting unit capable of changing the code length of the additional code, and accesses the storage device in the logical sub-block units containing an additional code of a code length set with the additional code length setting unit. The storage device processes the access from the controller in physical sub-block units. The logical sub-block units and the physical sub-block units are of a different block size. The controller processes the access to and from the storage device in a specific block size configured from a common multiple of the logical sub-blocks and the physical sub-blocks.
- As preferable modes of the present invention, the storage device includes an externally-connected storage device, and the controller sets the externally-connected storage device as an access target. There are a plurality of guarantee codes configuring the logical sub-block units. The controller includes an encryption unit for encrypting data to be subject to I/O processing to and from the host system or the storage device, a decryption unit for decrypting encrypted data among data from the host system or the storage device, and a data check unit for checking the reliability of data encrypted with the encryption unit or data decrypted with the decryption unit according to the guarantee code. The additional code length setting unit changes the additional code length according to the characteristics of a business application program of the host system. The additional code length setting unit shortens the additional code when transaction performance is requested, and lengthens the additional code when sequential performance is requested. The additional code contains pad data for giving user-designated information.
- The present invention further provides a storage control method of controlling the input and output of data between a controller for receiving a read command and a write command from a host system, and a plurality of storage devices connected to the controller and from which data is read or to which data is written based on the control of the controller. The storage device executes a step of processing the access from the controller in physical sub-block units. The controller executes a first step of setting logical sub-block units in which an additional code containing a guarantee code and capable of changing the code length is added to user data, a second step of accessing the storage device in the logical sub-block units containing the additional code of a set code length, and a third step of processing the access to and from the storage device in a specific block size configured from a common multiple of the logical sub-blocks having a different block size than and the physical sub-blocks units, and the physical sub-blocks.
- As preferable modes of the present invention, the controller further executes a fourth step of encrypting data to be subject to I/O processing to and from the host system or the storage device, a fifth step of decrypting encrypted data among data from the host system or the storage device, and a sixth step of checking the reliability of data encrypted with the encryption unit or data decrypted with the decryption unit according to the guarantee code. The first step includes a step of changing the additional code length according to the characteristics of a business application program of the host system. The first step includes a step of shortening the additional code when transaction performance is requested, and lengthening the additional code when sequential performance is requested.
- According to the present invention, it is possible to improve the transaction performance while securing the reliability of data, as well as improve the access to an externally-connected drive.
-
FIG. 1 is a block configuration diagram of a storage controller showing an embodiment of the present invention; -
FIG. 2 is a diagram showing the function of a disk controller and the configuration of data for explaining the processing to be performed to an internally-connected drive; -
FIG. 3 is a diagram showing the configuration and change of data for explaining the processing to be performed by the disk controller to an externally-connected drive; -
FIG. 4 is a diagram explaining the configuration of a direct memory access controller and the configuration of data; -
FIG. 5A is a flowchart explaining logical access block creation processing, andFIG. 5B is a flowchart explaining logical access block disassembly processing; -
FIG. 6A andFIG. 6B are diagrams explaining the configuration of a logical access block; -
FIG. 7A toFIG. 7D are diagrams explaining the configuration of a logical access block; -
FIG. 8A toFIG. 8C are diagrams explaining the configuration of a logical access block; -
FIG. 9A toFIG. 9C are diagrams explaining the selection policy of a guarantee code length, whereinFIG. 9A is a diagram explaining the selection based on data utilization and transaction performance,FIG. 9B is a diagram explaining the selection based on type of data conversion, andFIG. 9C is a diagram explaining the selection based on a 1 bit error correctable information block length; -
FIG. 10 is a diagram showing the effect of the disk controller according to the present invention; -
FIG. 11 is a diagram explaining the configuration of a hamming code; -
FIG. 12 is a diagram showing the configuration of the relevant parts of the disk controller and the configuration of data showing another embodiment of the present invention; -
FIG. 13 is a configuration diagram explaining the relationship of a local router and an externally-connected drive; -
FIG. 14 is a diagram explaining the configuration of a DMA parameter list to be used by the disk controller; and -
FIG. 15 is a diagram explaining a logical access block format management screen. - Embodiments of the present invention are now explained with reference to the attached drawings.
FIG. 1 is a diagram showing the block configuration of a storage controller applying an embodiment of the present invention. InFIG. 1 , the storage controller comprises adisk controller 10 and aninternal disk device 40, and thedisk controller 10 is connected to twohost computers 20 as host systems, and theinternal disk device 40 and anexternal disk controller 30 via a communication network such as a fibre channel, and connected to amanagement terminal 14 via aLAN 12. - The
internal disk device 40 includes a plurality ofstorage devices 40 a, theexternal disk controller 30 includes a plurality ofstorage devices 30 a, and thedisk controller 10 is configured as a controller for receiving a read command and a write command from eachhost computer 20 so as to control the input and output of data to and from thestorage devices 40 a of theinternal disk device 40 or thestorage devices 30 a of theexternal disk controller 30. When thedisk controller 10, as the controller, accesses therespective storage devices disk controller 10 accesses thestorage device 30 a of theexternal disk controller 30, it improves the reliability of data and improves the access to thestorage device 30 a by using the data guarantee code stored in a side file. - Specifically, the
disk controller 10 comprises two front-end packages 100, one front-end package 102, one back-end package 200, twomicroprocessor packages 300, two cache memory packages 400, and twoswitch packages 500, and each front-end package 100 is connected to thehost computer 20, the front-end package 102 is connected to theexternal disk controller 30, and the back-end package 200 is connected to theinternal disk device 40. - Each front-
end package 100 comprises a local router (LR) 110, a host memory (HM) 120, and a plurality of protocol engines (PE) 130, thefront engine package 102 comprises alocal router 210, ahost memory 220, and a plurality ofprotocol engines 230, and the back-end package 200 comprises alocal router 210, ahost memory 220, and a plurality ofprotocol engines 230. - Each
microprocessor package 300 comprises a memory controller (MC) 310, a local router (LM) 320, and a plurality of microprocessors (MP) 330, and thecache memory package 400 comprises a cache memory controller (CMC) 410, and a cache memory (CM) 420. Eachswitch package 500 comprises a switch (SW) 510, and eachswitch 510 opens and closes the communication path mutually connecting thelocal router 110, thelocal router 210, thememory controller 310 and thecache memory controller 410. - The back-
end package 200, as shown inFIG. 2 , is able to control the input and output of data between thecache memory 420 and theinternal disk device 40. Thereupon, thecache memory 420 stores a data body DT and alogical block 5000 containing a logical address LA, and thelogical block 5000 stored in thecache memory 420 is output to the back-end package 200 as alogical block 5010 to which a guarantee code CC1 was added with a guaranteecode creation unit 4110. Thelogical block 5010 checked with adata check unit 2010 concerning the guarantee code CC1. The logical block output from the data checkunit 2010 is added with data EDT encrypted with theencryption unit 2030, and output as alogical block 5020. Thislogical block 5020 is added with a guarantee code CC2 with a guaranteecode creation unit 2510, and stored as alogical block 5032 in thehost memory 220. Thelogical block 5032 stored in thehost memory 220 is checked with adata check unit 2310 concerning the guarantee code CC2, and the checked logical block is stored as alogical block 5042 in theinternal disk device 40. - Meanwhile, the
logical block 5042 stored in theinternal disk device 40 is encapsulated with an FC (Fiber Chanel) protocol and, after a guarantee code CC2 is added thereto with a guaranteecode creation unit 2320, stored in thehost memory 220. Thelogical block 5037 stored in thehost memory 220 is checked with adata check unit 2520 concerning the guarantee code CC2, and then output to adecryption unit 2040. Thedecryption unit 2040 decrypts data, the decryptedlogical block 5025 is checked with adata check unit 2020 concerning the guarantee code CC1, the checkedlogical block 5015 is checked with a guaranteecode check unit 4120 of thecache memory package 400 concerning the guarantee code CC1, and the checkedlogical block 5005 is stored in thecache memory 420. - Meanwhile, the front-
end package 102, as shown inFIG. 3 , in order to control the input and output of data between thecache memory 420 and theexternal disk controller 30, comprisesdata check units encryption unit 1130, adecryption unit 1140, a guaranteecode creation unit 1510, adata check unit 1520, a logical access block creation/disassemblylogical unit 1500, a guaranteecode creation unit 1530, adata check unit 1540, ahost memory 220, adata check unit 2310, and a guaranteecode creation unit 2320. - In other words, the front-
end package 102 provides the logical access block creation/disassemblylogical unit 1500, the guaranteecode creation unit 1530 and the data checkunit 1540 between the guaranteecode creation unit 1510 and the guaranteecode check unit 1520, uses the logical access block creation/disassemblylogical unit 1500 to create alogical access block 5030 or disassemble into alogical access block 5035, sends and receives alogical access block 5040 or alogical access block 5045 between the direct memory access controller (DMAC) 150 and theprotocol engine 230 via thehost memory 220, and sends and receives alogical access block 5050 or alogical access block 5055 between theprotocol engine 230 and theexternal disk controller 30. The remaining configuration is the same as the back-end package 200. Further, thefront package 100 also comprises the same functions as the front-end package 102, and theprotocol engines 130 are respective connected to thehost computers 20. - Specifically, the direct memory access controller (DMAC) 150, as shown in
FIG. 4 , comprises a guaranteecode creation unit 1510 for creating a guarantee code CC2, adata check unit 1520 for checking the guarantee code CC2, aredundancy setting unit 1504 for setting the redundancy of the guarantee code CC2, a logical access block creationlogical unit 1501 for creating a logical access block, a logical access block disassemblylogical unit 1502 for disassembling a logical access block, a logical sub-blocklength setting unit 1505 for setting a logical sub-block length, an access blocklength setting unit 1506 for setting an access block length, anaccess block buffer 1503, a guaranteecode creation unit 1530 for creating a guarantee code CC3, acheck unit 1540 for checking the guarantee code CC3, acounter 1507 for counting numbers concerning the creation of the guarantee code CC3, and acounter 1508 for counting numbers concerning the check of the guarantee code. - Processing of the logical access block creation
logical unit 1501 is now explained with reference to the flowchart shown inFIG. 5A . Foremost, the logical access block creationlogical unit 1501 acquires as parameters, for instance, a logical sub-block length, a logical access block length, and an access block format from therespective setting units FIG. 6 ,FIG. 7 andFIG. 8 . -
FIG. 6A shows a case where the guarantee code length (LA+CC1+CC2) is 8 B (BYTE) and the physical sub-blocks b1 in the storage devices (externally-connected drives) 30 a of the external disk controller are configured in 512 B, with the logical sub-blocks b2 in thedisk controller 10, data is configured in 512 B and the guarantee code is configured in 8 B, and the logical access block b3 is configured in 33280 B.FIG. 6B shows a case where the guarantee code length (LA+CC1+CC2) is 128 B (BYTE) and the physical sub-blocks b1 in the storage devices (externally-connected drives) 30 a of the external disk controller are configured in 512 B, with the logical sub-blocks b2 in thedisk controller 10, data is configured in 512 B and the guarantee code is configured in 128 B, and the logical access block b3 is configured in 2560 B. -
FIG. 7A shows the configuration of a logical block in thedisk controller 10 in which Hamming codes (D, C2) and guarantee codes LA, C1 were added to the data body DATA.FIG. 7B shows the configuration of the logical sub-blocks b2 in thedisk controller 10 in which the Hamming codes (D, C2) and the guarantee codes LA, C1, C2 were further added to the logical block illustrated inFIG. 7A .FIG. 7C shows the configuration of the physical sub-blocks b1 in the storage devices (externally-connected drives) 30 a of the external disk controller.FIG. 7D shows the configuration of the physical sub-blocks b1 upon adding the guarantee code C3 to the physical sub-blocks b1 in the storage devices (externally-connected drives) 30 a of the external disk controller. -
FIG. 8A shows the configuration of a logical block when the guarantee codes LA, C1 are added to the data body DATA.FIG. 8B shows the configuration of the logical sub-blocks b2 in thedisk controller 10 in which the guarantee codes LA, C1, C2 (encrypted guarantee codes), access history Ac1 and access authority Act were added to the encrypted data body DATA.FIG. 8C shows the configuration of the physical sub-blocks b1 in the storage devices (externally-connected drives) 30 a of the external disk controller. - Processing of the logical access block disassembly
logical unit 1502 is now explained with reference to the flowchart illustrated inFIG. 5B . Upon disassembling the logical address block, the logical access block disassemblylogical unit 1502 acquires as parameters, for instance, a logical block length, a logical access block length, and an access block format (S11), analyzes the logical access format (S12), acquires the logical access block from therespective setting units 1505, 1506 (S13), disassembles the logical access block into logical sub-blocks (S14), and thereafter disassembles and verifies the guarantee code (S15). Subsequently, the logical access block disassemblylogical unit 1502 determines whether the logical access block is long (S16), returns to the processing at step S14 when the logical access block is too long, ends this processing routine when the logical access block not long, and then ends this logical access block disassembly processing. - According to the present embodiment, when the
disk controller 10 accesses theinternal disk device 40 or theexternal disk controller 30, such access is made in minimum common multiple units of logical sub-blocks b2 and physical sub-blocks b1 in which a guarantee code is added to user code, and the guarantee code length, for instance, the length of the guarantee code CC2 is changed. Thus, it is possible to adjust the balance between transaction performance and data utilization while securing the reliability of data. - Specifically, as shown in
FIG. 9A , by selecting the guarantee code length to be 0, 64 and 128, data utilization will become high, medium and low, and the requested transaction performance will become low, medium and high. Further, as the type of data conversion, as shown inFIG. 9B , the guarantee code length is 8 for plain text, the guarantee code length is 16 for encrypted data, the guarantee code length is 16 for compressed data, and the guarantee code length is 32 for encrypted+compressed data. Further, when 1 bit error correctable information block length is selected, the guarantee code lengths will respectively be 8, 16, 32, 64, 256 and 512 in relation to the 1 bit correctable information blocks 247, 120, 57, 26, 11 and 4. -
FIG. 10 shows an example of the effect of the disk controller according to the present embodiment. The contents of the hamming code to be used here are depicted inFIG. 11 . InFIG. 11 , the encoding ratio is information bit/code length. - A second embodiment of the present invention is now explained with reference to
FIG. 12 . In this embodiment, a direct memory access controller (DMAC) 160 is used in substitute for the directmemory access controller 150, and the remaining configuration is the same as the embodiment explained with reference toFIG. 3 . - In other words, the direct
memory access controller 160 comprises a CC1 reconfigurationlogical unit 1600 for reconfiguring the guarantee code CC1, a guaranteecode creation unit 1630 for creating the guarantee code CC2, and acheck unit 1640 for checking the guarantee code CC2. The directmemory access controller 160 adds alogical block 5050 and the guarantee code CC2 to theprotocol engine 230 and transfers alogical block 5060 via thehost memory 220, inputs alogical block 5075 from theprotocol engine 230 in alogical block 5065 via thehost memory 220, checks the guarantee code CC2 of thelogical block 5065, and reconfigures the checkedlogical block 5055 with the CC1 reconfigurationlogical unit 1600 and outputs it as alogical block 5025 to thedecryption unit 1140. - Thereupon, the
host memory 120 in thelocal router 210, as shown inFIG. 13 , responds to a write access and stores data in the externally-connecteddrive 30 a via theprotocol engine 230, responds to a read access and incorporates the data stored in the externally-connecteddrive 30 a via theprotocol engine 230, and stores the guarantee code CC2 in the guaranteecode storage area 1210. Here, data is sent and received between thehost memory 120 and thelocal memory 320 of themicroprocessor package 300, thelocal memory 320 sends and receives data to and from thecache memory 420, and thecache memory 420 stores data of the drive 35 storing the guarantee code CC1. - Specifically, as shown in
FIG. 14 , theDMA parameter list 120 a in thehost memory 120 has a “FROM address,” a “TO address,” a “transfer length,” a “status return address,” a “guarantee code storage address,” “a transfer command” . . . a “parameter link address”, where the “guarantee code storage address” points to the guaranteecode storage area 1210 of thehost memory 120. When data is read from the externally-connecteddrive 30 a, the guarantee code expectation is loaded into the guaranteecode storage area 1210, and when data is written into the externally-connecteddrive 30 a, the guarantee code is saved. Here, thecache memory 420 fetches the guarantee code in the cache memory, and stores the guarantee code into the guarantee code drive 30 a as necessary. - When managing the logical access block format, as shown in
FIG. 15 , contents of a table T1 are displayed as the logical access block format on a screen of themanagement terminal 14. Data is thereby converted by designating the size, logical sub-block length, logical access block length, guarantee code format and the like in logical volume units with a set configuration such as a parity (RAID) group. Here, if the method such as encryption or compression is designated, it is also possible to use a configuration support tool that sets the appropriate logical sub-block length, logical access block length, guarantee code format and the like. - According to the present invention, the storage device of the
external disk controller 30 or theinternal disk controller 40 processes the access from thedisk controller 10 in physical sub-block units. When thedisk controller 10 is to access the storage device of theexternal disk controller 30 or theinternal disk device 40 in logical sub-block units in which an additional code containing a guarantee code is added to user data, it makes such access in minimum common multiple units of logical sub-blocks and physical sub-blocks, and changes the guarantee code length. It is thereby possible to improve the transaction performance while securing the reliability of data. - According to the present embodiment, since the data guarantee code stored in a side file is used when the
disk controller 10 accesses the externally-connected drive, it is possible to improve the reliability of data.
Claims (12)
1. A storage controller coupled to a host computer, comprising:
a controller including an additional code length setting unit, a logical sub-block setting unit, a logical block setting unit and an additional code length setting unit; and
a plurality of storage devices;
wherein
the additional code length setting unit sets a length of a guarantee code in accordance with a performance request from the host computer, which includes transaction performance and sequential access performance,
the logical sub-block setting unit sets logical sub-block units in which an additional code containing the guarantee code is added to user data,
the logical block creation units creates an logical access block whose length is equal to the integral multiple of the length of physical sub-block unit,
the additional code length setting unit adds a pad data, whose data amount is a difference between the length of logical access block and the integral multiple of the length of logical sub-block, to the logical sub-block, and
the controller processes an access to and from the storage devices in the length of logical access block.
2. The storage controller according to claim 1 ,
wherein the storage devices include an externally-connected storage device, and the controller sets the externally-connected storage device as an access target.
3. The storage controller according to claim 2 ,
wherein there are a plurality of guarantee codes configuring the logical sub-block units.
4. The storage controller according to claim 3 ,
wherein the storage controller further includes an encryption unit, a decryption unit and a data check unit,
wherein the encryption unit encrypts data to be subject to I/O processing to and from the host computer or the storage devices,
wherein the decryption unit decrypts encrypted data among data from the host computer or the storage device, and
wherein the data check unit checks the reliability of data encrypted with the encryption unit or data decrypted with the decryption unit according to the guarantee code.
5. The storage controller according to claim 4 ,
the logical block setting unit shortens the length of logical access block when transaction performance is requested and lengthens the length of logical access block when sequential access performance is requested.
6. The storage controller according to claim 5 ,
wherein the logical access block contains a logical address.
7. A storage control method for controlling data among a host computer, a controller and a plurality of storage devices, comprising the steps of:
setting a length of a guarantee code in accordance with a performance request from the host computer to the controller, which includes transaction performance and sequential access performance,
setting logical sub-block units in which an additional code containing the guarantee code is added to user data,
creating an logical access block whose length is equal to the integral multiple of the length of physical sub-block unit,
adding a pad data, whose data amount is a difference between the length of logical access block and the integral multiple of the length of logical sub-block, to the logical sub-block, and
processing an access to and from the storage devices in the length of logical access block.
8. The storage control method according to claim 7 , further comprising the step of setting a externally-connected storage device as an access target.
9. The storage control method according to claim 8 ,
wherein there are a plurality of guarantee codes configuring the logical sub-block units.
10. The storage control method according to claim 9 , further comprising the steps of:
encrypting data to be subject to I/O processing to and from the host computer or the storage devices,
decrypting encrypted data among data from the host computer or the storage devices, and
checking the reliability of encrypted data or decrypted data according to the guarantee code.
11. The storage control method according to claim 10 , further comprising the steps of:
shortening the length of logical access block when transaction performance is requested, and
lengthening the length of logical access block when sequential access performance is requested.
12. The storage control method according to claim 11 ,
wherein the logical access block contains a logical address.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/077,444 US8250318B2 (en) | 2007-04-20 | 2011-03-31 | Storage controller and storage control method for accessing storage devices in sub-block units |
Applications Claiming Priority (5)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2007112363 | 2007-04-20 | ||
JP2007112363A JP2008269363A (en) | 2007-04-20 | 2007-04-20 | Storage controller and storage control method |
JP2007-112363 | 2007-04-20 | ||
US12/007,531 US7937542B2 (en) | 2007-04-20 | 2008-01-11 | Storage controller and storage control method for accessing storage devices in sub-block units |
US13/077,444 US8250318B2 (en) | 2007-04-20 | 2011-03-31 | Storage controller and storage control method for accessing storage devices in sub-block units |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/007,531 Continuation US7937542B2 (en) | 2007-04-20 | 2008-01-11 | Storage controller and storage control method for accessing storage devices in sub-block units |
Publications (2)
Publication Number | Publication Date |
---|---|
US20110179238A1 true US20110179238A1 (en) | 2011-07-21 |
US8250318B2 US8250318B2 (en) | 2012-08-21 |
Family
ID=39526345
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/007,531 Expired - Fee Related US7937542B2 (en) | 2007-04-20 | 2008-01-11 | Storage controller and storage control method for accessing storage devices in sub-block units |
US13/077,444 Active US8250318B2 (en) | 2007-04-20 | 2011-03-31 | Storage controller and storage control method for accessing storage devices in sub-block units |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US12/007,531 Expired - Fee Related US7937542B2 (en) | 2007-04-20 | 2008-01-11 | Storage controller and storage control method for accessing storage devices in sub-block units |
Country Status (3)
Country | Link |
---|---|
US (2) | US7937542B2 (en) |
EP (1) | EP1983421A3 (en) |
JP (1) | JP2008269363A (en) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9213486B2 (en) | 2012-02-22 | 2015-12-15 | International Business Machines Corporation | Writing new data of a first block size to a second block size using a write-write mode |
US20220058001A1 (en) * | 2020-08-24 | 2022-02-24 | Miracle Mobile Co. Ltd. | Method, system and non-transitory computer-readable storage medium for generating description code of user interface |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8289984B2 (en) * | 2003-01-13 | 2012-10-16 | Emlilex Design & Manufacturing Corporation | Allocation-unit-based virtual formatting methods and devices employing allocation-unit-based virtual formatting methods |
US20120260034A1 (en) * | 2011-04-06 | 2012-10-11 | Hitachi, Ltd. | Disk array apparatus and control method thereof |
US9239781B2 (en) | 2012-02-07 | 2016-01-19 | SMART Storage Systems, Inc. | Storage control system with erase block mechanism and method of operation thereof |
US9671962B2 (en) * | 2012-11-30 | 2017-06-06 | Sandisk Technologies Llc | Storage control system with data management mechanism of parity and method of operation thereof |
US9329928B2 (en) | 2013-02-20 | 2016-05-03 | Sandisk Enterprise IP LLC. | Bandwidth optimization in a non-volatile memory system |
US9214965B2 (en) | 2013-02-20 | 2015-12-15 | Sandisk Enterprise Ip Llc | Method and system for improving data integrity in non-volatile storage |
US9183137B2 (en) | 2013-02-27 | 2015-11-10 | SMART Storage Systems, Inc. | Storage control system with data management mechanism and method of operation thereof |
US9170941B2 (en) | 2013-04-05 | 2015-10-27 | Sandisk Enterprises IP LLC | Data hardening in a storage system |
US10049037B2 (en) | 2013-04-05 | 2018-08-14 | Sandisk Enterprise Ip Llc | Data management in a storage system |
US9543025B2 (en) | 2013-04-11 | 2017-01-10 | Sandisk Technologies Llc | Storage control system with power-off time estimation mechanism and method of operation thereof |
US10546648B2 (en) | 2013-04-12 | 2020-01-28 | Sandisk Technologies Llc | Storage control system with data management mechanism and method of operation thereof |
US9367353B1 (en) | 2013-06-25 | 2016-06-14 | Sandisk Technologies Inc. | Storage control system with power throttling mechanism and method of operation thereof |
US9244519B1 (en) | 2013-06-25 | 2016-01-26 | Smart Storage Systems. Inc. | Storage system with data transfer rate adjustment for power throttling |
US9146850B2 (en) | 2013-08-01 | 2015-09-29 | SMART Storage Systems, Inc. | Data storage system with dynamic read threshold mechanism and method of operation thereof |
US9361222B2 (en) | 2013-08-07 | 2016-06-07 | SMART Storage Systems, Inc. | Electronic system with storage drive life estimation mechanism and method of operation thereof |
US9431113B2 (en) | 2013-08-07 | 2016-08-30 | Sandisk Technologies Llc | Data storage system with dynamic erase block grouping mechanism and method of operation thereof |
US9448946B2 (en) | 2013-08-07 | 2016-09-20 | Sandisk Technologies Llc | Data storage system with stale data mechanism and method of operation thereof |
US9747157B2 (en) | 2013-11-08 | 2017-08-29 | Sandisk Technologies Llc | Method and system for improving error correction in data storage |
US9152555B2 (en) | 2013-11-15 | 2015-10-06 | Sandisk Enterprise IP LLC. | Data management with modular erase in a data storage system |
US9880750B1 (en) * | 2014-12-05 | 2018-01-30 | Vexata, Inc. | Storage architecture for storage class memories |
WO2016113831A1 (en) * | 2015-01-13 | 2016-07-21 | 株式会社日立製作所 | Storage system and memory control method |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6226727B1 (en) * | 1997-09-18 | 2001-05-01 | Kabushiki Kaisha Toshiba | Computer system |
US6467060B1 (en) * | 1998-06-26 | 2002-10-15 | Seagate Technology Llc | Mass storage error correction and detection system, method and article of manufacture |
US20020184556A1 (en) * | 2001-06-05 | 2002-12-05 | Ebrahim Hashemi | Data storage array employing block verification information to invoke initialization procedures |
US20030079081A1 (en) * | 1995-01-13 | 2003-04-24 | Yoshiyuki Okada | Storage control apparatus and method for compressing data for disk storage |
US20050055522A1 (en) * | 2003-09-05 | 2005-03-10 | Satoshi Yagi | Control method for data transfer device, data transfer circuit, and disk array device |
US20060161756A1 (en) * | 2005-01-17 | 2006-07-20 | Ikuya Yagisawa | Storage system |
US20070157001A1 (en) * | 2006-01-04 | 2007-07-05 | Tobias Ritzau | Data compression method for supporting virtual memory management in a demand paging system |
US7529905B2 (en) * | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
US7610319B1 (en) * | 2004-03-01 | 2009-10-27 | Symantec Operating Corporation | Efficient operations using assistance from secondary site |
US7685360B1 (en) * | 2005-05-05 | 2010-03-23 | Seagate Technology Llc | Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH03166681A (en) * | 1989-11-25 | 1991-07-18 | Tonami Denki Eng:Kk | Data card and reader/writer |
JPH0860910A (en) * | 1994-08-16 | 1996-03-05 | Kokusai Gijutsu Kaihatsu Kk | Information processing method |
JPH08255438A (en) * | 1995-03-15 | 1996-10-01 | Sony Corp | Data recorder |
JP4205364B2 (en) * | 2002-04-25 | 2009-01-07 | 株式会社日立グローバルストレージテクノロジーズ | Data integrity check method for external storage |
US7634614B2 (en) * | 2003-01-13 | 2009-12-15 | Sierra Logic | Integrated-circuit implementation of a storage-shelf router and a path controller card for combined use in high-availability mass-storage-device shelves and that support virtual disk formatting |
JP2004288078A (en) * | 2003-03-25 | 2004-10-14 | Hitachi Ltd | Disk array system using fixed length disk |
JP4459153B2 (en) | 2005-10-21 | 2010-04-28 | 本田技研工業株式会社 | Rear suspension system for small electric vehicles |
JP4664869B2 (en) * | 2006-06-16 | 2011-04-06 | 株式会社東芝 | Data recording system |
-
2007
- 2007-04-20 JP JP2007112363A patent/JP2008269363A/en active Pending
-
2008
- 2008-01-11 US US12/007,531 patent/US7937542B2/en not_active Expired - Fee Related
- 2008-01-22 EP EP08250280A patent/EP1983421A3/en not_active Withdrawn
-
2011
- 2011-03-31 US US13/077,444 patent/US8250318B2/en active Active
Patent Citations (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6925527B2 (en) * | 1995-01-13 | 2005-08-02 | Fujitsu Limited | Storage control apparatus and method for compressing data for disk storage |
US6745282B2 (en) * | 1995-01-13 | 2004-06-01 | Fujitsu Limited | Compressed data managing apparatus and method therefor to manage compressed data of a disk storage |
US20030084238A1 (en) * | 1995-01-13 | 2003-05-01 | Yoshiyuki Okada | Storage control apparatus and method for compressing data for disk storage |
US20030079081A1 (en) * | 1995-01-13 | 2003-04-24 | Yoshiyuki Okada | Storage control apparatus and method for compressing data for disk storage |
US6816942B2 (en) * | 1995-01-13 | 2004-11-09 | Fujitsu Limited | Storage control apparatus and method for compressing data for disk storage |
US6226727B1 (en) * | 1997-09-18 | 2001-05-01 | Kabushiki Kaisha Toshiba | Computer system |
US6467060B1 (en) * | 1998-06-26 | 2002-10-15 | Seagate Technology Llc | Mass storage error correction and detection system, method and article of manufacture |
US20020184556A1 (en) * | 2001-06-05 | 2002-12-05 | Ebrahim Hashemi | Data storage array employing block verification information to invoke initialization procedures |
US20050055522A1 (en) * | 2003-09-05 | 2005-03-10 | Satoshi Yagi | Control method for data transfer device, data transfer circuit, and disk array device |
US7610319B1 (en) * | 2004-03-01 | 2009-10-27 | Symantec Operating Corporation | Efficient operations using assistance from secondary site |
US20060161756A1 (en) * | 2005-01-17 | 2006-07-20 | Ikuya Yagisawa | Storage system |
US7346732B2 (en) * | 2005-01-17 | 2008-03-18 | Hitachi, Ltd. | Storage system |
US7685360B1 (en) * | 2005-05-05 | 2010-03-23 | Seagate Technology Llc | Methods and structure for dynamic appended metadata in a dynamically mapped mass storage device |
US7529905B2 (en) * | 2005-10-13 | 2009-05-05 | Sandisk Corporation | Method of storing transformed units of data in a memory system having fixed sized storage blocks |
US20070157001A1 (en) * | 2006-01-04 | 2007-07-05 | Tobias Ritzau | Data compression method for supporting virtual memory management in a demand paging system |
US7512767B2 (en) * | 2006-01-04 | 2009-03-31 | Sony Ericsson Mobile Communications Ab | Data compression method for supporting virtual memory management in a demand paging system |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9213486B2 (en) | 2012-02-22 | 2015-12-15 | International Business Machines Corporation | Writing new data of a first block size to a second block size using a write-write mode |
US20220058001A1 (en) * | 2020-08-24 | 2022-02-24 | Miracle Mobile Co. Ltd. | Method, system and non-transitory computer-readable storage medium for generating description code of user interface |
US11704097B2 (en) * | 2020-08-24 | 2023-07-18 | Miracle Mobile Co. Ltd. | Method, system and non-transitory computer-readable storage medium for generating description code of user interface |
US20230289152A1 (en) * | 2020-08-24 | 2023-09-14 | Miracle Mobile Co. Ltd. | Method, system and non-transitory computer-readable storage medium for generating description code of user interface |
Also Published As
Publication number | Publication date |
---|---|
EP1983421A2 (en) | 2008-10-22 |
US20080263289A1 (en) | 2008-10-23 |
US8250318B2 (en) | 2012-08-21 |
US7937542B2 (en) | 2011-05-03 |
EP1983421A3 (en) | 2011-12-07 |
JP2008269363A (en) | 2008-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8250318B2 (en) | Storage controller and storage control method for accessing storage devices in sub-block units | |
US7941600B2 (en) | Storage system | |
US8136015B2 (en) | Data storage apparatus and data storage method | |
US7107320B2 (en) | Data mirroring between controllers in an active-active controller pair | |
US7206899B2 (en) | Method, system, and program for managing data transfer and construction | |
US7725611B2 (en) | Method and apparatus for verifying data in a storage system | |
US8762681B2 (en) | Blocked based end-to-end data protection for extended count key data (ECKD) | |
US9465561B2 (en) | Storage system and storage control method | |
WO2012050935A2 (en) | Apparatus, system, and method for data transformations within a data storage device | |
US20140195499A1 (en) | Real-time classification of data into data compression domains | |
US7587552B2 (en) | Computer system and performance tuning method | |
JP4884721B2 (en) | Storage system and storage control method that do not require storage device format | |
US11256448B2 (en) | Network storage gateway | |
US6912643B2 (en) | Method of flexibly mapping a number of storage elements into a virtual storage element | |
US10802958B2 (en) | Storage device, its controlling method, and storage system having the storage device | |
US6925530B2 (en) | Initialization of a storage system | |
US20090185762A1 (en) | Data structure for image file | |
JP2006134026A (en) | Disk array device and raid level setting method | |
CN114822631A (en) | Hybrid NVME SSD storage system based on MRAM main memory |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
FEPP | Fee payment procedure |
Free format text: MAINTENANCE FEE REMINDER MAILED (ORIGINAL EVENT CODE: REM.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |