文件系统raw什么意思oracle,raw扫盲
轉帖:
綁定裸設備
raw /dev/raw/raw/dev/
刪除裸設備
raw /dev/raw/raw0 0
如用raw /dev/raw/raw1 0 0 刪除裸設備/dev/raw/raw1
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、裸設備可以綁定的對象可以什么?
可以綁定整個沒有分區的硬盤、可以綁定硬盤的某個分區、可以綁定邏輯卷等。
(一)AIX下創建裸設備:
4e)Nguo0RI3N01.創建VG卷組:
Q3~ZL%f0#mkvg -S -y'datavg' -s'128'hdisk1 hdisk2....hdisknITPUB個人空間6X`Jt }eO
其中:-S表示創建scalable-type的VG;-y表示創建vg的名稱;-s表示PP SIZE的大小。
Y%`I-u+}+s N02.從VG中創建一個LV,名稱為lv_db_test_1g:ITPUB個人空間R Lj3[B%FJ:lp
#mklv -y'lv_db_test_1g' -t'raw' '-S128k' datavg 16 hdisk1 hdisk2...hdisknITPUB個人空間N;N6o*_;avQj
其中:在vg中創建一個lv_db_test_1g的lv;分別在pv上條帶尺寸為128K,-t 表示類型為raw,這個類型只是個標志,可以隨意指定。ITPUB個人空間3mo3_WK S5h-LGf
3.修改相應權限:
1P4V!i_U9V[0chown :oinstall /dev/rlv_db_test_1g;
!ER"[jAi0fk0注意室"rlv"表示字符設備。
;L.bcK6S04.掛載數據文件:
3i_y l9O@ S0ln -s /dev/rlv_db_test_1g /oracle/oradata/dgdemo/temp01.dbfITPUB個人空間z i Rvl$_
5.在中創建表空間:ITPUB個人空間qCqdeL
create tablespace temp datafile '/oracle/oradata/dgdemo/temp01.dbf' size 1000M reuse;
(二)下創建裸設備:
1.創建分區:
利用fdisk分一個區,比如劃分/dev/hdb1;
2.掛載分區:
#raw? /dev/raw/raw1? /dev/hdb1;
3.修改權限:
#chown oracle:oinstall /dev/raw/raw1
4.鏈接裸磁盤:
#ln -s /dev/raw/raw1? /oracle/oradata/dgdemo/temp.dbf
5.創建oracle的數據文件:
create tablespace temp datafile '/oracle/oradata/dgdemo/temp.dbf' size 1000M reuse;
備注:如果使用LVM來創建LV類型的裸設備:由于LVM創建的LV是塊設備,不是字符設備,只有塊設備;
#raw /dev/raw/raw1? /dev/lv_db_test_1g;
(三)裸設備:
使用dd命令:
if=file? 指定輸入文件,默認值為標準輸入
of=file 指定輸出文件,默認值為標準輸出
bs=n? 設置輸入和輸出的塊大小為N字節(以k為單位)
skip=n 拷貝之前跳過n個數據塊,默認值為0
seek=n 拷貝之前從輸出文件首部跳過N塊,默認值為0
count=0 指定拷貝的塊數,默認到拷貝到輸入文件結束。
注意:數據文件拷貝在數據庫OFFILE或者數據庫沒有OPEN狀態下拷貝:
dd精確拷貝:
dd if=/dev/rlv_db_test_1g f=/oracle/test01.dbf bs=4k skip=1 count=512002
dd整個數據文件拷貝:
dd if=/dev/rlv_db_test_1g f=/oracle/test01.dbf bs=4k seek=1
使用RMAN進行備份,必須在MOUNT和OPEN狀態下拷貝:
rman>copy '/oracle/oradata/dgdemo/test01.dbf' to '/oracle/test01.dbf'
總結
以上是生活随笔為你收集整理的文件系统raw什么意思oracle,raw扫盲的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: oracle 删除数据 快慢,记录一下D
- 下一篇: 华为8c系统语言切换,华为WS331C怎