歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux裸設備管理詳解

Linux裸設備管理詳解

日期:2017/2/28 15:45:44   编辑:Linux教程

裸設備概述

裸設備:也叫裸分區(原始分區),是一種沒有經過格式化,不被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裡的自動對應一個非緩存字符設備。
/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文件

Copyright © Linux教程網 All Rights Reserved