ホームページ  >  記事  >  運用・保守  >  Linux rawのフォーマットは何ですか?

Linux rawのフォーマットは何ですか?

藏色散人
藏色散人オリジナル
2023-03-14 09:33:092025ブラウズ

Linux raw は、Linux で「裸のデバイス」を意味する生のデータ形式であり、裸のパーティションや raw パーティションとも呼ばれます。linux raw は、フォーマットされていないため、Unix/Linux で読み取ることができないデータ形式です。ファイル システムを通じて特殊文字デバイスを取得し、raw デバイスをパーティションまたはディスクにバインドできます。

Linux rawのフォーマットは何ですか?

#このチュートリアルの動作環境: linux5.9.8 システム、Dell G3 コンピューター。

Linux raw の形式は何ですか?

オリジナルのデータ形式。

Linux raw デバイスの詳細説明

Naked device の概要

Bare device: raw パーティション (raw パーティション) とも呼ばれ、 not be formatted 、ファイル システムを通じて Unix/Linux によって読み取られない特殊文字デバイス。 RAW デバイスはパーティションまたはディスクにバインドできます。

キャラクター デバイス: キャラクター デバイスの読み取りおよび書き込みは、OS バッファーを経由する必要はありません。ファイルシステムではマウントできません。

ブロック デバイス: ブロック デバイスへの読み取りと書き込みは、ファイル システムにマウントできる OS バッファーを経由する必要があります。

これは Linux バージョンに関連しています。古いバージョンでは、ベア デバイスは最大 256 個までしか存在できません。Linux 4 では、81Array2 ベア デバイスをバインドできます。ただし、Linux では、パーティションは最大 255 個までしか存在できないため、RAW デバイスを使用してパーティションをバインドする場合は、最大 255 個の RAW デバイスしかバインドできません。 LVM を使用している場合、そのような制限はありません。

Linux では、1 つのディスクに最大 15 個のパーティションを作成できます。 3 つのプライマリ パーティション、1 つの拡張パーティション、および 11 の論理パーティション。

推奨されるパーティション分割方法は、まず 3 つのプライマリ パーティションに分割し、4 番目のパーティションは拡張パーティションで、次に拡張パーティションを 11 個の論理パーティションに分割します。

RAW デバイスは拡張パーティションにバインドしないでください。

Linux でベア デバイスを使用する必要がある場合は、手動でバインドする必要がありますが、Unix ではバインドする必要はありません。

Unix のすべてのブロック デバイスには、バッファなし I/O に対応するキャラクタ デバイスがあるため、これが対応する raw デバイスになります。 Linux の Rawio は、バインドされていない (アンバインドされた) raw デバイス /dev/rawN または /dev/raw/rawN と制御デバイス /dev/rawct のセットを実装して、それらをブロック デバイスにバインドします。したがって、raw デバイスを使用する必要がある場合は、それを実際のブロック デバイスと一致させる必要があり、このステップにより、Unix での非キャッシュ キャラクタ デバイスの自動マッピングが実際に完了します。

メジャー デバイス番号とマイナー デバイス番号

UNIX/Linux システムでは、すべてがファイルです。すべてのハード ディスク、フロッピー ディスク、キーボード、およびその他のデバイスは、/dev 下のファイルに対応するファイルによって表されます。アプリケーションの場合、これらのデバイス ファイルは、通常のファイルと同様に開いたり、閉じたり、読み書きしたりできます。ただし、/dev/sda や /dev/raw/raw1 などのファイル名はすべてユーザー空間名であり、OS カーネルはこの名前が何を指すのか知りません。カーネル空間では、デバイスはメジャー デバイス番号とマイナー デバイス番号によって区別されます。

メジャー デバイス番号は、デバイス ドライバーとみなすことができます。同じデバイス ドライバーによって管理されるデバイスは、同じメジャー デバイス番号を持ちます。この番号は、実際には、異なるデバイスを格納するカーネル内のデバイス ドライバー テーブルのインデックスです。運転者。マイナーデバイス番号は、アクセスされる特定のデバイスを表すために使用されます。つまり、カーネルはメジャー デバイス番号に基づいてデバイス ドライバーを検索し、マイナー デバイス番号からデバイスの場所とその他の属性を取得します。これらの主要なデバイス番号はすべて事前に割り当てられています。詳細は http://www.lanana.org/docs/device-list/devices-2.6.txt でご覧いただけます。

たとえば、raw デバイスは 162、scsi ブロック デバイスは 8

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

Redhat プラットフォーム上の raw デバイスの構成は、redhat 5 以降変更されました。 Redhat 5 より前では、/etc/sysconfig/rawdevices ファイルが直接設定され、RAW デバイスの起動とシャットダウンは /etc/init.d/rawdevices を通じて管理されていました。 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"

デバイス名を設定します。e6936c998ce51644b8613081728bb54c をバインドする必要があるデバイス名 (/dev/sda1 など) に置き換えます。X は raw デバイス番号です。

メジャー/マイナー番号:

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

「A」と「B」はデバイスのメジャー/マイナー番号で、X はシステムで使用される生のデバイス番号です。

redhat での raw 管理プロセスについての私の個人的な理解は次のとおりです。redhat 5 では、raw デバイスは udev を通じて管理され、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 は、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下就不需要。

相关推荐:《Linux视频教程

以上がLinux rawのフォーマットは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。