字元裝置和塊裝置區別

2021-09-01 04:36:01 字數 4798 閱讀 4805

裝置分為兩種:字元裝置和塊裝置。不同之處在於塊裝置對於請求有緩衝區,因此它們可以選擇以什麼順序進行響應。對於儲存裝置而言這一點是很重要的,因為在讀寫連續的扇區時比遠遠的分離的扇區更快。另乙個不同就是塊裝置只能以塊為單位接受輸入和返回輸出(塊的大小根據裝置的不同而不同),而字元裝置只能使用它們可能使用的或多或少的位元組大小。大多數裝置是字元裝置,因為它們不需要這種緩衝而且不以固定塊大小進行操作。你可以用ls -l區分乙個裝置檔案是塊裝置還是字元裝置.如果開頭是「b」,那麼它就是塊裝置;如果是「c」,那麼就是字元裝置。

1.什麼叫做裸裝置? 

裸裝置,也叫裸分割槽(原始分割槽),是一種沒有經過格式化,不被unix通過檔案系統來讀取的特殊字元裝置。它由應用程式負責對它進行讀寫操作。不經過檔案系統的緩衝。 

2.如何辨別裸裝置? 

在unix的/dev 目錄下,有許多檔案,其中有兩個大類:字元裝置檔案和塊裝置檔案。 

字元裝置特殊檔案進行i/o操作不經過作業系統的緩衝區,而塊裝置特殊檔案用來同外設進行定長的包傳輸。字元特殊檔案與外設進行i/o操作時每次只傳輸乙個字元。而對於塊裝置特殊檔案來說,它用了cache機制,在外設和記憶體之間一次可以傳送一整塊資料。裸裝置使用字元特殊檔案。在/dev 目錄下,你可以看到許多這樣的檔案。  

字元裝置是逐個字元地接收字元流資訊的裝置,如鍵盤、磁帶機、原始分割槽或印表機。字元的傳輸可以是逐位的(序列傳輸)或逐字節的(並行傳輸),但不能以塊的方式傳輸。 

塊裝置是啟用塊輸入/輸出 (i/o) 傳送的裝置,通常是 cd-rom 驅動器或硬碟。

也就是說裸裝置是字元裝置,字元裝置不一定是裸裝置,

1.什麼叫做

裸裝置? 

裸裝置,也叫裸分割槽(原始分割槽),是一種沒有經過格式化,不被unix通過檔案系統來讀取的特殊

字元裝置。它由應用程式負責對它進行讀寫操作。不經過檔案系統的緩衝。 

2.如何辨別

裸裝置? 

在unix的/dev?目錄下,有許多檔案,其中有兩個大類:

字元裝置檔案和塊裝置檔案。 

字元裝置特殊檔案進行i/o操作不經過作業系統的緩衝區,而塊裝置特殊檔案用來同外設進行定長的包傳輸。字元特殊檔案與外設進行i/o操作時每次只傳輸乙個字元。而對於塊裝置特殊檔案來說,它用了cache機制,在外設和記憶體之間一次可以傳送一整塊資料。

裸裝置使用字元特殊檔案。在/dev?目錄下,你可以看到許多這樣的檔案。 

3.使用

裸裝置的好處 

因為使用

裸裝置避免了再經過unix作業系統這一層,資料直接從disk到oracle進行傳輸,所以使用

裸裝置對於讀寫頻繁的資料庫應用來說,可以極大地提高資料庫系統的效能。當然,這是以磁碟的?i/o?非常大,磁碟i/o已經稱為系統瓶頸的情況下才成立。如果磁碟讀寫確實非常頻繁,以至於磁碟讀寫成為系統瓶頸的情況成立,那麼採用

裸裝置確實可以大大提高效能,最大甚至可以提高至40%,非常明顯。 

而且,由於使用的是原始分割槽,沒有採用檔案系統的管理方式,對於unix維護檔案系統的開銷也都沒有了,比如不用再維護i-node,空閒塊等,這也能夠導致效能的提高。 

4.如何決定是否應該使用

裸裝置? 

判斷是否使用

裸裝置要從以下方面進行考慮:首先,資料庫系統本身需要已經被比較好的經過了優化。優化是一門很有些技術的話題,很難簡單地講述。其次,使用unix命令來辨別是否存在磁碟讀寫瓶頸。比如unix的vmstat,?sar?等命令都可以較好的進行鑑別。如果決定採用

裸裝置,需要磁碟上還有空閒的分割槽。否則,就要新添磁碟,或者對原有系統重新規劃。 

5.什麼系統必須使用

裸裝置? 

如果使用了oracle?並行伺服器選項,則必須採用

裸裝置來存放所有的資料檔案,控制檔案,重做日誌檔案。只有把這些檔案放到

裸裝置上,才能保證所有oracle?例項都可以讀取這個資料庫的檔案。這是由unix作業系統的特性決定的。 

還有一種情況是,如果你想使用非同步i/o,那麼在有些unix上也必須採用

6.能夠使用乙個磁碟的第乙個分割槽作為

裸裝置嗎? 

可以,但是不推薦。在unix的比較舊的版本是銀行,磁碟的第乙個分割槽常常包含這個磁碟的一些資訊,以及邏輯卷的一些控制資訊。若這些部分被

裸裝置覆蓋的話,磁碟就會變得不可識別,導致系統崩潰。 

較新的unix版本不會發生這樣的情況,因為它們採用了更複雜的技術來管理磁碟,邏輯卷的一些資訊。 

但是,除非很確信不要使用磁碟的第乙個分割槽來作為

裸裝置。 

7.我可以把整個

裸裝置都作為oracle的資料檔案嗎? 

不行。必須讓資料檔案的大小稍微小於該

裸裝置的實際大小。至少要空出兩個oracle塊的大小來。 

8.裸裝置應該屬於那個使用者? 

應該由root來建立

裸裝置,然後再分配給oracle使用者以供使用。同時還要把它歸入oracle使用者所在的那個組裡邊(通常都是dba)。 

9.在建立資料檔案時如何指定

裸裝置? 

和普通檔案沒有什麼太大的區別,一樣都是在單引號裡邊寫上

裸裝置的詳細路徑就可以了。舉乙個例子:要在建立乙個表空間,使用兩個

裸裝置,每個分別為30m的大小,oracle塊的大小為4k,可以用下面的命令: 

create?tablespace?raw_ts 

datafile?'/dev/raw1'?size?30712k 

datafile?'/dev/raw2'?size?30712k; 

10.oracle塊的大小和

裸裝置有什麼關係嗎? 

oracle會必須是

裸裝置上物理塊大小的倍數。 

11.如何在

裸裝置上進行備份?  在

裸裝置上,不能使用unix實用程式來進行備份,唯一的辦法是使用最基本的unix命令:dd來進行備份。比如:dd?if=/dev/raw1?of=/dev/rmt0?bs=16k。dd的具體語法可以參考unix手冊,或者聯機幫助。你也可以先用dd把

裸裝置上的資料檔案備份到磁碟上,然後再利用unix實用程式進一步處理。 

12.如果我沒有使用oracle並行伺服器選項,我可以在資料庫上讓一部分資料檔案使用檔案系統,另一部分使用

裸裝置嗎? 

可以。但是這樣的話,會使備份過程更加複雜。 

13.我應該把聯機重做日誌檔案放到

裸裝置上嗎? 

這是乙個極好的選擇。聯機重做日誌檔案是寫操作非常頻繁的檔案,放到

裸裝置上非常合適。如果你使用了並行伺服器選項,那麼聯機重做日誌檔案必須放到

裸裝置上面。 

14.可以把歸檔日誌檔案放到

裸裝置上嗎? 

不行。歸檔日誌檔案必須放到常規的unix檔案系統上面,或者直接放到磁帶上面去。 

15.我可以在

裸裝置上邊放置多個資料檔案嗎? 

不行。所以你必須在設定

裸裝置時非常小心。太小的話,會導致空間很快用完,太大的話,空間就白白浪費了。 

16.因應該把幾個

裸裝置放到同乙個物理磁碟上嗎? 

這樣做不好。因為使用

裸裝置就是為了提高磁碟讀寫速度。而把多個

裸裝置放到同乙個物理磁碟上會導致讀寫競爭,這樣對於提高i/o速度是不利的。應該盡量分散

裸裝置到不同的物理磁碟上,最好是分散到不同的磁碟控制器上。這是最佳選擇。 

17.需要把所有

裸裝置都定義成同樣的大小嗎? 

這不是必須得,但是劃分成同樣的大小對於管理資料庫比較有利。 

18.為了在unix上使用

裸裝置,我需要改變unix核心引數嗎? 

不需要。但可以選擇減小緩衝區的大小,如果沒有別的應用也在同一臺unix機器上執行。因為運用了

裸裝置以後,不再使用unix的系統緩衝區。 

19.為了提高讀寫速度,在作業系統級別上,還有什麼辦法可以採取嗎? 

使用raid(廉價冗餘磁碟陣列)也是非常有效的辦法,尤其實那種讀寫非常頻繁的系統。 

20.在考慮了以上所有方面後,還能有什麼辦法可以提高效能的嗎? 

這就需要對oracle?進行優化,並且購買更多的磁碟和磁碟控制器,來分散i/o到不同的磁碟上。

11.如何在

裸裝置上進行備份?? 

在裸裝置上,不能使用unix實用程式來進行備份,唯一的辦法是使用最基本的unix命令:dd來進行備份。 

rman可以的啊!

雖然oracle的文件說裸裝置可以大幅度提高資料庫效能.但是根據實際使用經驗,不同的作業系統差別很大.如果檔案系統本來效率非常高(ext3),那麼使用裸裝置幾乎不能提高資料庫效能(做過實際測試,幾乎提高不到3%).但是隨之帶來的資料檔案備份問題卻非常麻煩.所以我個人的看法是,除了使用集群或者是其他特別的原因,不要使用裸裝置.效能的提高完全被資料庫的維護消耗,而且是負增長.

16.因應該把幾個

裸裝置放到同乙個物理磁碟上嗎?? 

這樣做不好。因為使用

裸裝置就是為了提高磁碟讀寫速度。而把多個

裸裝置放到同乙個物理磁碟上會導致讀寫競爭,這樣對於提高i/o速度是不利的。應該盡量分散

裸裝置到不同的物理磁碟上,最好是分散到不同的磁碟控制器上。這是最佳選擇。? 

問:把多個

裸裝置放到同乙個物理磁碟上是什麼意思?既然說

裸裝置就是裸分割槽(原始分割槽),那簡單一點,

裸裝置就是分割槽了,但是,我們分割槽的時候不就是把一塊磁碟劃分成幾個分割槽麼?那不就是多個分割槽在乙個物理磁碟上麼?再進一步,不就是多個

裸裝置放到同乙個物理磁碟上麼?那樓主說不能把幾個

裸裝置放到同乙個物理磁碟時什麼意思?請指點。謝謝!

裸裝置還有乙個重要的優勢是資料的一致性,因為隔著檔案系統oracle不能確保資料寫入了硬碟,尤其是非日誌型的檔案系統。 

關於效能,

裸裝置也不一定會有提高。一般是io的量越大越有效果

字元裝置和塊裝置的區別

系統中能夠隨機 不需要按順序 訪問固定大小資料片 chunks 的裝置被稱作塊裝置,這些資料片就稱作塊。最常見的塊裝置是硬碟,除此以外,還有軟盤驅動器 cd rom驅動器和快閃儲存器等等許多其他塊裝置。注意,它們都是以安裝檔案系統的方式使用的 這也是塊裝置的一般訪問方式。另一種基本的裝置型別是字元裝...

字元裝置和塊裝置的區別

linux中i o裝置分為兩類 字元裝置和塊裝置。兩種裝置本身沒有嚴格限制,但是,基於不同的功能進行了分類。1 字元裝置 提供連續的資料流,應用程式可以順序讀取,通常不支援隨機訪問。相反,此類裝置支援按位元組 字元來讀寫資料。舉例來說,鍵盤 串列埠 數據機都是典型的字元裝置。2 塊裝置 應用程式可以...

字元裝置和塊裝置的區別

裝置檔案分為block device driver和character device drive兩類。character device drive又被稱為字元裝置或裸裝置raw devices block device driver通常成為塊裝置。而block device driver是以固定大小...