Linux裸裝置管理詳解
轉載:http://czmmiao.iteye.com/blog/1587170
裸裝置概述
裸裝置:也叫裸分割槽(原始分割槽),是一種沒有經過格式化,不被Unix/Linux通過檔案系統來讀取的特殊字元裝置。裸裝置可以繫結一個分割槽,也可以繫結一個磁碟。
字元裝置:對字元裝置的讀寫不需要通過OS的buffer。它不可被檔案系統mount。
塊裝置:對塊裝置的讀寫需要通過OS的buffer,它可以被mount到檔案系統中。
這個與linux的版本相關,在舊版本中,最多隻可以有256個裸裝置,Linux 4下做多可以繫結81Array2個裸裝置。但是在linux下,最多隻能有255個分割槽,所以,如果用裸裝置繫結分割槽,最多隻能繫結255個裸裝置。如果是用lvm,則沒有這個限制。
Linux下單個磁碟最多可以有15個分割槽。3個主分割槽 + 1個擴充套件分割槽 + 11個邏輯分割槽。
建議的分割槽方法是:先分3個主分割槽,第四個分割槽為擴充套件分割槽,然後在擴充套件分割槽中再分成11個邏輯分割槽。
注意,裸裝置不要繫結在擴充套件分割槽上。
linux下如果需要使用裸裝置,則需要手工進行繫結,unix下則不用。
因為Unix中每一個塊裝置都會有一個對應的字元裝置用於非快取(unbuffered)I/O,這就是他對應的裸裝置了。而Linux中rawio的則 實現了一套非繫結(unbound)的裸裝置/dev/rawN或者/dev/raw/rawN和一個控制裝置/dev/rawct用來把他們繫結到塊設 備上。所以當需要使用一個裸裝置的時候,就需要把他和一個真實存在的塊裝置對應起來,這一個步驟實際上就是完成了Unix裡的自動對應一個非快取字元裝置。
major和minor device number
在unix/linux系統中,一切都是檔案。所有硬碟、軟盤、鍵盤等裝置都用檔案來代表,對應 著/dev下面的檔案。對於應用程式來說,可以像對待普通檔案一樣開啟,關閉、讀寫這些裝置檔案。但是這種檔名,比如/dev/sda、/dev /raw/raw1都是使用者空間名稱,OS Kernel根本不知道這個名稱指的是什麼。在核心空間是通過major、minor device number 來區分裝置的。
major device number可以看作是裝置驅動程式,被同一裝置驅動程式管理的裝置有相同的major device number.這個數字實際是Kernel中device driver table 的索引,這個表儲存著不同裝置驅動程式。 而minor device number用來代表被訪問的具體裝置。也就是說Kernel根據major device number 找到裝置驅動程式,然後再從minor device number 獲得裝置位置等屬性。所有這些major device number 是已經預先分配好的。詳細資訊可以從http://www.lanana.org/docs/device-list/devices-2.6+.txt 檢視。比如裸裝置是162,scsi塊裝置是8
/etc/udev/rules.d/60-raw.rules
Redhat平臺對raw裝置的配置在redhat 5之後有了變化。在redhat 5之前,直接配置/etc/sysconfig/rawdevices件,通過/etc/init.d/rawdevices來管理raw裝置的啟動和關 閉。在Redhat 5之後,原來的raw裝置介面已經取消了,redhat 5中通過udev規則進行配置。 要配置,需要編輯/etc/udev/rules.d/60-raw.rules這個檔案。
cat /etc/udev/rules.d/60-raw.rules
# Enter raw device bindings here.
#
# An example would be:
# ACTION=="add", KERNEL=="sda", RUN+="/bin/raw /dev/raw/raw1 %N"
# to bind /dev/raw/raw1 to /dev/sda, or
# ACTION=="add", ENV{MAJOR}=="8", ENV{MINOR}=="1", RUN+="/bin/raw /dev/raw/raw2 %M %m"
# to bind /dev/raw/raw2 to the device with major 8, minor 1.
其中
ACTION=="add", KERNEL="<device name>", RUN+="raw /dev/raw/rawX %N"
配置裝置名稱,用你需要繫結的裝置名稱替換 <device name>(如:/dev/sda1),X為裸裝置號
主/次號碼:
ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M %m"
"A" 和 "B" 是裝置的主/次號碼,X是系統使用的raw裝置號碼。
個人對redhat管理raw的過程理解為: 在redhat 5中,是通過udev來管理raw裝置的,而udev是通過 MAJOR和MINOR來識別raw裝置 。 故需要將裝置號和裸裝置號進行繫結,而主裝置號和次裝置號可以自行指定或者由系統自動分配。 根據red hat的官方文件中關於raw.rule的示例中說KERNEL==..或ENV{MAJOR}...只需要任意配置一個就可以,但有些網友經過試驗,驗證必須二者同時配置才可以。
配置 /etc/udev/rules.d/60-raw.rules檔案
檢視磁碟分割槽情況
# fdisk -l /dev/sdb
Disk /dev/sdb: 4880 MB, 4880072704 bytes
255 heads, 63 sectors/track, 593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdb1 1 25 200781 83 Linux
/dev/sdb2 26 50 200812+ 83 Linux
配置 /etc/udev/rules.d/60-raw.rules檔案
# grep -v ^# /etc/udev/rules.d/60-raw.rules
ACTION=="add", KERNEL=="sdb1", RUN+="/bin/raw /dev/raw/raw1 %N"
ACTION=="add", KERNEL=="sdb2", RUN+="/bin/raw /dev/raw/raw2 %N"
ACTION=="add", ENV{MAJOR}=="3", ENV{MINOR}=="2", RUN+="/bin/raw /dev/raw/raw1 %M %m"
ACTION=="add", ENV{MAJOR}=="7", ENV{MINOR}=="2", RUN+="/bin/raw /dev/raw/raw2 %M %m"
啟動raw裝置
# start_udev
Starting udev: [ OK ]
檢視配置情況
# raw -qa
/dev/raw/raw1: bound to major 8, minor 17
/dev/raw/raw2: bound to major 8, minor 18
這裡筆者不清楚為什麼主裝置號和復裝置號並不和我在 /etc/udev/rules.d/60-raw.rules指定的一樣,望瞭解的讀者告知,系統核心資訊如下
# uname -a
Linux rac1 2.6.18-164.el5 #1 SMP Tue Aug 18 15:51:54 EDT 2009 i686 i686 i386 GNU/Linux
# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 5.4 (Tikanga)
可以通過如下方式指定 主裝置號和復裝置號
# raw /dev/raw/raw1 1 1
/dev/raw/raw1: bound to major 1, minor 1
raw /dev/raw/raw[n] /dev/xxx
其中n的範圍是0-8191。raw目錄不存在的話會被自動建立。執行這個命令,就會在/dev/raw下生成一個對應的raw[n]檔案用命令方式繫結裸裝置在系統重啟後會失效。
刪除裸裝置
# raw /dev/raw/raw2 0 0
/dev/raw/raw2: bound to major 0, minor 0
# raw -qa
/dev/raw/raw1: bound to major 1, minor 1
以上設定必須同時修改 /etc/udev/rules.d/60-raw.rules才能保證重啟後生效,否則重啟後系統會重新讀取/etc/udev/rules.d/60-raw.rules
如需設定raw裝置的使用者和許可權資訊,可在/etc/udev/rules.d/60-raw.rules檔案裡新增如下資訊:
ACTION=="add", KERNEL=="raw1", OWNER="dave", GROUP="tianlesoftware", MODE="660"
如果有多個raw裝置,可以寫成:
ACTION=="add", KERNEL=="raw[1-4]", OWNER="dave", GROUP="tianlesoftware", MODE="660"
#chown oracle:oinstall /dev/raw/raw[1-4]
#chmod 775 /dev/raw/raw[1-4]
注意:在核心2.6.9-89.5AXS2之前使用/etc/sysconfig/rawdevices和/etc/udev/permissions.d/50-udev.permissions進行raw裝置的配置和許可權管理。在核心 2.6.18-128.7AXS3以後則使用了本文介紹的 /etc/udev/rules.d/60-raw.rules進行raw裝置的管理
確定裸裝置的大小
比較笨的辦法是,找出看裸裝置對應的是那個實際的塊裝置,然後用fdisk -l /dev/[h,s]dXN看那個塊裝置的大小就好了。比較簡單的辦法是用blockdev命令來計算,如:
#blockdev --getsize /dev/raw/raw1
11718750
11718750表示有多少OS BLIOCK。
一般一個OS BLOCK大小是512位元組,所以11718750*512/1024/1024= 5722(m) 就是裸裝置的大小。
使用裸裝置作為oracle的資料檔案的注意事項
1、一個裸裝置只能放置一個資料檔案
2、資料檔案的大小不能超過裸裝置的大小
如果是日誌檔案,則裸裝置最大可用大小=裸裝置對應分割槽大小 - 1 * 512 (保留一個redo lock)
如果是資料檔案,則裸裝置最大可用大小=裸裝置對應分割槽大小 - 2 * db_block_size(保留兩個block)
為了簡單起見,對所有的檔案設定稱比裸裝置小1M即可。
3、資料檔案最好不要設定稱自動擴充套件,如果設定稱自動擴充套件,一定要把maxsize設定設定為比裸裝置小
4、linux下oracle不能直接把邏輯卷作為裸裝置,也要進行繫結。unix下就不需要。
參考至:《大話Oracle Rac》張曉明著
Configuring raw devices (multipath) for Oracle Clusterware 10g Release 2 (10.2.0) on RHEL5-OEL5 [ID 564580.1]
http://www.cnblogs.com/spring3mvc/archive/2010/11/26/2414737.html
http://blog.csdn.net/tianlesoftware/archive/2010/11/30/6045137.aspx
http://bianxq.iteye.com/blog/510445
http://blog.csdn.net/tianlesoftware/article/details/5796962
http://www.sudu.cn/info/html/edu/20080102/281296.html
http://www.edward-han.com/175.html
http://www.cnblogs.com/rootq/articles/1487267.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22621861/viewspace-2116865/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux裸裝置總結Linux
- linux udev裸裝置繫結Linuxdev
- raw 裸裝置資料檔案更改其他raw裸裝置位置
- 一文詳解!什麼是裝置管理?裝置管理概念、功能、定義解讀!
- AIX中的裸裝置AI
- Linux 裝置檔案/dev/*詳解、查詢Linuxdev
- Linux下基於裸裝置建立10g資料庫Linux資料庫
- vmware + 裸裝置 + crs + oracle10g RAC搭建步驟(二):安裝linuxOracleLinux
- Linux裝置驅動開發詳解:基於Linux4.0核心Linux
- DM7使用裸裝置搭建DMRAC
- DM8 使用裸裝置搭建DMRAC
- Linux詳解 --- 程式管理Linux
- 詳解OEE,裝置實時資料管理與應用方案
- 關於SSL裝置的詳解
- POE 供電裝置原理詳解
- Linux 網站管理OSL 詳解Linux網站
- Linux配置和管理裝置對映多路徑multipathLinux
- rhel 7.x 使用 udev scsi rules 配置裸裝置dev
- 基於裸裝置的ASM磁碟組擴容方案ASM
- 記錄一則AIX使用裸裝置安裝OracleRAC的問題AIOracle
- 詳解裝置指紋核心演算法演算法
- 關於召回《Linux裝置驅動開發詳解-基於最新的Linux 4.0核心》的通知Linux
- 使用 udev 高效、動態地管理 Linux 裝置檔案devLinux
- 使用udev高效、動態的管理Linux裝置檔案devLinux
- Linux裝置節點Linux
- Linux裝置模型(3)Linux模型
- 醫療裝置管理系統-智慧裝置管理系統平臺
- linux檢視裝置命令Linux
- Linux磁碟裝置基礎Linux
- Linux中的主次裝置Linux
- Linux裝置掛載和解除安裝Linux
- Linux 防火牆與安全管理工具詳解Linux防火牆
- 【linux】驅動-8-一文解決裝置樹Linux
- 裝置指紋技術詳解丨裝置指紋知多少,看這場直播就夠了!
- Linux 高可用仲裁裝置配置Linux
- Linux裝置模型(一) 概覽Linux模型
- 遠端管理 Mac OSX 裝置Mac
- 作業系統裝置管理作業系統
- 裝置管理器在哪win10_win10電腦裝置管理器在哪Win10