Linux裸設(shè)備總結(jié)(ZT)
1、什么裸設(shè)備?字符設(shè)備?塊設(shè)備?
裸設(shè)備:也叫裸分區(qū)(原始分區(qū)),是一種沒有經(jīng)過格式化,不被Unix/Linux通過文件系統(tǒng)來讀取的特殊字符設(shè)備。裸設(shè)備可以綁定一個(gè)分區(qū),也可以綁定一個(gè)磁盤。
字符設(shè)備:對(duì)字符設(shè)備的讀寫不需要通過OS的buffer。它不可被文件系統(tǒng)mount。
塊設(shè)備:對(duì)塊設(shè)備的讀寫需要通過OS的buffer,它可以被mount到文件系統(tǒng)中。
2、一個(gè)系統(tǒng)可以有多少個(gè)裸設(shè)備?
這個(gè)與linux的版本相關(guān),在舊版本中,最多只可以有256個(gè)裸設(shè)備,Linux 4下做多可以綁定8192個(gè)裸設(shè)備。
但是在linux下,最多只能有255個(gè)分區(qū),所以,如果用裸設(shè)備綁定分區(qū),最多只能綁定255個(gè)裸設(shè)備。
如果是用lvm,則沒有這個(gè)限制。
3、Linux下單個(gè)磁盤最多可以有多少個(gè)分區(qū)?
15個(gè)。3個(gè)主分區(qū) + 1個(gè)擴(kuò)展分區(qū) + 11個(gè)邏輯分區(qū)。
建議的分區(qū)方法是:先分3個(gè)主分區(qū),第四個(gè)分區(qū)為擴(kuò)展分區(qū),然后在擴(kuò)展分區(qū)中再分成11個(gè)邏輯分區(qū)。
注意,裸設(shè)備不要綁定在擴(kuò)展分區(qū)上。
4、linux下是否需要綁定裸設(shè)備?unix呢?
linux下如果需要使用裸設(shè)備,則需要手工進(jìn)行綁定。
unix下則不用。
因?yàn)閁nix中每一個(gè)塊設(shè)備都會(huì)有一個(gè)對(duì)應(yīng)的字符設(shè)備用于非緩存(unbuffered)I/O,這就是他對(duì)應(yīng)的裸設(shè)備了。
而Linux中rawio的則實(shí)現(xiàn)了一套非綁定(unbound)的裸設(shè)備/dev/rawN或者/dev/raw/rawN和一個(gè)控制設(shè)備
/dev/rawct用來把他們綁定到塊設(shè)備上。所以當(dāng)需要使用一個(gè)裸設(shè)備的時(shí)候,就需要把他和一個(gè)真實(shí)存在的塊設(shè)備對(duì)應(yīng)起來,這一個(gè)步驟實(shí)際上就是完成
了Unix里的自動(dòng)對(duì)應(yīng)一個(gè)非緩存字符設(shè)備。
5、linux如何綁定裸設(shè)備?
兩種方式:
1)命令綁定
raw /dev/raw/raw[n] /dev/xxx
其中n的范圍是0-8191。raw目錄不存在可以創(chuàng)建。
執(zhí)行這個(gè)命令,就會(huì)在/dev/raw下生成一個(gè)對(duì)應(yīng)的raw[n]文件
用命令方式綁定裸設(shè)備在系統(tǒng)重啟后會(huì)失效。
2)修改文件
修改/etc/sysconfig/rawdevices文件如下,以開機(jī)時(shí)自動(dòng)加載裸設(shè)備,如:
/dev/raw/raw1 /dev/sdb1
這種方式是通過啟動(dòng)服務(wù)的方式來綁定裸設(shè)備。
也可以把這個(gè)命令寫在/etc/rc.local上,使每次啟動(dòng)都執(zhí)行這些命令。
6、如何把裸設(shè)備作為oracle數(shù)據(jù)文件?有什么需要注意的?
1)綁定裸設(shè)備
參考上文
2)改變裸設(shè)備屬主
兩種方法:
. 把命令卸載/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
這個(gè)的意思是修改裸設(shè)備的默認(rèn)屬主為oracle:oinstall,默認(rèn)的mode是0660。
如果是用lvm,也需要把邏輯卷綁定到裸設(shè)備上,過程和綁定到普通分區(qū)類似。
7、使用裸設(shè)備作為oracle數(shù)據(jù)文件有什么需要注意的?
使用裸設(shè)備作為oracle的數(shù)據(jù)文件必須注意以下幾點(diǎn):
1)一個(gè)裸設(shè)備只能放置一個(gè)數(shù)據(jù)文件
2)數(shù)據(jù)文件的大小不能超過裸設(shè)備的大小
如果是日志文件,則裸設(shè)備最大可用大小=裸設(shè)備對(duì)應(yīng)分區(qū)大小 - 1 * 512 (保留一個(gè)redo lock)
如果是數(shù)據(jù)文件,則裸設(shè)備最大可用大小=裸設(shè)備對(duì)應(yīng)分區(qū)大小 - 2 * db_block_size(保留兩個(gè)block)
為了簡(jiǎn)單起見,對(duì)所有的文件設(shè)置稱比裸設(shè)備小1M即可。
3)數(shù)據(jù)文件最好不要設(shè)置稱自動(dòng)擴(kuò)展,如果設(shè)置稱自動(dòng)擴(kuò)展,一定要把maxsize設(shè)置設(shè)置為比裸設(shè)備小
8、是否可以直接用邏輯卷作為oracle數(shù)據(jù)文件?
linux下oracle不能直接把邏輯卷作為裸設(shè)備,也要進(jìn)行綁定。unix下就不需要。
9、如何知道當(dāng)前綁定了什么裸設(shè)備?
rqw -qa命令列出當(dāng)前綁定的所有裸設(shè)備。
10、如何知道某個(gè)裸設(shè)備的大小
比較笨的辦法是,找出看裸設(shè)備對(duì)應(yīng)的是那個(gè)實(shí)際的塊設(shè)備,然后用fdisk -l /dev/[h,s]dXN看那個(gè)塊設(shè)備的大小就好了。
比較簡(jiǎn)單的辦法是用blockdev命令來計(jì)算,如:
#blockdev --getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一個(gè)OS BLOCK大小是512字節(jié),所以11718750*512/1024/1024/1024 = 5722(m) 就是裸設(shè)備的大小。
11、數(shù)據(jù)庫(kù)中可以同時(shí)以文件和裸設(shè)備作為數(shù)據(jù)文件嗎?
可以。甚至在同一個(gè)表空間中,也可以部分?jǐn)?shù)據(jù)文件用文件系統(tǒng),部分文件用裸設(shè)備。
但是不建議這樣做,因?yàn)闀?huì)增加管理的復(fù)雜度。
12、可以把至于裸設(shè)備的數(shù)據(jù)文件設(shè)成自動(dòng)擴(kuò)展嗎?
可以,但同時(shí)要設(shè)置maxsize,且maxsize不能超過:裸設(shè)備大小 - 2*db_block_size
13、如何修改裸設(shè)備的默認(rèn)權(quán)限
兩種方法:
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)實(shí)際上還有更簡(jiǎn)單的方法就是,修改/etc/udev/permissions.d/50-udev.permissions文件:
raw/*:root:disk:0660
為
raw/*:root:oinstall:0660
這樣就可以了!
14、如何取消裸設(shè)備的綁定
用raw把major and minor設(shè)成0就可以取消裸設(shè)備的綁定。如:
raw /dev/raw/raw1 0 0
這個(gè)命令取消綁定裸設(shè)備的綁定,/dev/raw/raw1會(huì)被刪除
15、裸設(shè)備可以綁定的對(duì)象可以什么?
可以綁定整個(gè)沒有分區(qū)的硬盤、可以綁定硬盤的某個(gè)分區(qū)、可以綁定邏輯卷等。
//***************************************************************************************************************
裸設(shè)備,也叫裸分區(qū)(原始分區(qū)),是一種沒有經(jīng)過格式化,不被Linux通過文件系統(tǒng)來讀取的特殊字符設(shè)備.它由應(yīng)用程序負(fù)責(zé)對(duì)它進(jìn)行讀寫操作,不經(jīng)過文件系統(tǒng)的緩沖.
1.裸設(shè)備的創(chuàng)建
裸設(shè)備的分區(qū)可以是沒有格式化的普通分區(qū),也可以是LVM中沒有格式化的LV
#vi /etc/sysconfig/rawdevices
/dev/raw/raw1 /dev/vg01/lv02
其中/dev/raw/raw1為裸設(shè)備,/dev/vg01/lv02為對(duì)應(yīng)分區(qū)
2.激活裸設(shè)備
#service rawdevices restart
3.裸設(shè)備在oracle中的使用
1).更改權(quán)限
如果是供oracle使用,則需修改/dev/raw/*的權(quán)限:
#chown root:dba /dev/raw/*
#chmod g+w /dev/raw/*
2).在裸設(shè)備上創(chuàng)建數(shù)據(jù)文件
create tablespace raw_ts
datafile ‘/dev/raw/raw1’ size 100m,
‘/dev/raw/raw2’ size 100m
//***************************************************************************************************************
posted on 2009-09-29 23:53 旅途 閱讀(346) 評(píng)論(0) 編輯 收藏 引用 所屬分類: LINUX基礎(chǔ)、管理