`
`1. A storage router for providing
`virtual local storage on remote
`storage devices to devices, comprising:
`
`U'l
`
`U.S. Patent No. 6,073,209 entitled
`"Data storage controller providing
`multiple hosts with access to multiple
`storage subsystems"
`The Data storage controller (controller)
`is a storage router that networks with
`storage arrays:
`"A computer network comprises a number
`of storage controllers, each coupled to one
`of a plurality of storage arrays, each storage
`array including at least one mass storage
`device." [Abstract]
`
`The controller provides remote access:
`"Multiple copies of data are maintained in
`storage arrays that are geographically
`remote to each other, such that any copy can
`be accessed by any host." [Abstract]
`
`"Hence, there is a need for the capability to
`store multiple back-up copies of data in
`geographically separate locations, while still
`permitting quick and easy access by a host
`computer to anyback-up copy." [1:34-37]
`
`"With respect to a given (local) storage
`controller, any or all of the other (remote)
`storage controllers, host computer systems,
`and storage arrays may therefore be located
`at distant locations to the local storage
`controller." [ 4:3-6]
`
`The controller provides virtual local
`storage:
`"Each storage controllers includes an
`interface with a host that emulates a mass
`storage device and an interface with a local
`storage array that emulates a host. The
`interfaces to the host and local storage
`arrays are independent of the type ofhost or
`devices in the local storage array. Two or
`more hosts may be dissimilar to each other,
`and two or more storage arrays may include
`dissimilar mass storage devices. Hosts
`
`(cid:20)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
` CROSSROADS EXHIBIT 2015
`Oracle Corp. et al v Crossroads Systems, Inc.
` IPR2014-01209
`
`
`
`a frrst controller operable to connect to
`and interface with a frrst transport
`medium;
`
`a second controller operable to
`connect to and interface with a second
`transport medium; and
`
`The controller includes a first (Fibre
`Channel) controller operable to connect
`to and interface with a first (Fibre
`Channel) transport medium:
`''Note that in other embodiments, however,
`the data communication paths 7 and 8 may
`conform to other protocols and standards,
`such as serial SCSI, Fiber Channel, or
`ESCON." [ 4:25-38]
`
`"Again, in other embodiments, the data
`communication paths 7 and 8 may conform
`to other protocols and standards, such as
`serial SCSI, Fiber Channel, or ESCON."
`[6:6-9]
`
`"The controller device interface 16
`connects communication path 9 to the bus
`1 7 in order to connect a remote storage
`controller to storage controller 3. Controller
`device interface 16 may be an Ethernet,
`ATM, T1, T3, or FDDI adapter, or any
`other suitable device, depending upon the
`nature of the communication link 9." [6:56-
`61]
`The controller includes a second (SCSI)
`controller operable to connect to and
`interface with a second (SCSI) transport
`medium:
`"In one embodiment, each storage
`controller communicates with its local host
`computer system and its local storage array
`using standard SCSI (Small Computer
`Systems Interface) protocols." [4:18-21]
`
`"Again, in other embodiments, the data
`communication paths 7 and 8 may conform
`to other protocols and standards, such as
`serial SCSI, Fiber Channel, or ESCON."
`[6:6-9]
`
`"In one embodiment, host device interface
`14 and storage device interface 15 each
`comprise a SCSI adapter, such that
`communication between storage controller 3
`and the local host computer and storage
`
`3
`
`(cid:21)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`
`
`a buffer providing memory work space
`for the storage router;
`
`access stored data using virtual addressing."
`[Abstract]
`
`"The storage controller emulates a local
`storage array for the host computer system
`which it services and emulates a host
`computer system for the local storage array
`which it accesses. Host computer systems
`access stored data using virtual device
`addresses, which are mapped to real device
`addresses by the storage controller." [3: 14-
`19]
`
`The controller provides storage to
`multiple hosts (Fibre Channel devices):
`"It is further desirable that such a storage
`controller allow multiple host computers at
`different locations to access any copy of
`stored data." [39-42]
`
`"In another embodiment, a storage
`controller may have a direct interface with
`more than one host or may have redundant
`interfaces with the same host." [ 5: 16-18]
`The controller includes a buffer
`providing memory work space for the
`storage router:
`"The storage controller 3 includes a central
`processing unit (CPU) 10, random-access
`mem01y (RAM) 11, a non-volatile storage
`facility (NVSF) 12, an MSD 13, each of
`which is coupled to a bus 17." [6:24-'27]
`
`"In one embodiment, the storage controller
`3 includes an operating system (OS) 20
`coupled to emulation drivers 21, physical
`drivers 22, communication drivers 23, and
`local memory 24. Memory 24 may include
`any combination of RAM 11, NVSF 12, or
`MSD 13 (see FIG. 3)." [7:23-28]
`
`"The OS 20 controls the overall operation
`of the storage controller, including
`emulation, data flow, caching of data in the
`local memory 24, control of data mirroring,
`and error recovery." [7:29-32]
`
`2
`
`(cid:22)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`
`
`a supervisor unit coupled to the first
`controller, the second controller and the
`buffer,
`
`the supervisor unit operable to map
`between devices connected to the first
`transport medium and the storage
`devices,
`
`array is performed using SCSI protocols."
`[6:45-50]
`The controller includes a supervisor unit
`coupled to the first controller, the
`second controller and the buffer:
`"The storage controller 3 includes a central
`processing unit (CPU) 1 0, random-access
`memory (RAM) 11, a non-volatile storage
`facility (NVSF) 12, an MSD 13, each of
`which is coupled to a bus 17." [6:24-27]
`
`"In one embodiment, the present invention
`is carried out in the storage controller by the
`CPU 10 executing sequences of instructions
`that are contained in a memory." [7:5-7]
`The controller maps from virtual
`addresses to physical locations:
`"During a data access, the storage controller
`connected to the accessing host maps a
`virtual address provided by the host to a real
`physical location in any of the storage
`arrays, such that the actual location of the
`data is transparent to the host." [Abstract]
`
`"The storage controller emulates a local
`storage array for the host computer system
`which it services and emulates a host
`computer system for the local storage array
`which it accesses. Host computer systems
`access stored data using virtual device
`addresses, which are mapped to real device
`addresses by the storage controller." [3:14-
`19]
`
`"As will be explained below, data is
`accessed using virtual addressing, such that
`a host computer system has no knowledge
`of which physical storage device is being
`accessed." [ 4:46-49]
`
`"Each of the storage controllers also
`provides virtualized data access and
`emulation, as mentioned above. A local
`storage controller will emulate its local
`storage array from the viewpoint of its local
`host computer system; similarly, the local
`
`4
`
`(cid:23)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`
`
`storage controller will emulate its local host
`computer system from the viewpoint of its
`local storage array." [5:65-6:4]
`
`"A local host computer accesses data by
`transmitting a (virtual) host address to its
`local storage controller. The host address is
`then mapped to a real address representing
`a location on one or more physical MSDs,
`as will be described below in detail. The
`mapping is completely transparent to all of
`the host computers." [6:10-15]
`
`"The host device interface 14 connects
`communication path 7 to the bus 17 in order
`to connect a local host computer to the
`storage controller 3. The storage device
`interface 15 connects communication path 8
`to the bus 1 7 in order to connect a local
`storage array to storage controller 3."
`[6:40-44]
`
`"As mentioned above, a storage controller
`according to the present invention uses
`virtual-to-real device mapping to provide
`transparency of 110 operations to the host
`computers, as will now be described. A
`single host (virtual) address may map to a
`single physical address, or, to improve
`performance, the storage controller may
`map a single host address to multiple
`physical addresses, which may be
`distributed among multiple MSDs located in
`different storage arrays. The storage
`controller 3 maps a host address to one or
`more physical addresses using a two-part
`process that is transparent to all hosts.
`Specifically, a host address received from a
`host is first mapped to a logical address,
`and the logical address is then mapped to a
`physical (real) address in one or more
`MSDs." [8:62-9:8]
`
`"FIG. 7 illustrates the process of mapping a
`virtual address to a logical address." [9:8-9]
`
`5
`
`(cid:24)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`
`
`to implement access controls for
`storage space on the storage devices
`and
`
`See: further description of mapping in
`Figures 7 through 10,12, 14 ,and 15 and
`corresponding text.
`
`"A storage controller of the present
`invention further allows data blocks to be
`write protected, so that a block cannot be
`modified from any host computer. Write
`protection may be desirable for purposes
`such as virus protection or implementation
`of security firewalls. Write protection can
`be achieved by configuring the storage
`controller appropriately at set-up time or by
`inputting a write protect command to the
`storage controller from a host computer."
`[15:39-47]
`The controller implements access
`controls for storage space on the SCSI
`storage devices:
`"A storage controller of the present
`invention further allows data blocks to be
`write protected, so that a block cannot be
`modified from any host computer. Write
`protection may be desirable for purposes
`such as virus protection or implementation
`of security firewalls. Write protection can
`be achieved by configuring the storage
`controller appropriately at set-up time or by
`inputting a write protect command to the
`storage controller from a host computer."
`[15:39-47]
`
`"Each storage controller may be coupled to
`at least one host processing system and to at
`least one other storage controller to control
`access of the host processing systems to the
`mass storage devices." [Abstract J
`
`"The control circuitry is configured to
`enable the host processing system to access
`each ofthe storage arrays." [1:62-64]
`
`"Each of the storage controllers also
`provides virtualized data access and
`emulation, as mentioned above. A local
`
`6
`
`(cid:25)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`
`
`storage controller will emulate its local
`storage array from the viewpoint of its local
`host computer system; similarly, the local
`storage controller will emulate its local host
`computer system from the viewpoint of its
`local storage array." [5:65-6:4]
`
`"If the device is not busy, then in step 606 it
`is determined whether the device or
`particular blocks to be accessed are
`reserved. If so, the routine exits in step 615
`with a "reservation conflict" error being
`provided to the host." [8:47-51]
`
`"As mentioned above, a storage controller
`according to the present invention uses
`virtual-to-real device mapping to provide
`transparency of 110 operations to the host
`computers, as will now be described. A
`single host (virtual) address may map to a
`single physical address, or, to improve
`performance, the storage controller may
`map a single host address to multiple
`physical addresses, which may be
`distributed among multiple MSDs located in
`different storage arrays." [8:62-9:3]
`The controller processes data in the
`buffer to interface between the
`controllers:
`"In particular, the emulation drivers 21
`receive read and write requests from the
`host computer 2 and convert the read and
`write requests into a format recognized by
`the OS 20. The emulation drivers 21 further
`function to transfer any data received from
`the local storage array or a remote storage
`array to the local host computer." [7:35-40]
`The controller uses native low level,
`block protocols because it handles read
`and write requests from host computers:
`"In particular, the emulation drivers 21
`receive read and write requests from the
`host computer 2 and convert the read and
`write requests into a format recognized by
`the OS 20. The emulation drivers 21 further
`function to transfer any data received from
`
`7
`
`(cid:26)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`to process data in the buffer to
`interface between the first controller
`and the second controller to allow
`access from devices connected to the
`first transport medium to the storage
`devices
`
`using native low level, block
`protocols.
`
`
`
`2. The storage router of claim 1,
`wherein the supervisor unit maintains
`an allocation of subsets of storage space
`to associated devices connected to the
`first transport medium, wherein each
`subset is only accessible by the
`associated device connected to the first
`transport medium.
`
`the local storage array or a remote storage
`array to the local host computer." [7:35-40]
`
`"In response to each I/0 request (read or
`write) from a host, the storage controller
`performs a series of standard checks before
`carrying out the operation." [8:24-26]
`The controller provides access control
`so that each subset is only accessible by
`the associated host (Fibre Channel)
`device:
`"As mentioned above, a storage controller
`according to the present invention uses
`virtual-to-real device mapping to provide
`transparency of I/0 operations to the host
`computers, as will now be described. A
`single host (virtual) address may map to a
`single physical address, or, to improve
`performance, the storage controller may
`map a single host address to multiple
`physical addresses, which may be
`distributed among multiple MSDs located in
`different storage arrays." [8:62-9:3]
`
`The controller maintains a configuration
`for mapping:
`"The control circuitry is configured to
`enable the host processing system to access
`each ofthe storage arrays." [1:62-64]
`
`"For example, these parameters can be
`programmed into a storage controller by
`connecting a keyboard and a display to
`ports on the storage controller.
`Alternatively, the storage controller can be
`configured by using one of the host
`computers to transmit configuration
`commands and data to the storage
`controller. Further, a remote storage
`controller can be configured via a local
`storage controller." [ 5 :38-45]
`
`The storage controller maintains and uses a
`tree structure such as that illustrated in FIG.
`8 to map the host interface ID and block
`number to a logical device. r9:21-23]
`
`8
`(cid:27)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`
`
`The controller could use host computers
`(workstations):
`"It is further desirable that such a storage
`controller allow multiple host computers at
`different locations to access any copy of
`stored data." [39-42]
`The controller could use hard disk
`drives:
`"It is common to store large volumes of
`data on non-volatile mass storage devices,
`such as magnetic or optical disks." [1:23-
`25]
`
`"The controller device interface 16
`connects communication path 9 to the bus
`1 7 in order to connect a remote storage
`controller to storage controller 3. Controller
`device interface 16 may be an Ethernet,
`ATM, Tl, T3, or FDDI adapter, or any
`other suitable device, depending upon the
`nature of the communication link 9." [6:56-
`61]
`
`"In one embodiment, host device interface
`14 and storage device interface 15 each
`comprise a SCSI adapter, such that
`communication between storage controller 3
`and the local host computer and storage
`array is performed using SCSI protocols."
`[6:45-50]
`
`3. The storage router of claim 2,
`wherein the devices connected to the
`first transport medium comprise
`workstations.
`
`4. The storage router of claim 2,
`wherein the storage devices comprise
`hard disk drives.
`
`5. The storage router of claim 1,
`wherein the first controller comprises:
`a first protocol unit operable to
`connect to the first transport medium;
`
`a frrst-in-frrst-out queue coupled to
`the first protocol unit; and
`a direct memory access (DMA}
`interface coupled to the first-in-first-
`out queue and to the buffer.
`6. The storage router of claim 1,
`wherein the second controller
`comprises:
`a second protocol unit operable to
`connect to the second transport
`medium;
`
`an internal buffer coupled to the
`second protocol unit; and
`a direct memory access (DMA)
`interface coupled to the internal buffer
`and to the buffer of the storage router.
`
`9
`
`(cid:28)(cid:3)(cid:82)(cid:73)(cid:3)(cid:28)
`
`