linuxraw是原始數(shù)據(jù)格式嗎

這篇文章主要講解了“l(fā)inux raw是原始數(shù)據(jù)格式嗎”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“l(fā)inux raw是原始數(shù)據(jù)格式嗎”吧!

創(chuàng)新互聯(lián)專注于企業(yè)成都營銷網(wǎng)站建設(shè)、網(wǎng)站重做改版、慶云網(wǎng)站定制設(shè)計、自適應(yīng)品牌網(wǎng)站建設(shè)、HTML5商城開發(fā)、集團公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計等建站業(yè)務(wù),價格優(yōu)惠性價比高,為慶云等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

linux raw是原始數(shù)據(jù)格式,在linux中表示“裸設(shè)備”,也叫裸分區(qū)、原始分區(qū);linux raw是一種沒有經(jīng)過格式化,不被Unix/Linux通過文件系統(tǒng)來讀取的特殊字符設(shè)備;裸設(shè)備可以綁定一個分區(qū),也可以綁定一個磁盤。

linux raw設(shè)備詳解

裸設(shè)備概述

裸設(shè)備:也叫裸分區(qū)(原始分區(qū)),是一種沒有經(jīng)過格式化,不被Unix/Linux通過文件系統(tǒng)來讀取的特殊字符設(shè)備。裸設(shè)備可以綁定一個分區(qū),也可以綁定一個磁盤。

字符設(shè)備:對字符設(shè)備的讀寫不需要通過OS的buffer。它不可被文件系統(tǒng)mount。

塊設(shè)備:對塊設(shè)備的讀寫需要通過OS的buffer,它可以被mount到文件系統(tǒng)中。

這個與linux的版本相關(guān),在舊版本中,最多只可以有256個裸設(shè)備,Linux 4下做多可以綁定81Array2個裸設(shè)備。但是在linux下,最多只能有255個分區(qū),所以,如果用裸設(shè)備綁定分區(qū),最多只能綁定255個裸設(shè)備。如果是用lvm,則沒有這個限制。

Linux下單個磁盤最多可以有15個分區(qū)。3個主分區(qū) + 1個擴展分區(qū) + 11個邏輯分區(qū)。

建議的分區(qū)方法是:先分3個主分區(qū),第四個分區(qū)為擴展分區(qū),然后在擴展分區(qū)中再分成11個邏輯分區(qū)。

注意,裸設(shè)備不要綁定在擴展分區(qū)上。

linux下如果需要使用裸設(shè)備,則需要手工進行綁定,unix下則不用。

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

major和minor device number

在unix/linux系統(tǒng)中,一切都是文件。所有硬盤、軟盤、鍵盤等設(shè)備都用文件來代表,對應(yīng)著/dev下面的文件。對于應(yīng)用程序來說,可以像對待普通文件一樣打開,關(guān)閉、讀寫這些設(shè)備文件。但是這種文件名,比如/dev/sda、/dev/raw/raw1都是用戶空間名稱,OS Kernel根本不知道這個名稱指的是什么。在內(nèi)核空間是通過major、minor device number 來區(qū)分設(shè)備的。

major device number可以看作是設(shè)備驅(qū)動程序,被同一設(shè)備驅(qū)動程序管理的設(shè)備有相同的major device number.這個數(shù)字實際是Kernel中device driver table 的索引,這個表保存著不同設(shè)備驅(qū)動程序。而minor device number用來代表被訪問的具體設(shè)備。也就是說Kernel根據(jù)major device number 找到設(shè)備驅(qū)動程序,然后再從minor device number 獲得設(shè)備位置等屬性。所有這些major device number 是已經(jīng)預(yù)先分配好的。詳細信息可以從http://www.lanana.org/docs/device-list/devices-2.6+.txt查看。

比如裸設(shè)備是162,scsi塊設(shè)備是8

/etc/udev/rules.d/60-raw.rules

Redhat平臺對raw設(shè)備的配置在redhat 5之后有了變化。在redhat 5之前,直接配置/etc/sysconfig/rawdevices件,通過/etc/init.d/rawdevices來管理raw設(shè)備的啟動和關(guān)閉。在Redhat 5之后,原來的raw設(shè)備接口已經(jīng)取消了,redhat 5中通過udev規(guī)則進行配置。 要配置,需要編輯/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"

配置設(shè)備名稱,用你需要綁定的設(shè)備名稱替換 <device name>(如:/dev/sda1),X為裸設(shè)備號

主/次號碼:

ACTION=="add", ENV{MAJOR}="A", ENV{MINOR}="B", RUN+="raw /dev/raw/rawX %M %m"

"A" 和 "B" 是設(shè)備的主/次號碼,X是系統(tǒng)使用的raw設(shè)備號碼。

個人對redhat管理raw的過程理解為:在redhat 5中,是通過udev來管理raw設(shè)備的,而udev是通過MAJOR和MINOR來識別raw設(shè)備。故需要將設(shè)備號和裸設(shè)備號進行綁定,而主設(shè)備號和次設(shè)備號可以自行指定或者由系統(tǒng)自動分配。根據(jù)red hat的官方文檔中關(guān)于raw.rule的示例中說KERNEL==..或ENV{MAJOR}...只需要任意配置一個就可以,但有些網(wǎng)友經(jīng)過試驗,驗證必須二者同時配置才可以。

配置/etc/udev/rules.d/60-raw.rules文件

查看磁盤分區(qū)情況

# 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設(shè)備

# 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

這里筆者不清楚為什么主設(shè)備號和復(fù)設(shè)備號并不和我在/etc/udev/rules.d/60-raw.rules指定的一樣,望了解的讀者告知,系統(tǒng)內(nèi)核信息如下

# 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)

可以通過如下方式指定主設(shè)備號和復(fù)設(shè)備號

# 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目錄不存在的話會被自動創(chuàng)建。執(zhí)行這個命令,就會在/dev/raw下生成一個對應(yīng)的raw[n]文件用命令方式綁定裸設(shè)備在系統(tǒng)重啟后會失效。

刪除裸設(shè)備

# 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

以上設(shè)置必須同時修改/etc/udev/rules.d/60-raw.rules才能保證重啟后生效,否則重啟后系統(tǒng)會重新讀取/etc/udev/rules.d/60-raw.rules

如需設(shè)置raw設(shè)備的用戶和權(quán)限信息,可在/etc/udev/rules.d/60-raw.rules文件里添加如下信息:

ACTION=="add", KERNEL=="raw1", OWNER="dave", GROUP="tianlesoftware", MODE="660"

如果有多個raw設(shè)備,可以寫成:

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]

注意:在內(nèi)核2.6.9-89.5AXS2之前使用/etc/sysconfig/rawdevices和/etc/udev/permissions.d/50-udev.permissions進行raw設(shè)備的配置和權(quán)限管理。在內(nèi)核 2.6.18-128.7AXS3以后則使用了本文介紹的/etc/udev/rules.d/60-raw.rules進行raw設(shè)備的管理

確定裸設(shè)備的大小

比較笨的辦法是,找出看裸設(shè)備對應(yīng)的是那個實際的塊設(shè)備,然后用fdisk -l /dev/[h,s]dXN看那個塊設(shè)備的大小就好了。比較簡單的辦法是用blockdev命令來計算,如:

#blockdev --getsize /dev/raw/raw1

11718750

11718750表示有多少OS BLIOCK。

一般一個OS BLOCK大小是512字節(jié),所以11718750*512/1024/1024= 5722(m) 就是裸設(shè)備的大小。

使用裸設(shè)備作為oracle的數(shù)據(jù)文件的注意事項

1、一個裸設(shè)備只能放置一個數(shù)據(jù)文件

2、數(shù)據(jù)文件的大小不能超過裸設(shè)備的大小

如果是日志文件,則裸設(shè)備最大可用大小=裸設(shè)備對應(yīng)分區(qū)大小 - 1 * 512 (保留一個redo lock)

如果是數(shù)據(jù)文件,則裸設(shè)備最大可用大小=裸設(shè)備對應(yīng)分區(qū)大小 - 2 * db_block_size(保留兩個block)

為了簡單起見,對所有的文件設(shè)置稱比裸設(shè)備小1M即可。

3、數(shù)據(jù)文件最好不要設(shè)置稱自動擴展,如果設(shè)置稱自動擴展,一定要把maxsize設(shè)置設(shè)置為比裸設(shè)備小

4、linux下oracle不能直接把邏輯卷作為裸設(shè)備,也要進行綁定。unix下就不需要。

感謝各位的閱讀,以上就是“l(fā)inux raw是原始數(shù)據(jù)格式嗎”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對linux raw是原始數(shù)據(jù)格式嗎這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

新聞名稱:linuxraw是原始數(shù)據(jù)格式嗎
當前路徑:http://muchs.cn/article32/gdsopc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、商城網(wǎng)站網(wǎng)站收錄、App開發(fā)、全網(wǎng)營銷推廣網(wǎng)站改版

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站建設(shè)網(wǎng)站維護公司