Linux裸設備(轉)

1、什麼裸設備?字符設備?塊設備?
裸設備:也叫裸分區(原始分區),是一種沒有經過格式化,不被Unix/Linux通過文件系統來讀取的特殊字符設備。裸設備可以綁定一個分區,也可以綁定一個磁盤。
字符設備:對字符設備的讀寫不需要通過OS的buffer。它不可被文件系統mount。
塊設備:對塊設備的讀寫需要通過OS的buffer,它可以被mount到文件系統中。

2、一個系統可以有多少個裸設備?
這個與linux的版本相關,在舊版本中,最多只可以有256個裸設備,Linux 4下做多可以綁定8192個裸設備。
但是在linux下,最多只能有255個分區,所以,如果用裸設備綁定分區,最多隻能綁定255個裸設備。
如果是用lvm,則沒有這個限制。

3、Linux下單個磁盤最多可以有多少個分區?
15個。3個主分區 + 1個擴展分區 + 11個邏輯分區。
建議的分區方法是:先分3個主分區,第四個分區爲擴展分區,然後在擴展分區中再分成11個邏輯分區。
注意,裸設備不要綁定在擴展分區上。

4、linux下是否需要綁定裸設備?unix呢?
linux下如果需要使用裸設備,則需要手工進行綁定。
unix下則不用。

因爲Unix中每一個塊設備都會有一個對應的字符設備用於非緩存(unbuffered)I/O,這就是他對應的裸設備了。
而Linux中rawio的則實現了一套非綁定(unbound)的裸設備/dev/rawN或者/dev/raw/rawN和一個控制設備 /dev/rawct用來把他們綁定到塊設備上。所以當需要使用一個裸設備的時候,就需要把他和一個真實存在的塊設備對應起來,這一個步驟實際上就是完成 了Unix裏的自動對應一個非緩存字符設備。

5、linux如何綁定裸設備?
兩種方式:
1)命令綁定
raw /dev/raw/raw[n] /dev/xxx
其中n的範圍是0-8191。raw目錄不存在的話會被自動創建。
執行這個命令,就會在/dev/raw下生成一個對應的raw[n]文件
用命令方式綁定裸設備在系統重啓後會失效。

2)修改文件
修改/etc/sysconfig/rawdevices文件如下,以開機時自動加載裸設備,如:
/dev/raw/raw1 /dev/sdb1
這種方式是通過啓動服務的方式來綁定裸設備。


也可以把這個命令寫在/etc/rc.local上,使每次啓動都執行這些命令。

6、如何把裸設備作爲oracle數據文件?有什麼需要注意的?
1)綁定裸設備
參考上文
2)改變裸設備屬主
兩種方法:
. 把命令卸載/etc/rc.local上
chown oracle:oinstall /dev/raw/raw1
. 修改/etc/udev/permissions.d/50-udev.permissions文件
將/etc/udev/permissions.d/50-udev.permissions的113行

raw/*:root:disk:0660
修改爲
raw/*:oracle:oinstall:0660

這個的意思是修改裸設備的默認屬主爲oracle:oinstall,默認的mode是0660。

如果是用lvm,也需要把邏輯卷綁定到裸設備上,過程和綁定到普通分區類似。

7、使用裸設備作爲oracle數據文件有什麼需要注意的?
使用裸設備作爲oracle的數據文件必須注意以下幾點:
1)一個裸設備只能放置一個數據文件
2)數據文件的大小不能超過裸設備的大小
如果是日誌文件,則裸設備最大可用大小=裸設備對應分區大小 - 1 * 512 (保留一個redo lock)
如果是數據文件,則裸設備最大可用大小=裸設備對應分區大小 - 2 * db_block_size(保留兩個block)
爲了簡單起見,對所有的文件設置稱比裸設備小1M即可。
3)數據文件最好不要設置稱自動擴展,如果設置稱自動擴展,一定要把maxsize設置設置爲比裸設備小

8、是否可以直接用邏輯卷作爲oracle數據文件?
linux下oracle不能直接把邏輯卷作爲裸設備,也要進行綁定。unix下就不需要。

9、如何知道當前綁定了什麼裸設備?
rqw -qa命令列出當前綁定的所有裸設備。

10、如何知道某個裸設備的大小
比較笨的辦法是,找出看裸設備對應的是那個實際的塊設備,然後用fdisk -l /dev/[h,s]dXN看那個塊設備的大小就好了。
比較簡單的辦法是用blockdev命令來計算,如:
#blockdev --getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一個OS BLOCK大小是512字節,所以11718750*512/1024/1024/1024 = 5722(m) 就是裸設備的大小。

11、數據庫中可以同時以文件和裸設備作爲數據文件嗎?
可以。甚至在同一個表空間中,也可以部分數據文件用文件系統,部分文件用裸設備。
但是不建議這樣做,因爲會增加管理的複雜度。

12、可以把至於裸設備的數據文件設成自動擴展嗎?
可以,但同時要設置maxsize,且maxsize不能超過:裸設備大小 - 2*db_block_size

13、如何修改裸設備的默認權限
兩種方法:
1)要修改/etc/rc.d/rc.local文件,加入如下:
chown root:oinstall /dev/raw/raw1
chown root:oinstall /dev/raw/raw2
chown root:oinstall /dev/raw/raw3
...
chmod 660 /dev/raw/raw1
chmod 660 /dev/raw/raw2
chmod 660 /dev/raw/raw3
...

2)實際上還有更簡單的方法就是,修改/etc/udev/permissions.d/50-udev.permissions文件:
raw/*:root:disk:0660

raw/*:root:oinstall:0660

這樣就可以了!

14、如何取消裸設備的綁定
用raw把major and minor設成0就可以取消裸設備的綁定。如:
raw /dev/raw/raw1 0 0
這個命令取消綁定裸設備的綁定,/dev/raw/raw1會被刪除

15、裸設備可以綁定的對象可以什麼?
可以綁定整個沒有分區的硬盤、可以綁定硬盤的某個分區、可以綁定邏輯卷等。

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