天天看點

AIX 共享磁盤中的字元裝置(/dev/rhdiskn)及塊裝置(/dev/hdiskn)

AIX 6.1 ,  Oracle 11.2.0.1 ,   ASM  

      在配置ASM 共享磁盤時,通過 lspv 檢視到/dev 下有很多 hdiskn 及 rhdiskn 的裝置, 那麼在使用hdiskn作為共享磁盤的時候一定注意使用的檔案是/dev/rhdiskn,而不是/dev/hdiskn, 因為rhdiskn是字元裝置,hdiskn是塊裝置。

      那麼 /dev/hdisk 和 /dev/rhdisk 具體的差別是什麼 ? 

    系統中能夠随機(不需要按順序)通路固定大小資料片(chunks)的裝置被稱作塊裝置,這些資料片就稱作塊。最常見的塊裝置是硬碟,除此以外,還有軟碟驅動器、CD-ROM驅動器和閃存等等許多其他塊裝置。注意,它們都是以安裝檔案系統的方式使用的——這也是塊裝置的一般通路方式。

 另一種基本的裝置類型是字元裝置。字元裝置按照字元流的方式被有序通路,像序列槽和鍵盤就都屬于字元裝置。如果一個硬體裝置是以字元流的方式被通路的話,那就應該将它歸于字元裝置;反過來,如果一個裝置是随機(無序的)通路的,那麼它就屬于塊裝置。

 這兩種類型的裝置的根本差別在于它們是否可以被随機通路——換句話說就是,能否在通路裝置時随意地從一個位置跳轉到另一個位置。舉個例子,鍵盤這種裝置提供的就是一個資料流,當你敲入“fox” 這個字元串時,鍵盤驅動程式會按照和輸入完全相同的順序傳回這個由三個字元組成的資料流。如果讓鍵盤驅動程式打亂順序來讀字元串,或讀取其他字元,都是沒有意義的。是以鍵盤就是一種典型的字元裝置,它提供的就是使用者從鍵盤輸入的字元流。對鍵盤進行讀操作會得到一個字元流,首先是“f”,然後是“o”,最後是“x”,最終是檔案的結束(EOF)。當沒人敲鍵盤時,字元流就是空的。硬碟裝置的情況就不大一樣了。硬碟裝置的驅動可能要求讀取磁盤上任意塊的内容,然後又轉去讀取别的塊的内容,而被讀取的塊在磁盤上位置不一定要連續,是以說硬碟可以被随機通路,而不是以流的方式被通路,顯然它是一個塊裝置。

 核心管理塊裝置要比管理字元裝置細緻得多,需要考慮的問題和完成的工作相比字元裝置來說要複雜許多。這是因為字元裝置僅僅需要控制一個位置—目前位置—而塊裝置通路的位置必須能夠在媒體的不同區間前後移動。是以事實上核心不必提供一個專門的子系統來管理字元裝置,但是對塊裝置的管理卻必須要有一個專門的提供服務的子系統。不僅僅是因為塊裝置的複雜性遠遠高于字元裝置,更重要的原因是塊裝置對執行性能的要求很高;對硬碟每多一分利用都會對整個系統的性能帶來提升,其效果要遠遠比鍵盤吞吐速度成倍的提高大得多。另外,我們将會看到,塊裝置的複雜性會為這種優化留下很大的施展空間。

 簡單來講,塊裝置可以随機存取,而字元裝置不能随機存取,那裸裝置又該如何解釋呢?

 難道裸裝置,如磁盤裸裝置也不能随機讀取嗎?那在資料庫中用裸裝置建一個2g的資料檔案,為了存取最後一個資料塊,難道Oracle還要把前面的所有資料塊都讀一遍,顯然不符合事實,如果這樣解釋呢,作業系統不能随機讀取,并不意味着資料庫也不能随機讀取。

 塊裝置通過系統緩存進行讀取,不是直接和實體磁盤讀取。字元裝置可以直接實體磁盤讀取。不經過系統緩存。(如鍵盤,直接相應中斷