Linux中磁碟掃瞄流程描述

2021-06-01 05:01:17 字數 1224 閱讀 7414

通常scsi匯流排介面卡作為pci裝置的形式存在,其在計算機體系結構中的位置如下圖所示:

圖1 scis host及device在計算機體系結構中的位置

在系統初始化時會掃瞄系統pci匯流排,由於scsi host adapter掛接在pci匯流排上,因此會被pci掃瞄軟體掃瞄得到,並且生成乙個pci device(pdo)。然後掃瞄軟體需要為該pci device載入相應的驅動程式。在linux系統中,遍歷pci bus上存在的所有驅動程式,檢查是否有符合要求的驅動程式存在,這裡假設scsi host是marwell的裝置,那麼,如果存在marwell提供的scsi host driver,就會被成功呼叫。載入scsi host驅動時,pci掃瞄程式會呼叫scsi host driver提供的probe函式,該probe函式是scsi host driver在初始化驅動時註冊到pci-driver上的(linux的匯流排驅動都是採用的這種思路)。在scsi host具體的probe函式中會初始化scsi host,註冊中斷處理函式,並且呼叫scsi_host_alloc函式生成乙個scsi host,然後新增到scsi middle level,最後呼叫scsi_scan_host函式掃瞄scsi host adapter所管理的所有scsi匯流排。

乙個scsi host adapter可能擁有多個channel,每個channel擁有一條scsi匯流排。傳統scsi匯流排是並行共享匯流排,現有的sata、sas等p2p 介面在邏輯上可以理解成匯流排的一種特例,所以scsi middle level驅動程式是通用的。由於乙個scsi host可能存在多個channel,因此依次掃瞄每個channel。按照spec,傳統scsi bus上最多可以連線16個scsi target,因此,scsi掃瞄程式會依次探測target。乙個scsi target可以存在多種功能,每種功能稱之為lun,對於單功能裝置(例如磁碟),其lun通常為0。

scsi host的掃瞄過程可以簡單採用如下偽碼進行描述:

for (channel = 0; channel < max_channel; channel++) }

}通過上述掃瞄過程可以知道,在系統中可以採用如下方法對乙個scsi device進行描述:host_id : channel_id : target_id : lun_id

其中,host_id是系統動態分配的,這與pci匯流排的掃瞄順序相關,對於固定硬體的系統host_id掃瞄得到的結果不會改變,但是,如果動態新增乙個scsi host(pci device),系統的host_id可能會發生變化,這一點需要注意。

Linux系統SCSI磁碟掃瞄機制解析及命令例項

介紹 linux系統掃瞄scsi磁碟有幾種方式?linux新增lun之後,能否不重啟主機就認出裝置?如果安裝了powerpath,動態新增 刪除lun的命令是什麼?本文總結了linux主機對磁碟裝置進行重新配置的方式,並附加命令例項。更多資訊 linux系統提供多重機制以重新掃瞄scsi匯流排並重認...

Linux系統SCSI磁碟掃瞄機制解析及命令例項

介紹 linux系統掃瞄scsi磁碟有幾種方式?linux新增lun之後,能否不重啟主機就認出裝置?如果安裝了powerpath,動態新增 刪除lun的命令是什麼?本文總結了linux主機對磁碟裝置進行重新配置的方式,並附加命令例項。更多資訊 linux系統提供多重機制以重新掃瞄scsi匯流排並重認...

Linux虛機磁碟擴充套件操作流程

一 找虛機管理員增加磁碟擴充套件容量 二 磁碟分割槽 檢視已有分割槽 2.分割槽過程 輸入下面命令進入fdisk命令模式 這裡要分割槽的硬碟為 dev sda 根據上圖提示,輸入m可以顯示幫助資訊 根據上圖提示,輸入n新增乙個新分割槽 在後面的分割槽型別選擇中輸入p 建立主分割槽 其餘的設定保持預設...