AIX中的裸裝置

Davis_itpub發表於2018-06-27
轉自網路
在AIX裡,每個LVM裝置支援兩種操作方式,分別被抽象為 Block Device (塊裝置)和 Character Device (字元裝置),
其中Character Device 又被稱為 Raw Device (原因往下看):
比如:

# ls -l /dev/*hdisk0
brw-------   1 root     system       22,  2 May 15 2007  hdisk0
crw-------   2 root     system       22,  2 May 15 2007  rhdisk0

# ls -l /dev/*hd3
brw-rw----   1 root     system       10,  7 May 15 2007  /dev/hd3
crw-rw----   1 root     system       10,  7 May 15 2007  /dev/rhd3

這裡檔案屬性開頭的'c'字母代表Character, 檔名開頭的'r'字母代表Raw。

字元裝置支援不定長的資料傳輸 (data transfers of arbitrary sizes),最小一個位元組(但絕不是每次只能傳一個位元組或字元!),
LVM和儲存裝置的單次最大I/O只受 LTG (logical track group) 大小的限制,預設為128KB,可修改。

塊裝置只能做定長的資料傳輸,資料必須經過 'kernel buffer cache'。
這個以512-byte block 為單位的buffer cache是傳統的塊裝置的快取,千萬不要和檔案系統的快取混為一談!!
這樣的存取方式不僅效率低,而且帶來諸多問題,嚴重影響大資料量傳輸的效能,
所以現代作業系統中幾乎不用塊裝置的方式進行高速儲存裝置的資料存取。

資料庫建議直接使用裸裝置,意指避開檔案系統和檔案系統的快取管理,直接和字元裝置打交道。
(注意:檔案系統一定是建在字元裝置上的,不可能建到塊裝置上)

這樣做的好處主要是三個:
1. 實現每個I/O的程式碼大大減少:filesystem 和 virtual memory for filesystem 的程式碼都規避了。
2. 避免了重複快取造成的記憶體浪費(資料庫和檔案系統都有自己的資料快取)。
3. 避免了檔案鎖的問題:檔案系統裡的檔案不能同時被多個程式或執行緒更新。

壞處也有:
1. 失去了透過對普通檔案進行管理的易用性。
2. 不能利用檔案系統的 Readahead 的功能,順序讀的速度可能做不到最優

自從有了DIO和CIO之後,基於檔案系統的資料庫效能得以大大提高。
CIO是最接近與裸裝置的一種基於檔案系統的資料庫執行方式,因為它解決了兩個問題:
沒有檔案快取(就是裸裝置優勢之2.);
沒有檔案鎖(就是裸裝置優勢之3.)。
它保持了檔案的可見性,所以不存在裸裝置劣勢之1。
當然DIO和CIO同樣不支援Readahead。

綜上所述:

+字元裝置和塊裝置是對同一個物理裝置的兩種不同的儲存方式的抽象。
+裸裝置這個感念是針對其上有無檔案系統來說的,和字元及塊裝置在概念上沒有任何實質聯絡;
+塊裝置的block buffer機制和檔案系統的快取是兩回事;
+塊裝置在現代作業系統中基本沒有任何用途。
+資料庫用裸裝置或檔案系統mount with CIO, 結合AIO (非同步I/O),可以達到最佳I/O效能
  (在AIX 新版本中raw LV 和 CIO FS 均支援 AIO Fast Path );

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31520497/viewspace-2156798/,如需轉載,請註明出處,否則將追究法律責任。

相關文章