磁盤的IO單位

對於磁盤來說,一次磁盤的連續讀或者連續寫叫做一次IO。

計算機各個層次上的“一次IO”

  1. 應用程序向操作系統請求:“讀取/etc/passwd到我的緩衝區”,操作系統讀取後返回應用程序一個信號,這次IO就完成了,這就是應用程序做的一次IO

  2. 文件系統向磁盤控制器驅動程序請求:“讀取LBA10000 開始後的128個扇區”,然後“讀取LBA50000 開始的後64扇區”,這就是文件系統向下做的兩次IO,假設對應了第一步裏那個應用程序的請求。

  3. 磁盤控制器驅動程序用信號來驅動磁盤控制器向磁盤發送SCSI指令和數據,對於SCSI協議來說,完成一次連續LBA地址扇區的讀寫就算一次IO,但是爲了完成這次讀或者寫,可能需要發送若干條SCSI指令幀,從最底層來看,每次向磁盤發送一個SCSI幀,就算一次IO,這也是最細粒度的IO。但是通常說磁盤IO都是指完成整個一次SCSI讀或者寫

  4. 如果在文件系統和磁盤之間再插入一層卷管理器,或在磁盤控制器和磁盤之間再插入一層RAID虛擬化層,那麼上層的一層IO就往往會演變成下層的多次IO

  5. 對於磁盤來說,每次IO就是指一次SCSI指令交互回合,一個回合中可能包含了若干SCSI指令,而這一個回合裏卻只能完成一次IO,比如“讀取從LBA10000開始的後128個扇區”

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章