Abstract:
A “LUN Table” enables Logical Unit Number (LUN) mapping/masking within an IOV adapter included in a Serial Attached Small Computer System Interface (“SAS” or “Serial Attached SCSI”). A plurality of System Images (“SI”) share block storage through the SAS. The IOV adapter includes one or more Virtual Functions (VF), a Physical Function (PF), and a LUN Table within the PF. The VF allows each SI to communicate I/0 requests with a storage device through the PF. The LUN Table maps the I/0 requests to unique locations within the storage device. Each SI is isolated from all other SIs. Interference between each SI is avoided. A VIOS or a LUN mapping/masking SAN are not required. I/0 latency, processor overhead and storage cost are improved over prior LUN mapping/masking solutions.

Description:
FIELD OF THE INVENTION 
       [0001]    A method and system for managing access to block storage by System Images and for providing access to the block storage Input/Output Virtualization (IOV) hardware. 
       BACKGROUND OF THE INVENTION 
       [0002]    The Peripheral Component Interconnect Special Interest Group (PCI SIG) Workgroup developed a specification that adds I/O virtualization (IOV) capability to PCIe Single Root IOV (SR-IOV) Serial Attached SCSI (SAS) adapters. IOV allows an Input/Output (I/O) device, for example a storage device, to be shared by a plurality of System Images (SI). 
         [0003]    Modern computing and storage systems increasingly use IOV to manage IT resources through load balancing. An IOV adapter has a Base Function (BF), a Physical Function (PF) and a Virtual Function (VF). The BF manages the Multi-Root (MR) features of a MR device. The PF contains Native Single-Root IOV (“SR-IOV”) functionality. The VF is a function associated with the PF that shares one or more physical resources with the PF and other VFs associated with the same PF. These components logically connect an SI to a storage device. Native IOV requires a PCI Manager (SR-PCIM or MR-PCIM) to perform PCIe fabric discovery. A MR device also requires a PCI Manager to implement Multi-Root Aware (“MRA”) components. Each MR-PCIe root complex has its own Virtual Hierarchy (“VH”). 
         [0004]    For a SR-IOV Serial Attached SCSI (SAS) adapter, the SAS feature provides persistent storage, but it does not optimize the utilization of this persistent storage by an SI. In addition, the typical SR-IOV SAS enabled adapter does not prevent one SI from accessing the data storage of another SI. 
         [0005]    A known method of preventing one SI from accessing the data storage of another System Image is Logical Unit Number (LUN) Masking and Mapping. LUNs convert storage into logical storage space and differentiate between different blocks of storage. The System Image must not access or recognize other LUNs that have been assigned to other System Images. LUN Masking and Mapping prevents a server from corrupting disks or other storage belonging to other servers. For example, Windows servers attached to a Storage Area Network (SAN) will occasionally corrupt non-Windows (Unix, Linux, NetWare) storage on the SAN by attempting to write Windows storage labels to them. 
         [0006]    One method for connecting a client having a plurality of System Images to a storage device using LUN Masking and Mapping is illustrated in  FIG. 1B . This solution requires the use of a hypervisor  130 . The hypervisor  130  is typically in the form of firmware. The client includes a plurality of System Images (SI 0  to SI n-1 )  116 ,  117 , and  118 . The hypervisor  130  connects port  140  to Virtual I/O System (VIOS)  145 . The client issues I/O requests  135 ,  136 ,  137  from each SI  116 ,  117 ,  118  to the VIOS  145  through hypervisor  130  and port  140 . The VIOS forwards these I/0 requests through a network connection or “fabric”  125  to the correct block storage in a storage device  120 . The fabric  125  is part of the hypervisor  130  in this example. The block storage can be one or more LUNs on a SAN appliance, an internal adaptor, or other construct built on the LUNS. Unfortunately, this approach increases the path length I/O latency and processor usage. The user is also required to maintain and manage the VIOS. 
         [0007]    SAN storage devices  121  with built in LUN masking capabilities may be used in combination with an IOV adapter  150  as illustrated in  FIG. 1C . In this example, each SI  116 ,  117 ,  118  initiates its I/0 request  135 ,  136 ,  137  through a corresponding Virtual Function (VI 0  to VI n-1 )  145 ,  146 ,  147  to the Physical Function (PF)  148  of the IOV adapter  150 . This example improves the system of  FIG. 1B . In this example, the VIOS is eliminated and the hypervisor is not required for the fabric  125 . I/0 path length and latency are similar to a direct connection to a storage device. Unfortunately, such storage devices are expensive. They also require the user to maintain and manage the LUN Masking and Mapping on the storage device  121 . 
         [0008]    A novel method and apparatus is needed to perform LUN Masking and Mapping within a PCIe SR-IOV enabled SAS adapter without the need for a VIOS, a hypervisor, or a storage area network appliance. 
       SUMMARY OF THE INVENTION 
       [0009]    A “LUN Table” enables Logical Unit Number (LUN) mapping/masking within an IOV adapter on a Serial Attached Small Computer System Interface (“SAS” or “Serial Attached SCSI”). Multiple System Images (“SI”) share block storage through the SAS. The LUN Table assures that multiple System Image (SI) data is selectively and securely routed to and from storage without interference between different SIs. The SI data is sent via input/output (I/O) requests through an Input/Output Virtual (IOV) Adapter. The IOV adapter includes one or more Virtual Functions (VF), a Physical Function (PF), and the programmable LUN Table. An SI communicates with a corresponding VF. The VF interfaces with the PF. The PF contains the LUN Table. The LUN Table designates specific block storage locations for each SI within a storage device. The stored data for each SI is isolated from the stored date for every other SI. A VIOS, a hypervisor supplied fabric, or a complex and expensive SAN are not required. A programming interface allows for the set up or modification of the LUN Table. 
     
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS  
         [0010]    The novel features believed characteristic of the invention are set forth in the appended claims. The invention itself, however, as well as a preferred mode of use, further objectives and advantages thereof, will best be understood by reference to the following detailed description of an illustrative embodiment when read in conjunction with the accompanying drawings, wherein: 
           [0011]      FIG. 1A  depicts a schematic diagram of an exemplary computer network system; 
           [0012]      FIG. 1B  depicts a known method for implementing LUN Mapping and Masking; 
           [0013]      FIG. 1C  depicts another known method for using the LUN Mapping and Masking capabilities of a SAN; 
           [0014]      FIG. 2A  depicts a schematic diagram of a computer memory containing the LUN Table and associated data files; 
           [0015]      FIG. 2B  depicts a schematic diagram of a memory associated with an IOV for receiving LUN Table programming instructions and data; 
           [0016]      FIG. 3  depicts a schematic diagram of the LUN Table within an IOV adapter for mapping System Image (SI) data to a persistent storage appliance; and 
           [0017]      FIG. 4  depicts exemplary programming and logic for the LUN Table. 
       
    
    
     DETAILED DESCRIPTION 
       [0018]    A person of ordinary skill in the art will appreciate that the present invention may be implemented in a variety of software and hardware configurations. It is believed, however, that the invention is described best as a computer program that configures and enables one or more general-purpose computers to implement the novel aspects of the invention. 
         [0019]    “Computer hardware” or “hardware,” refers to any machine or apparatus that is capable of accepting, performing logic operations on, storing, or displaying data, and includes without limitation processors, memory and other physical devices. 
         [0020]    “Computer software” or “software,” refers to any set of instructions operable to cause computer hardware to perform an operation. Software includes a “computer program” or “program.” 
         [0021]    A “computer,” includes any useful combination of hardware and software. 
         [0022]    A “computer program” or “program” includes any software operable to cause computer hardware to accept, perform logic operations on, store, or display data. A computer program may, and often is, comprised of a plurality of smaller programming units, including without limitation subroutines, modules, functions, methods, and procedures. The functions of a computer program may be distributed among a plurality of computers and computer programs. 
         [0023]    A “client initiator” includes any device that requests input/output (I/O) operations. 
         [0024]    “Input/Output (I/O)” includes any data transfer to or from a computer. 
         [0025]    An “Input/Output Virtualization (IOV) adapter” means a hardware adapter capable of being shared by multiple System Images. The hardware is a collection of Virtual Functions and Physical Functions. An IOV adapter implements Serial Attached SCSI (SAS) for persistent storage. 
         [0026]    A “Logical Unit Number (LUN)” means a logical entity that converts storage into logical storage space. LUNs differentiate between different blocks of storage. 
         [0027]    “Persistent storage” means the ability of a device to maintain data even when the device is turned off. 
         [0028]    A “Physical Function (PF)” is a component of IOV hardware that allows connectivity to storage, but does not provide a direct method for an SI to initiate an I/O request. The SI communicates through a VF to the PF. 
         [0029]    A “Physical ID (PID)” is an element of the LUN Table used to identify a physical data storage segment within a persistent storage device. 
         [0030]    A “Physical LUN (PLUN)” is an element of the LUN Table used to identify a physical location for a data storage logical unit within a persistent storage device. 
         [0031]    A “root complex” means the beginning of the connection from the I/O or I/O system to the CPU and memory. 
         [0032]    A “System Image (SI)” includes both an operating system, and an operating system in combination with applications. 
         [0033]    A “SI n ” is the n th  selected System Image among a plurality of System Images SI 0  to SI n-1 . 
         [0034]    A “storage device” means a computing device for storage-related functions. 
         [0035]    A “Virtual Function (VF)” is a component of an IOV hardware adapter that provides sufficient logical capabilities to allow an SI to communicate through the PF. 
         [0036]    A “VF n ” is the n th  selected Virtual Function among a plurality of Virtual Functions VF 0  to VF n-1 . 
         [0037]    A “Virtual ID (VID)” is an element of the LUN Table used to logically identify a physical block data storage location. 
         [0038]    A “Virtual LUN (VLUN)” is an element of the LUN Table used to logically identify a logical unit of data storage. 
         [0039]    An exemplary network of computer hardware, is depicted in  FIG. 1A . A “network” comprises any number of hardware devices coupled to and in communication with each other through a communications medium, such as the Internet. A “communications medium” includes without limitation any physical, optical, electromagnetic, or other medium through which hardware or software can transmit data. For descriptive purposes, exemplary network  100  has only a limited number of nodes, including nodes for a workstation computer  105 , a workstation computer  110 , a server computer  115 , and a persistent storage  120 . A Network connection  125  comprises all hardware, software, and communications media necessary to enable communication between network nodes  105 - 120 . Unless otherwise indicated in context below, all network nodes use publicly available protocols or messaging services to communicate with each other through network connection (or “fabric”)  125 . 
         [0040]    The LUN Table  360  is typically stored in a memory  220  as schematically illustrated in  FIG. 2A . The term “memory,” as used herein, includes without limitation any volatile or persistent medium, such as an electrical circuit, magnetic disk, or optical disk, in which a computer can store data or software for any duration. A single memory may encompass and be distributed across a plurality of media. Further, LUN Table  360  may reside in more than one memory distributed across different computers, servers, logical partitions, or other hardware devices. The elements depicted in memory  220  may be located in or distributed across separate memories in any combination, and LUN Table  360  may be adapted to identify, locate, and access any of the elements and coordinate actions, if any, by the distributed elements. Thus,  FIG. 2A  is included merely as a descriptive expedient and does not necessarily reflect any particular physical embodiment of memory  220 . As depicted in  FIG. 2A , though, memory  220  may include additional data and programs. Of particular import to the LUN Table  360 , memory  220  includes “LUN Program  400 , “Data File”  260 , “Mapping File”  270 , and a “Record File”  280 . As illustrated, LUN Program  400  accepts programming instructions for the LUN Table  360 . The LUN Program  400  may use and record data in a Data File  260  and a Record File  280  to generate LUN Table mapping instructions in a Mapping File  270 . LUN Table  360  may be implemented as computer software, or it may be implemented as firmware stored in a computer hardware device, including an IOV Adapter as described below. 
         [0041]      FIG. 2B  depicts another memory  230  associated with an IOV Adapter. Memory  230  receives LUN Table mapping instructions through a LUN Interface  410 . The LUN Interface  410  populates the data points in the LUN Table  360 . 
         [0042]      FIG. 3  a schematic flow diagram of LUN Table  360  deployed within an IOV Adapter  330  to implement SAS for persistent storage  370  for multiple System Images (SI n )  310 . The IOV Adapter  330  may be included within a PCIe Manager. The masking/mapping starts ( 300 ) when Initiator  305  issues an I/O request to SI n    310 . SI n    310  data is sent via input/output requests through Input/Output Virtual (IOV) Adapter  330 . IOV Adapter  330  includes one or more Virtual Functions (VF)  340 , a Physical Function (PF)  350 , and a LUN Table  360 . These components communicate to ensure secure storage and retrieval for SI n    310 , within storage appliance  370 . SI n    310  communicates via input/output requests with VF n    340 . VF n    340  allows SI n    310  to initiate communication through PF  350 . PF  350  provides a specific connection with Storage Appliance  370 . LUN Table  360  designates specific storage locations within Storage Appliance  370  for SI n    310 . SI n    310  data is stored within Storage Appliance  370 , in designated discrete physical and virtual logical units PLUN n  and VLUN n . In the example of  FIG. 3 , VLUN 0  is associated with PLUN 1  and VID 1  is associated with PID 1   380 , and VLUN 1  associated with PLUN 0  and VID 1  is associated with PID 2   390 . The designation of specific storage locations by a LUN Table  360  prevents interference or distortion of SI n    310  data by other System Images. 
         [0043]    The exemplary LUN mapping/masking table  360  is reproduced from  FIG. 3  in the following Table 1: 
         [0000]    
       
         
               
               
               
               
               
               
             
           
               
                 TABLE 1 
               
               
                   
               
               
                 System Image 
                 IOV 
                 Virtual LUN 
                 Virtual ID 
                 Physical LUN 
                 Physical ID 
               
               
                 (SI) 
                 Function 
                 (VLUN) 
                 (VID) 
                 (PLUN) 
                 (PID) 
               
               
                   
               
             
             
               
                 n 
                 VF n   
                 0 
                 1 
                 1 
                 1 
               
               
                   
                   
                 1 
                 1 
                 0 
                 2 
               
               
                   
               
             
          
         
       
     
         [0044]    In this example the LUN Table represents the n th  System Image or SI n  and n th  Virtual Function or VF n . In practice, Table 1 includes data points for each Virtual Function VF 0  to VF n-1 . Each VF n  is represented by two rows of data points as illustrated in Table 1 and  FIG. 3 . 
         [0045]    The I/O requests from each SI n    310  are mapped to a protected block  380 ,  390  of storage device  370 . The response to the requests is returned by the same path to the SI n    310 . The system enters and exits through the Client Initiator  305 . The association of VLUN, VID, PLUN and PID illustrated in  FIG. 3  and Table 1 is by way of example to show how LUN table  360  may be populated to define associations. These associations may be hardwired, contained in firmware or “flash” memory, or they may be programmed by an administrator. These associations may also be adjusted by other software or hardware if necessary for fault correction or system optimization as long as the isolation of each SI n  is maintained. 
         [0046]    The LUN Table  360  may be pre-programmed as illustrated in  FIG. 4 . Programming starts ( 401 ) by accessing the LUN Program  400  stored in Memory  220  ( 400 ). LUN Data Points are entered into the Data File  260  of Memory  220  ( 405 ) until the LUN Data Points entry is complete ( 407 ). When all of the LUN Data Points are entered, the updated LUN Table Data is stored in a Mapping File  270  on Memory  220  ( 410 ). Memory  220  accesses the LUN Interface  415  of Memory  230  ( 415 ). The stored LUN Table  360  is populated with the stored LUN Table Data through the LUN Interface  415  ( 420 ). The Record File  280  on memory  220  is updated with the new LUN Table version  280  ( 430 ) and the LUN Program ends ( 403 ). The programming of the LUN Table may be hard wired, contained in a flash or other persistent memory, or enabled by software. The programming software may include automated steps to modify the LUN Table in response to changing system requirements. 
         [0047]    It will be understood from the foregoing that various modifications and change may be made in the preferred embodiment of the present invention by those skilled in the art without departing from its true spirit. It is intended that this description is for purposes of illustration only and should not be construed in a limiting sense. The scope of the invention should be limited only by the language of the following claims.