這篇文章主要介紹了Linux操作系統(tǒng)中的塊設備是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Linux操作系統(tǒng)中的塊設備是什么文章都會有所收獲,下面我們一起來看看吧。
網(wǎng)站建設哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設計、網(wǎng)站建設、微信開發(fā)、小程序開發(fā)、集團企業(yè)網(wǎng)站建設等服務項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了平山免費建站歡迎大家使用!
在Windows操作系統(tǒng)下磁盤設備似乎是一個實實在在的設備,我們可以通過圖形界面對磁盤設備進行管理。如圖1是Windows下的磁盤管理界面,可以通過這個界面清晰的看到磁盤設備,并且可以對其進行格式化等操作。
圖1 Windows磁盤設備
Linux操作系統(tǒng)的磁盤設備并不直觀,在LInux系統(tǒng)中“一切皆文件”的理念下,磁盤設備其實是一個文件,只不過是一個比較特殊的文件。如圖2是某些磁盤和分區(qū)的文件路徑,其中黃色字體部分是磁盤的路徑(類似文件路徑),而前面紅色方框內的b表示這個文件是磁盤設備文件,而非普通文件。
圖2 Linux系統(tǒng)下磁盤設備
磁盤設備文件也是位于VFS(虛擬文件系統(tǒng))下面,與Ext4等文件系統(tǒng)類似(參考圖3)。用戶層面可以用訪問普通文件的接口(API)訪問磁盤。如下代碼是用Python實現(xiàn)的一個向磁盤寫入字符串的程序。代碼很簡單,就是打開磁盤所在的路徑(path),然后調用write函數(shù)寫數(shù)據(jù)。
Linux系統(tǒng)中磁盤的本質
通過上面的描述我們知道對于Linux操作系統(tǒng)來說,磁盤就是一個文件。而磁盤本身就是一個線性存儲空間(可以理解為一個大數(shù)組),這種方式與文件也是非常類似的。鑒于上述相似性,Linux將磁盤設備抽象為一個文件并沒有任何不妥之處。
實質上,在Linux操作系統(tǒng)磁盤設備是基于一個稱為bdev的偽文件系統(tǒng)來管理的,bdev文件系統(tǒng)是一個在內存中的偽文件系統(tǒng)(在內存的文件系統(tǒng),無持久化的數(shù)據(jù)),位置與Ext4等文件系統(tǒng)相同。如圖3所示,bdev文件系統(tǒng)的位置為圖中紅色區(qū)域。
圖3 bdev文件系統(tǒng)位置
理解了塊設備的管理方式,再結合我們之前對文件系統(tǒng)的相關介紹,這樣就很容易理解后續(xù)的內容了。在文件系統(tǒng)相關文章介紹中我們知道,不同文件系統(tǒng)數(shù)據(jù)處理的關鍵是其提供的函數(shù)集,而這個函數(shù)集是在打開文件的時候確定的。磁盤設備也是如此,當我們打開磁盤設備時,操作系統(tǒng)根據(jù)磁盤設備的特性,會初始化inode中的函數(shù)集。而后續(xù)對該磁盤設備的讀寫操作就能通過該函數(shù)集完成。如下代碼所示 ,塊設備連同字符設備和管道都作為特殊的文件進行處理,并初始化對應的函數(shù)集。
完成函數(shù)集的初始化后,當用戶調用VFS層的接口時,VFS層就可以找到具體的處理函數(shù),進而完成用戶的操作。這里的函數(shù)集與本地文件系統(tǒng)的函數(shù)集別無二致,差異在于普通文件系統(tǒng)需要管理目錄和文件,而bdev偽文件系統(tǒng)是將磁盤看作一個大文件,更簡單一些。
磁盤的緩存
既然磁盤偽文件系統(tǒng)bdev本身也是一個文件系統(tǒng),因此自然也可以有緩存。這個緩存就是用于提升磁盤性能的緩存系統(tǒng)。磁盤的緩存系統(tǒng)與文件系統(tǒng)的緩存系統(tǒng)類似,也是通過頁緩存來實現(xiàn)的。當然,Linux磁盤的緩存是可以關閉的,此時將調用另外一套函數(shù)集。
這樣說起來可能比較抽象,下面我們以一個具體的例子來看一下磁盤緩存的具體實現(xiàn)。如下是磁盤偽文件系統(tǒng)的函數(shù)集,我們以寫數(shù)據(jù)為例進行介紹。
圖4 磁盤函數(shù)集
寫數(shù)據(jù)的函數(shù)為blkdev_write_iter,該函數(shù)會調用generic_perform_write函數(shù)。如果大家閱讀過本號關于文件系統(tǒng)的文件的話,很清楚后者就是VFS中向頁緩存寫數(shù)據(jù)的函數(shù)。也就是說塊設備偽文件系統(tǒng)的邏輯與本地文件系統(tǒng)完全一致。
關于“Linux操作系統(tǒng)中的塊設備是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Linux操作系統(tǒng)中的塊設備是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。