>  기사  >  운영 및 유지보수  >  Linux Raw의 형식은 무엇입니까?

Linux Raw의 형식은 무엇입니까?

藏色散人
藏色散人원래의
2023-03-14 09:33:092022검색

linux raw는 Linux에서 "기본 장치"를 의미하는 원시 데이터 형식으로, 네이키드 파티션 및 원시 파티션이라고도 합니다. Linux raw는 형식이 지정되지 않았으며 Unix/Linux에서 파일 시스템을 통해 읽을 수 없는 특수 문자입니다. 장치, 원시 장치는 파티션이나 디스크에 바인딩될 수 있습니다.

Linux Raw의 형식은 무엇입니까?

이 튜토리얼의 운영 환경: linux5.9.8 시스템, Dell G3 컴퓨터.

Linux Raw의 형식은 무엇인가요?

원본 데이터 형식.

Linux 원시 장치에 대한 자세한 설명

베어 장치 개요

베어 장치: 베어 파티션(원시 파티션)이라고도 하며 포맷되지 않았으며 Unix/Linux에서 읽을 수 없는 특수 문자 장치입니다. 파일 시스템. 원시 장치는 파티션이나 디스크에 바인딩될 수 있습니다.

문자 장치: 문자 장치를 읽고 쓰는 데 OS 버퍼를 거칠 필요가 없습니다. 파일 시스템에서는 마운트할 수 없습니다.

블록 장치: 블록 장치를 읽고 쓰려면 파일 시스템에 마운트할 수 있는 OS 버퍼를 거쳐야 합니다.

이것은 Linux 버전과 관련이 있습니다. 이전 버전에서는 최대 256개의 베어 장치만 있을 수 있습니다. Linux 4에서는 81Array2 베어 장치를 바인딩할 수 있습니다. 그러나 Linux에서는 최대 255개의 파티션만 있을 수 있습니다. 따라서 원시 장치를 사용하여 파티션을 바인딩하는 경우 최대 255개의 원시 장치만 바인딩할 수 있습니다. lvm을 사용하는 경우에는 그러한 제한이 없습니다.

Linux에서는 단일 디스크에 최대 15개의 파티션이 있을 수 있습니다. 기본 파티션 3개 + 확장 파티션 1개 + 논리 파티션 11개.

권장되는 파티셔닝 방법은 다음과 같습니다. 먼저 3개의 기본 파티션으로 나누고, 네 번째 파티션은 확장 파티션, 그런 다음 확장 파티션에서 11개의 논리 파티션으로 나눕니다.

원시 장치는 확장 파티션에 바인딩되어서는 안 됩니다.

Linux에서 베어 장치를 사용해야 하는 경우 수동으로 바인딩해야 하지만 Unix에서는 그렇지 않습니다.

Unix의 모든 블록 장치에는 버퍼링되지 않은 I/O에 해당하는 문자 장치가 있으므로 이것이 해당 원시 장치입니다. Linux의 Rawio는 바인딩되지 않은(바인딩되지 않은) 원시 장치 세트 /dev/rawN 또는 /dev/raw/rawN과 제어 장치 /dev/rawct를 구현하여 이를 블록 장치에 바인딩합니다. 따라서 원시 장치를 사용해야 하는 경우 이를 실제 블록 장치와 일치시켜야 합니다. 이 단계는 실제로 Unix에서 캐시되지 않은 문자 장치의 자동 매핑을 완료합니다.

주 및 부 장치 번호

unix/linux 시스템에서는 모든 것이 파일입니다. 모든 하드 디스크, 플로피 디스크, 키보드 및 기타 장치는 /dev 아래의 파일에 해당하는 파일로 표시됩니다. 응용 프로그램의 경우 이러한 장치 파일은 일반 파일처럼 열고 닫고 읽고 쓸 수 있습니다. 그러나 /dev/sda 및 /dev/raw/raw1과 같은 파일 이름은 모두 사용자 공간 이름이며 OS 커널은 이 이름이 무엇을 의미하는지 알지 못합니다. 커널 공간에서 장치는 주 장치 번호와 부 장치 번호로 구분됩니다.

주 장치 번호는 장치 드라이버로 간주할 수 있습니다. 동일한 장치 드라이버에 의해 관리되는 장치는 동일한 주 장치 번호를 갖습니다. 이 번호는 실제로 다른 장치 드라이버를 저장하는 커널의 장치 드라이버 테이블의 인덱스입니다. 보조 장치 번호는 액세스 중인 특정 장치를 나타내는 데 사용됩니다. 즉, 커널은 주요 장치 번호를 기반으로 장치 드라이버를 찾은 다음 부 장치 번호에서 장치 위치 및 기타 속성을 얻습니다. 이러한 주요 장치 번호는 모두 사전 할당되어 있습니다. 자세한 내용은 http://www.lanana.org/docs/device-list/devices-2.6+.txt에서 볼 수 있습니다.

예를 들어 원시 장치는 162이고 scsi 블록 장치는 8

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

Redhat 플랫폼의 원시 장치 구성이 redhat 5 이후 변경되었습니다. Redhat 5 이전에는 /etc/sysconfig/rawdevices 파일을 직접 구성하고 원시 장치의 시작 및 종료를 /etc/init.d/rawdevices를 통해 관리했습니다. Redhat 5 이후에는 원래 원시 장치 인터페이스가 취소되었으며 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"

장치 이름을 구성하고 004dbce29e9e40141a3cd5d175a4d6fe을 바인딩해야 하는 장치 이름(예: /dev/sda1)으로 바꾸세요. A"와 "B"는 주/부 번호입니다. X는 시스템에서 사용하는 원시 장치 번호입니다.

Redhat에서 원시를 관리하는 프로세스에 대한 개인적인 이해는 다음과 같습니다. Redhat 5에서는 원시 장치가 udev를 통해 관리되고 udev는 MAJOR 및 MINOR를 통해 원시 장치를 식별합니다. 따라서 디바이스 번호와 원시 디바이스 번호를 바인딩해야 하며, 메이저 디바이스 번호와 마이너 디바이스 번호는 직접 지정하거나 시스템에서 자동으로 할당할 수 있습니다. Red Hat 공식 문서에 있는 raw.rule의 예에 따르면 KERNEL==.. 또는 ENV{MAJOR}...만 임의로 구성하면 된다고 합니다. 그러나 일부 네티즌들은 둘 다 반드시 테스트하고 검증했습니다. 동시에 구성됩니다.

/etc/udev/rules.d/60-raw.rules 파일 구성

디스크 파티션 상황 확인

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

/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

시작 the raw device

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

구성을 확인하세요

# start_udev
Starting udev:                                             [  OK  ]

여기 작성자는 기본 장치 번호와 복잡한 장치 번호가 /etc/udev/rules.d/60-raw에 지정한 것과 왜 다른지 잘 모르겠습니다. 규칙에 대해 더 많이 아는 독자들은 시스템 커널 정보는 다음과 같습니다

# raw -qa
/dev/raw/raw1:  bound to major 8, minor 17
/dev/raw/raw2:  bound to major 8, minor 18

다음과 같은 방법으로 주요 장치 번호와 복합 장치 번호를 지정할 수 있습니다

.
# 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.