Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Was ist das Format von Linux Raw?

Was ist das Format von Linux Raw?

藏色散人
藏色散人Original
2023-03-14 09:33:092022Durchsuche

Linux Raw ist das ursprüngliche Datenformat, was unter Linux „Bare Device“ bedeutet, auch Bare Partition und Raw Partition genannt; Linux Raw ist ein Sonderzeichen, das nicht formatiert wurde und von Unix/Linux nicht über das Dateisystem gelesen werden kann Gerät; ein Rohgerät kann an eine Partition oder eine Festplatte gebunden werden.

Was ist das Format von Linux Raw?

Die Betriebsumgebung dieses Tutorials: Linux5.9.8-System, Dell G3-Computer.

Was ist das Format von Linux Raw?

Originaldatenformat.

Detaillierte Erläuterung der Linux-Rohgeräte

Übersicht über Bare-Geräte

Bare-Gerät: Auch Bare-Partition (Rohpartition) genannt. Es handelt sich um ein Sonderzeichengerät, das nicht formatiert wurde und von Unix/Linux nicht gelesen werden kann das Dateisystem. Ein Raw-Gerät kann an eine Partition oder eine Festplatte gebunden werden.

Zeichengerät: Lese- und Schreibzeichengeräte müssen nicht den Betriebssystempuffer durchlaufen. Es kann nicht vom Dateisystem gemountet werden.

Blockgeräte: Blockgeräte zum Lesen und Schreiben müssen den Betriebssystempuffer durchlaufen, der im Dateisystem bereitgestellt werden kann.

Dies bezieht sich auf die Linux-Version. In der alten Version können maximal 256 Bare-Geräte vorhanden sein. Unter Linux 4 können Sie 81Array2 Bare-Geräte binden. Unter Linux können jedoch nur maximal 255 Partitionen vorhanden sein. Wenn Sie daher ein Raw-Gerät zum Binden einer Partition verwenden, können Sie nur maximal 255 Raw-Geräte binden. Wenn Sie lvm verwenden, gibt es keine solche Einschränkung.

Eine einzelne Festplatte kann unter Linux bis zu 15 Partitionen haben. 3 primäre Partitionen + 1 erweiterte Partition + 11 logische Partitionen.

Die empfohlene Partitionierungsmethode lautet: Teilen Sie sie zunächst in 3 primäre Partitionen auf, die vierte Partition ist eine erweiterte Partition, und teilen Sie sie dann in der erweiterten Partition in 11 logische Partitionen auf.

Beachten Sie, dass Raw-Geräte nicht an erweiterte Partitionen gebunden sein sollten.

Wenn Sie Bare-Geräte unter Linux verwenden müssen, müssen Sie diese manuell binden, nicht jedoch unter Unix.

Da jedes Blockgerät in Unix über ein entsprechendes Zeichengerät für ungepufferte E/A verfügt, ist dies das entsprechende Rohgerät. Rawio unter Linux implementiert eine Reihe ungebundener Rohgeräte /dev/rawN oder /dev/raw/rawN und ein Steuergerät /dev/rawct, um sie an Blockgeräte zu binden. Wenn Sie also ein Rohgerät verwenden müssen, müssen Sie es mit einem echten Blockgerät abgleichen. Dieser Schritt vervollständigt tatsächlich die automatische Zuordnung eines nicht zwischengespeicherten Zeichengeräts in Unix.

Haupt- und Nebengerätenummer

In Unix-/Linux-Systemen ist alles eine Datei. Alle Festplatten, Disketten, Tastaturen und andere Geräte werden durch Dateien dargestellt, die den Dateien unter /dev entsprechen. Für Anwendungen können diese Gerätedateien wie gewöhnliche Dateien geöffnet, geschlossen, gelesen und geschrieben werden. Allerdings handelt es sich bei solchen Dateinamen wie /dev/sda und /dev/raw/raw1 allesamt um Benutzerraumnamen, und der Betriebssystemkern weiß nicht, worauf sich dieser Name bezieht. Im Kernel-Bereich werden Geräte durch Haupt- und Nebengerätenummern unterschieden.

Hauptgerätenummer kann als Gerätetreiber betrachtet werden. Geräte, die von demselben Gerätetreiber verwaltet werden, haben dieselbe Hauptgerätenummer. Diese Nummer ist tatsächlich der Index der Gerätetreibertabelle im Kernel, in der verschiedene Gerätetreiber gespeichert sind. Die Nebengerätenummer wird verwendet, um das spezifische Gerät darzustellen, auf das zugegriffen wird. Das heißt, der Kernel findet den Gerätetreiber anhand der Hauptgerätenummer und erhält dann den Gerätestandort und andere Attribute von der Nebengerätenummer. Alle diese wichtigen Gerätenummern sind vorab zugewiesen. Details können unter http://www.lanana.org/docs/device-list/devices-2.6+.txt eingesehen werden.

Zum Beispiel ist das Rohgerät 162 und das SCSI-Blockgerät 8

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

Die Konfiguration des Rohgeräts auf der Redhat-Plattform hat sich nach Redhat 5 geändert. Vor Redhat 5 wurde die Datei /etc/sysconfig/rawdevices direkt konfiguriert und das Starten und Herunterfahren von Raw-Geräten wurde über /etc/init.d/rawdevices verwaltet. Nach Redhat 5 wurde die ursprüngliche Rohgeräteschnittstelle abgeschafft und Redhat 5 wird über udev-Regeln konfiguriert. Zum Konfigurieren müssen Sie die Datei /etc/udev/rules.d/60-raw.rules bearbeiten.

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.

Darunter

ACTION=="add", KERNEL="<device name>", RUN+="raw /dev/raw/rawX %N"

Konfigurieren Sie den Gerätenamen, ersetzen Sie c0e02383b3806573072bef895315f499 durch den Gerätenamen, den Sie binden müssen (z. B. /dev/sda1), A“ und „B“ sind die Haupt-/Nebennummern des Geräts und X ist die vom System verwendete Rohgerätenummer.

Mein persönliches Verständnis des Prozesses der Rohverwaltung in Redhat ist: In Redhat 5 werden Rohgeräte über udev verwaltet und udev identifiziert Rohgeräte über MAJOR und MINOR. Daher müssen die Gerätenummer und die Rohgerätenummer gebunden werden, und die Hauptgerätenummer und die Nebengerätenummer können von Ihnen selbst angegeben oder vom System automatisch zugewiesen werden. Gemäß dem Beispiel von raw.rule in der offiziellen Dokumentation von Red Hat heißt es, dass KERNEL==.. oder ENV{MAJOR}... nur willkürlich konfiguriert werden müssen. Einige Internetnutzer haben jedoch getestet und bestätigt, dass beides sein muss gleichzeitig konfiguriert.

Konfigurieren Sie die Datei /etc/udev/rules.d/60-raw.rules.

Überprüfen Sie die Festplattenpartitionssituation.

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

Konfigurieren Sie die Datei /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
das Rohgerät

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

Überprüfen Sie die Konfiguration

# start_udev
Starting udev:                                             [  OK  ]

Der Autor hier ist sich nicht sicher, warum die Hauptgerätenummer und die komplexe Gerätenummer nicht mit dem übereinstimmen, was ich in /etc/udev/rules.d/60-raw angegeben habe. Ich hoffe, Leser, die mehr wissen, können mir sagen, dass die Kernel-Informationen wie folgt sind:

# raw -qa
/dev/raw/raw1:  bound to major 8, minor 17
/dev/raw/raw2:  bound to major 8, minor 18
: Sie können die Hauptgerätenummer und die komplexe Gerätenummer auf folgende Weise angeben:
# 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下就不需要。

相关推荐:《Linux视频教程

Das obige ist der detaillierte Inhalt vonWas ist das Format von Linux Raw?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn