SCSI是一套完整的數據傳輸協議,其主要功能是在主機和存儲設備之間傳送命令、狀態和塊數據。在各種存儲技術中,SCSI技術可謂是最重要的脊樑。html
SCSI協議位於操做系統和外部資源之間,它具備一系列的功能組件,操做系統對外部設備(如磁盤、磁帶、光盤、打印機等)的I/O操做都可以經過SCSI協議來實現,通常狀況下,SCSI協議都嵌入到設備驅動器或者主機適配器的板載邏輯中。java
例如,應用程序通常將數據做爲文件來訪問。儘管數據最終都將在磁盤上以數據塊的方式存放,可是文件的檢索須要一系列功能將未加工的塊數據裝配成應用程序可以操做的連續文件。這個過程的第一步由應用程序經過操做系統所鏈接的文件系統承擔。文件系統以目錄、文件夾和文件的方式來建立人們可讀的數據抽象。當一個用戶的應用程序打開一個文件時,會引起一系列的進程。它們使用底層SCSI命令,控制數據塊從存儲系統到內存的安全傳輸。所以在文件系統層次中,數據傳輸在文件描述和塊I/O之間進行。mysql
正像文件系統描述了對用戶應用程序數據的抽象同樣,物理存儲設備被描述成文件系統的抽象。例如,在Windows中的E盤或者Linux中的/dev/sda能夠是一個單獨的磁盤、一個大磁盤的一部分或者多磁盤的條帶陣列。文件系統依賴於卷管理功能,它將各類存儲設備看做能夠併發的、很容易訪問的資源。設備的虛擬化將物理存儲轉換成邏輯存儲,而且承擔了在磁盤上放置數據塊所需的複雜任務。文件/數據塊轉換和映射功能能夠像一個單獨的卷管理應用程序那樣複雜,也能夠像適配卡設備驅動程序接口那麼簡單明瞭。例如,Windows NT提供了Windows磁盤管理程序,爲物理磁盤分配邏輯驅動器名。適配卡的設備驅動程序負責將它的資源做爲一個物理SCSI實體,出如今Windows磁盤管理程序中。Windows磁盤管理程序能夠爲這些資源分配邏輯名,文件系統按順序使用這些邏輯名爲目錄和文件肯定位置。linux
如圖1所示,邏輯抽象的層次從實際的物理SCSI設備一 直到同主機系統的鏈接。在操做系統層次,通常的訪問方法容許對SCSI設備進行統一的處理,而不考慮它們在系統中的物理鏈接。在保存文件時,文件系統並不 關心邏輯驅動器是一個SCSI單元、一個Fibre Channel陣列仍是千兆以太網的某個IP存儲設備。在各類狀況下,邏輯實體和物理存儲的映射完成主機系統和合適的目標SCSI命令的發送,它在兩者之 間用來傳輸數據塊。sql
不考慮潛在的通道,操做系統對物理設備的描述是經過總線/目標/LUN三元組定義的,這種三元組來自於並行SCSI技術。總線描述了主機上潛在的幾 個SCSI接口之一,每個都支持一個單獨的磁盤串。目標表明瞭串上一個單獨的磁盤控制器,窄SCSI一共能夠有7個,寬SCSI能夠有15個。LUN標 志容許控制器管理額外的磁盤,例如一個RAID設備。windows
總線/目標/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協議流程:併發