SCSI是一套完整的數據傳輸協議,其主要功能是在主機和存儲設備之間傳送命令、狀態和塊數據。在各類存儲技術中,SCSI技術可謂是最重要的脊梁。
SCSI協議位於操作系統和外部資源之間,它具有一系列的功能組件,操作系統對外部設備(如磁盤、磁帶、光盤、打印機等)的I/O操作均可以通過SCSI協議來實現,一般情況下,SCSI協議都嵌入到設備驅動器或者主機適配器的板載邏輯中。
例如,應用程序一般將數據作為文件來訪問。盡管數據最終都將在磁盤上以數據塊的方式存放,但是文件的檢索需要一系列功能將未加工的塊數據裝配成應用程序能夠操作的連續文件。這個過程的第一步由應用程序通過操作系統所連接的文件系統承擔。文件系統以目錄、文件夾和文件的方式來創建人們可讀的數據抽象。當一個用戶的應用程序打開一個文件時,會引發一系列的進程。它們使用底層SCSI命令,控制數據塊從存儲系統到內存的安全傳輸。因此在文件系統層次中,數據傳輸在文件描述和塊I/O之間進行。
正像文件系統描述了對用戶應用程序數據的抽象一樣,物理存儲設備被描述成文件系統的抽象。例如,在Windows中的E盤或者Linux中的/dev/sda可以是一個單獨的磁盤、一個大磁盤的一部分或者多磁盤的條帶陣列。文件系統依賴於卷管理功能,它將各種存儲設備看作可以並發的、很容易訪問的資源。設備的虛擬化將物理存儲轉換成邏輯存儲,並且承擔了在磁盤上放置數據塊所需的復雜任務。文件/數據塊轉換和映射功能可以像一個單獨的卷管理應用程序那樣復雜,也可以像適配卡設備驅動程序接口那么簡單明了。例如,Windows NT提供了Windows磁盤管理程序,為物理磁盤分配邏輯驅動器名。適配卡的設備驅動程序負責將它的資源作為一個物理SCSI實體,出現在Windows磁盤管理程序中。Windows磁盤管理程序可以為這些資源分配邏輯名,文件系統按順序使用這些邏輯名為目錄和文件確定位置。
如圖1所示,邏輯抽象的層次從實際的物理SCSI設備一 直到同主機系統的連接。在操作系統層次,一般的訪問方法允許對SCSI設備進行統一的處理,而不考慮它們在系統中的物理連接。在保存文件時,文件系統並不 關心邏輯驅動器是一個SCSI單元、一個Fibre Channel陣列還是千兆以太網的某個IP存儲設備。在各種情況下,邏輯實體和物理存儲的映射完成主機系統和合適的目標SCSI命令的發送,它在二者之 間用來傳輸數據塊。
不考慮潛在的通道,操作系統對物理設備的描述是通過總線/目標/LUN三元組定義的,這種三元組來自於並行SCSI技術。總線描述了主機上潛在的幾 個SCSI接口之一,每一個都支持一個單獨的磁盤串。目標代表了串上一個單獨的磁盤控制器,窄SCSI一共可以有7個,寬SCSI可以有15個。LUN標 志允許控制器管理額外的磁盤,例如一個RAID設備。
總線/目標/LUN三元組和邏輯設備標識符之間的映射為物理設備提供了到高層文件系統的端口。因為Fibre Channel和IP存儲是串行通信,沒有總線設備,為了和操作系統的SCSI名稱相兼容,總線標識符可以偽造。例如,一個單獨的服務器中的兩個IP存儲 網卡可以具有不同的總線標識符以模仿SCSI適配器配置。廠商不同,具體實現也不同,但是設備驅動器程序遵守操作系統的標准SCSI訪問方法。
總線/目標/LUN標識符可以進一步映射到某個傳輸的尋址條件上。例如,FCP(Fibre Channel Protocol,光纖通道協議)將總線/目標/LUN映射到DI(deviceidentification,設備標識符)/LUN對上。因此,物理存 儲的表示有兩個組成部分。一個是對於操作系統,使用大家都熟悉的基於SCSI三元組的可訪問實體;另外一個是針對某個傳輸,以適應更改拓撲結構的尋址條 件。
在這一層下面,數據塊傳送的啟動器(initiator)和目標器(target)相互交換SCSI-3命令和狀態。啟動器部署在發起I/O請求的 設備中,而目標器部署在執行I/O操作的設備中,一般來講,主機側的HBA卡作為啟動器,而磁盤、陣列等作為目標設備。下圖是一個典型的SCSI系統:
SCSI協議雖然是目前最為流行的數據傳輸協議,但是也存在着很多的缺點,如:SCSi總線上設備數限制為15,不適用於多服務器多存儲設備的網絡結構;SCSI總線的長度限制在25米,不適用於構造各種網絡拓撲結構等。下圖是SCSI協議流程: