(文章來源:itworld123)
企業級存儲系統通常也是運行在常規操作系統之上的,比如早期的EMC的中端存儲是運行在Windows XP平臺上的,而國內的存儲廠商的產品通常是基于Linux平臺。分布式存儲更是不例外,目前分布式存儲通常都是運行在Linux操作系統之上。
為了更好地理解存儲技術,從操作系統層面理解磁盤就顯得尤為重要了。為了便于學習,本文以Linux操作系統作為參考,介紹磁盤在Linux操作系統層面的相關內容。我們通常看到的磁盤是在/dev目錄下的文件(設備)。在Linux操作系統中一切皆文件,因此磁盤設備本身也是以文件的形態呈現的。比如某個操作系統下面我們可能會看到如下內容。
上述設備中形似sdX的設備為SCSI磁盤設備。無論是基于SAS、iSCSI還是FC的磁盤設備,大概都是這個樣子。形似dm-X的是Device Map塊設備,也就是通過LVM進行管理的設備,這種設備是一種邏輯設備。在Linux操作系統中塊設備的種類很多,有本地磁盤設備、有SAN設備還有基于網絡的塊設備。在虛擬機中塊設備又呈現為另外一種文件名,比如在Xen虛擬機中偽xvdX。
雖然名稱差異很大,但是在Linux操作系統內核中的實現確實非常簡單。在內核中任何磁盤塊設備都是通過調用add_disk函數完成的。在《Linux設備驅動程序》這本書對塊設備進行了詳細的介紹,并且可以通過非常簡單的代碼實現一個自己的塊設備。
SAN的全稱是存儲區域網絡,也就是通過網絡的形式實現計算節點(客戶端)對存儲系統的訪問。在存儲系統中可以劃分若干個LUN,這些LUN通過網絡的方式連接,在客戶端呈現為一個磁盤。如圖所示,存儲系統的資源在計算節點以磁盤的形式呈現。
對于Linux操作系統來說,塊設備就好像一個文件一樣。任何讀寫數據都是以偏移和長度為基本信息下發到磁盤塊設備進行處理。因此,對于塊設備來說,它并不關系這些數據在底層是如何存儲。對于SAN存儲來說,當塊設備接收到請求后,會調用底層協議層的接口將請求轉發出去。SAN存儲使用的是SCSI協議,因此,塊設備的請求都會轉換為SCSI協議進行處理。
Linux內核實現了一個SCSI子系統,所有SCSI設備及驅動都基于該子系統實現。該SCSI子系統分為3層,SCSI上層、SCSI中層和SCSI下層。其中上層是設備層,實現比如磁盤驅動、磁帶驅動或者光盤等所有的塊設備。中層是通用層,實現SCSI的公共功能,比如錯誤處理等內容。下層是硬件驅動層,比如FC-HBA驅動和SAS-HBA卡驅動等等。
針對Linux磁盤設備來說,其發送的請求經過SCSI層后會封裝為SCSI協議包,然后通過底層的協議發送出去。對于塊設備,底層協議對用戶來時是透明的,用戶在使用塊設備的時候也不用關心塊設備底層所使用的通信協議。但是對于SCSI子系統來說是需要關系底層通信協議的,因為它要調用底層驅動的接口將數據通過該驅動發送出去。對底層驅動的調用是通過其回調函數完成的,回調函數的注冊發生在設備初始化的時候。
至此,我們了解到SAN存儲磁盤與本地磁盤并無本質的差別,核心差異在與其數據需要通過某種協議與比較遠的設備進行數據的交換。SAN存儲最早只支持FC協議。后來隨著以太網技術的飛速發展,IBM發明了iSCSI協議,該協議是基于TCP/IP協議實現的存儲協議。iSCSI協議可以簡單地理解為一個應用層的協議,類似HTTP協議。只不過HTTP協議用于傳輸Web內容,而iSCSI協議則用于傳輸磁盤內容。
可以看出,iSCSI其實就是對SCSI協議的封裝,然后通過以太網進行傳輸。說白了,iSCSI就是以以太網作為傳輸媒介的SCSI協議。iSCSI協議分為客戶端和服務端兩部分,在iSCSI協議中稱為啟動器和目標器。其中啟動器就是計算端,而目標器就是存儲端。
(責任編輯:fqj)
-
操作系統
+關注
關注
37文章
7401瀏覽量
129278 -
磁盤
+關注
關注
1文章
398瀏覽量
26470
發布評論請先 登錄
Linux磁盤管理指令合集:從查看、分區到修復
海格通信加入中關村智能終端操作系統產業聯盟
操作系統體系結構
操作系統運行機制
海光整機搭配銀河麒麟桌面操作系統V10SP1(X86)「使用命令掛載磁盤報錯結構需要清理」問題解決方法
從內核到生態:一次看懂HarmonyOS 6如何重寫操作系統的“基礎代碼”
EV10AS180A模數轉換器支持哪些操作系統
單片機的操作系統
亮鉆科技與銀河麒麟桌面操作系統深度適配
龍芯CPU與銀河麒麟操作系統V11深度適配
樹莓派操作系統:版本、特性及設置完整指南!
深度智能 基座躍遷 鴻道Intewell,面向“AI+智造”的新型工業操作系統
深度操作系統deepin 25正式發布
國產操作系統都是誰在用?國內企事業單位真實使用情況深度解析
理想汽車智駕操作系統解讀
對磁盤的深度解析,從操作系統層面來講解
評論