久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

如何解決使用udev管理asmdisk執行/sbin/scsi

196次閱讀
沒有評論

共計 20221 個字符,預計需要花費 51 分鐘才能閱讀完成。

這篇文章給大家分享的是有關如何解決使用 udev 管理 asmdisk 執行 /sbin/scsi_id 不顯示 UUID 的問題的內容。丸趣 TV 小編覺得挺實用的,因此分享給大家做個參考,一起跟隨丸趣 TV 小編過來看看吧。

      在搭建 RAC 的時候,使用 udev 方式來創建 ASM 磁盤,執行 /sbin/scsi_id 命令不知道啥原因, 死活獲取不到 UUID, 執行結果啥也不顯示。

[root@seiang2 ~]# scsi_id -u -g
/dev/sdb

    沒有 uuid 貌似沒法配置 udev
rules 文件,通過查閱相關資料,通過如下兩種方式實現的, 通過 udevinfo(6 版本操作系統 udevadm 取代了 udevinfo)命令獲取分區的信息, 可以利用分區中的這 2 項信息 SYSFS{start}== 63 和 SYSFS{size}== 16771797(6 版本變為 ATTR{start}== 4241160 和 ATTR{size}== 2120580)來代替 uuid 唯一標識這個設備;

實驗環境:

操作系統:Redhat5.5 
Hostname:seiang2.comsys.com

操作系統:Redhat6.4 
Hostname:test.comsys.com

目錄
一、使用 udevinfo/udevadm 獲取分區的唯一標識
二、使用裸設備創建 asm 磁盤

關于 Linux 下的 udev 詳細介紹:http://blog.itpub.net/31015730/viewspace-2142429/

一、使用 udevinfo/udevadm 獲取分區的唯一標識

新增加一塊磁盤,并對它進行分區,分區之后通過 udevinfo/udevadm 命令來獲取分區的唯一標識;

Redhat5 版本

[root@seiang2
~]# ll /sbin/udev*

-rwxr-xr-x
1 root root  15176 May  5  2009
/sbin/udevcontrol

-rwxr-xr-x
1 root root  61864 May  5  2009
/sbin/udevd

-rwxr-xr-x
1 root root 899928 May  5  2009 /sbin/udevd.static

-rwxr-xr-x
1 root root  23680 May  5  2009
/sbin/udevsettle

-rwxr-xr-x
1 root root  24144 May  5  2009
/sbin/udevtrigger

[root@seiang2
~]# cd
/sys/block/sdb

[root@seiang2
~]# udevinfo -a
-p /sys/block/sdb

Udevinfo
starts with the device specified by the devpath and then

walks
up the chain of parent devices. It prints for every device

found,
all possible attributes in the udev rules key format.

rule to match, can be composed by the attributes of the device

the attributes from one single parent device.

  looking at device /block/sdb :

  KERNEL== sdb

  SUBSYSTEM== block

  SYSFS{stat}==   63 
93  1248  19 
0  0  0 
0  0  19 
19

  SYSFS{size}== 10485760

  SYSFS{removable}== 0

  SYSFS{range}== 16

  SYSFS{dev}== 8:16

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0/1:0:0:0 :

  ID== 1:0:0:0

  BUS== scsi

  DRIVER== sd

  SYSFS{dh_state}== detached

  SYSFS{ioerr_cnt}== 0x0

  SYSFS{iodone_cnt}== 0x51

  SYSFS{iorequest_cnt}== 0x51

  SYSFS{iocounterbits}== 32

  SYSFS{timeout}== 60

  SYSFS{state}== running

  SYSFS{rev}== 1.0

  SYSFS{model}== VBOX HARDDISK 

  SYSFS{vendor}== ATA 

  SYSFS{scsi_level}== 6

  SYSFS{type}== 0

  SYSFS{queue_type}== simple

  SYSFS{queue_depth}== 31

  SYSFS{device_blocked}== 0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0 :

  ID== target1:0:0

  BUS==

  DRIVER==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1 :

  ID== host1

  BUS==

  DRIVER==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0 :

  ID== 0000:00:0d.0

  BUS== pci

  DRIVER== ahci

  SYSFS{broken_parity_status}== 0

  SYSFS{enable}== 1

 
SYSFS{modalias}== pci:v00008086d00002829sv00000000sd00000000bc01sc06i01

 
SYSFS{local_cpus}== 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000

  SYSFS{irq}== 177

  SYSFS{class}== 0x010601

  SYSFS{subsystem_device}== 0x0000

  SYSFS{subsystem_vendor}== 0x0000

  SYSFS{device}== 0x2829

  SYSFS{vendor}== 0x8086

  looking at parent device /devices/pci0000:00 :

  ID== pci0000:00

  BUS==

  DRIVER==

[root@seiang2
~]# fdisk
/dev/sdb

Device
contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel

Building
a new DOS disklabel. Changes will remain in memory only,

until
you decide to write them. After that, of course, the previous

content
won t be recoverable.

Warning:
invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command
(m for help): n

Command
action

  e 
extended

  p 
primary partition (1-4)

p

Partition
number (1-4): 1

First
cylinder (1-652, default 1):

Using
default value 1

Last
cylinder or +size or +sizeM or +sizeK (1-652, default 652): +1G

Command
(m for help): n

Command
action

  e 
extended

  p 
primary partition (1-4)

p

Partition
number (1-4): 2

First
cylinder (124-652, default 124):

Using
default value 124

Last
cylinder or +size or +sizeM or +sizeK (124-652, default 652): +1G

Command
(m for help): n

Command
action

  e 
extended

  p 
primary partition (1-4)

p

Partition
number (1-4): 3

First
cylinder (126-652, default 126):

Using
default value 126

Last
cylinder or +size or +sizeM or +sizeK (126-652, default 652): +1G

Command
(m for help): p

Disk
/dev/sdb: 5368 MB, 5368709120 bytes

heads, 63 sectors/track, 652 cylinders

Units
= cylinders of 16065 * 512 = 8225280 bytes

  Device Boot  Start  End  Blocks 
Id  System

/dev/sdb1  1  123  987966 
83  Linux

/dev/sdb2  124  125  16065 
83  Linux

/dev/sdb3  126  248  987997+ 
83  Linux

Command
(m for help): w

partition table has been altered!

Calling
ioctl() to re-read partition table.

Syncing
disks.

[root@seiang2
~]# ll /dev/sdb*

brw-r—–
1 root disk 8, 16 Jul 20 02:57 /dev/sdb

brw-r—–
1 root disk 8, 17 Jul 20 02:57 /dev/sdb1

brw-r—–
1 root disk 8, 18 Jul 20 02:57 /dev/sdb2

brw-r—–
1 root disk 8, 19 Jul 20 02:57 /dev/sdb3

使用 udevinfo 命令查看詳細的分區信息

[root@seiang2
~]# udevinfo -a
-p /sys/block/sdb/sdb1

Udevinfo
starts with the device specified by the devpath and then

walks
up the chain of parent devices. It prints for every device

found,
all possible attributes in the udev rules key format.

rule to match, can be composed by the attributes of the device

the attributes from one single parent device.

 looking at device /block/sdb/sdb1 :

  KERNEL== sdb1

  SUBSYSTEM== block

  SYSFS{stat}==   31 
67  392  19 
0  0  0 
0  0  17 
19

  SYSFS{size}== 1975932

  SYSFS{start}== 63

  SYSFS{dev}== 8:17

  looking at parent device /block/sdb :

  ID== sdb

  BUS== block

  DRIVER==

  SYSFS{stat}==   196 
575  3152  94 
1  0  8 
2  0  71 
96

  SYSFS{size}== 10485760

  SYSFS{removable}== 0

 
SYSFS{range}== 16

  SYSFS{dev}== 8:16

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0/1:0:0:0 :

  ID== 1:0:0:0

  BUS== scsi

  DRIVER== sd

  SYSFS{dh_state}== detached

  SYSFS{ioerr_cnt}== 0x0

  SYSFS{iodone_cnt}== 0xe1

  SYSFS{iorequest_cnt}== 0xe1

  SYSFS{iocounterbits}== 32

  SYSFS{timeout}== 60

  SYSFS{state}== running

  SYSFS{rev}== 1.0

  SYSFS{model}== VBOX HARDDISK 

  SYSFS{vendor}== ATA 

  SYSFS{scsi_level}== 6

   SYSFS{type}== 0

  SYSFS{queue_type}== simple

  SYSFS{queue_depth}== 31

  SYSFS{device_blocked}== 0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0 :

  ID== target1:0:0

  BUS==

  DRIVER==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1 :

  ID== host1

  BUS==

  DRIVER==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0 :

  ID== 0000:00:0d.0

  BUS== pci

  DRIVER== ahci

  SYSFS{broken_parity_status}== 0

  SYSFS{enable}== 1

 
SYSFS{modalias}== pci:v00008086d00002829sv00000000sd00000000bc01sc06i01

 
SYSFS{local_cpus}== 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000

  SYSFS{irq}== 177

  SYSFS{class}== 0x010601

  SYSFS{subsystem_device}== 0x0000

  SYSFS{subsystem_vendor}== 0x0000

  SYSFS{device}== 0x2829

  SYSFS{vendor}== 0x8086

  looking at parent device
/devices/pci0000:00 :

  ID== pci0000:00

  BUS==

  DRIVER==

[root@seiang2
rules.d]# udevinfo -a -p /sys/block/sdb/sdb3/

Udevinfo
starts with the device specified by the devpath and then

walks
up the chain of parent devices. It prints for every device

found,
all possible attributes in the udev rules key format.

rule to match, can be composed by the attributes of the device

the attributes from one single parent device.

  looking
at device /block/sdb/sdb3 :

  KERNEL== sdb3

  SUBSYSTEM== block

  SYSFS{stat}==   27 
355  382  31 
0  0  0 
0  0  31 
31

  SYSFS{size}== 1975995

  SYSFS{start}== 2008125

  SYSFS{dev}== 8:19

  looking at parent device /block/sdb :

  ID== sdb

  BUS== block

  DRIVER==

  SYSFS{stat}==   395 
1754  5700  383 
2  0  16 
8  0  242 
391

  SYSFS{size}== 10485760

  SYSFS{removable}== 0

  SYSFS{range}== 16

  SYSFS{dev}== 8:16

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0/1:0:0:0 :

  ID== 1:0:0:0

  BUS== scsi

  DRIVER== sd

  SYSFS{dh_state}== detached

  SYSFS{ioerr_cnt}== 0x0

  SYSFS{iodone_cnt}== 0x1b3

  SYSFS{iorequest_cnt}== 0x1b3

  SYSFS{iocounterbits}== 32

  SYSFS{timeout}== 60

  SYSFS{state}== running

  SYSFS{rev}== 1.0

  SYSFS{model}== VBOX HARDDISK 

  SYSFS{vendor}== ATA 

  SYSFS{scsi_level}== 6

  SYSFS{type}== 0

  SYSFS{queue_type}== simple

  SYSFS{queue_depth}== 31

  SYSFS{device_blocked}== 0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1/target1:0:0 :

   ID== target1:0:0

  BUS==

  DRIVER==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host1 :

  ID== host1

  BUS==

  DRIVER==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0 :

  ID== 0000:00:0d.0

  BUS== pci

  DRIVER== ahci

  SYSFS{broken_parity_status}== 0

  SYSFS{enable}== 1

 
SYSFS{modalias}== pci:v00008086d00002829sv00000000sd00000000bc01sc06i01

 
SYSFS{local_cpus}== 00000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000

  SYSFS{irq}== 177

  SYSFS{class}== 0x010601

  SYSFS{subsystem_device}== 0x0000

  SYSFS{subsystem_vendor}== 0x0000

  SYSFS{device}== 0x2829

  SYSFS{vendor}== 0x8086

  looking at parent device
/devices/pci0000:00 :

  ID== pci0000:00

  BUS==

DRIVER==

編輯 udev 的 rule 文件

[root@seiang2
~]# cd
/etc/udev/rules.d/

[root@seiang2
rules.d]# vim
99-oracle-asmdevices.rules

KERNEL== sdb1 ,
SUBSYSTEM== block , SYSFS{size}== 1975932 , SYSFS{start}== 63 ,
OWNER= grid ,NAME= asmdisk-data1 ,
GROUP= asmadmin , MODE= 0660

KERNEL== sdb3 ,
SUBSYSTEM== block , SYSFS{size}== 1975995 , SYSFS{start}== 2008125 ,
OWNER= grid ,NAME= asmdisk-data2 ,
GROUP= asmadmin , MODE= 0660

編輯 rule 文件之后可以使用 udevtest 測試 udev 對設備的管理, 命名, 鏈接以及權限的設置情況

[root@seiang2
rules.d]# udevtest
/block/sdb

main:
looking at device /block/sdb from subsystem block

run_program:
/lib/udev/usb_id -x

run_program:
/lib/udev/usb_id returned with status 1

run_program:
/lib/udev/scsi_id -g -x -s /block/sdb -d /dev/.tmp-8-16

run_program:
/lib/udev/scsi_id (stdout) ID_VENDOR=ATA

run_program:
/lib/udev/scsi_id (stdout) ID_MODEL=VBOX_HARDDISK

run_program:
/lib/udev/scsi_id (stdout) ID_REVISION=1.0

run_program:
/lib/udev/scsi_id (stdout) ID_SERIAL=SATA_VBOX_HARDDISK_VBda65d90d-e2055c6a

run_program:
/lib/udev/scsi_id (stdout) ID_TYPE=disk

run_program:
/lib/udev/scsi_id (stdout) ID_BUS=scsi

run_program:
/lib/udev/scsi_id returned with status 0

udev_rules_get_name:
add symlink disk/by-id/scsi-SATA_VBOX_HARDDISK_VBda65d90d-e2055c6a

run_program:
/lib/udev/path_id /block/sdb

run_program:
/lib/udev/path_id (stdout) ID_PATH=pci-0000:00:0d.0-scsi-1:0:0:0

run_program:
/lib/udev/path_id returned with status 0

udev_rules_get_name:
add symlink disk/by-path/pci-0000:00:0d.0-scsi-1:0:0:0

run_program:
/lib/udev/vol_id –export /dev/.tmp-8-16

run_program:
/lib/udev/vol_id returned with status 4

run_program:
/lib/udev/edd_id –export /dev/.tmp-8-16

run_program:
/lib/udev/edd_id (stderr) no kernel EDD support

run_program:
/lib/udev/edd_id returned with status 2

udev_rules_get_name:
no node name set, will use kernel name sdb

udev_device_event:
device /block/sdb already in database, validate currently present symlinks

udev_node_add:
creating device node /dev/sdb , major = 8 , minor = 16 , mode = 0640 , uid
= 0 , gid = 6

udev_node_add:
creating symlink /dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VBda65d90d-e2055c6a
to ../../sdb

udev_node_add:
creating symlink /dev/disk/by-path/pci-0000:00:0d.0-scsi-1:0:0:0 to
../../sdb

main:
run: socket:/org/kernel/udev/monitor

main:
run: /lib/udev/udev_run_devd

main:
run: socket:/org/freedesktop/hal/udev_event

main:
run: /sbin/pam_console_apply /dev/sdb /dev/disk/by-id/scsi-SATA_VBOX_HARDDISK_VBda65d90d-e2055c6a
/dev/disk/by-path/pci-0000:00:0d.0-scsi-1:0:0:0

重新啟動 udev, 在啟動之前首先使用命令 udevcontrol 重新裝載 rules(此步驟可以省略)

[root@seiang2
rules.d]# udevcontrol
reload_rules

[root@seiang2
rules.d]# start_udev

Starting
udev: 
[  OK ]

[root@seiang2
rules.d]# ll
/dev/asm*

brw-rw—-
1 grid asmadmin 8, 17 Jul 20 03:09 /dev/asmdisk-data1

brw-rw—-
1 grid asmadmin 8, 19 Jul 20 03:09 /dev/asmdisk-data2

[root@seiang2
rules.d]#

Redhat6 版本

[root@test
rules.d]# udevadm
info -a -p /sys/block/sdb/sdb2

Udevadm
info starts with the device specified by the devpath and then

walks
up the chain of parent devices. It prints for every device

found,
all possible attributes in the udev rules key format.

rule to match, can be composed by the attributes of the device

the attributes from one single parent device.

  looking at device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb2 :

  KERNEL== sdb2

  SUBSYSTEM== block

  DRIVER==

  ATTR{partition}== 2

   ATTR{start}== 2120580

  ATTR{size}== 2120580

  ATTR{alignment_offset}== 0

  ATTR{discard_alignment}== 0

  ATTR{stat}==   238 
84  1288  247 
0  0  0 
0  0  232 
247

  ATTR{inflight}==   0 
0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0/block/sdb :

  KERNELS== sdb

  SUBSYSTEMS== block

  DRIVERS==

  ATTRS{range}== 16

  ATTRS{ext_range}== 256

  ATTRS{removable}== 0

  ATTRS{ro}== 0

  ATTRS{size}== 10485760

  ATTRS{alignment_offset}== 0

  ATTRS{discard_alignment}== 0

  ATTRS{capability}== 52

  ATTRS{stat}==   2082 
4734  15818  2580 
640  98980  99628 
48250  0  2549 
50830

  ATTRS{inflight}==   0 
0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0 :

  KERNELS== 3:0:0:0

  SUBSYSTEMS== scsi

  DRIVERS== sd

  ATTRS{device_blocked}== 0

  ATTRS{type}== 0

  ATTRS{scsi_level}== 6

  ATTRS{vendor}== ATA 

  ATTRS{model}== VBOX HARDDISK 

  ATTRS{rev}== 1.0

  ATTRS{state}== running

  ATTRS{timeout}== 30

  ATTRS{iocounterbits}== 32

  ATTRS{iorequest_cnt}== 0xb10

  ATTRS{iodone_cnt}== 0xb0e

  ATTRS{ioerr_cnt}== 0xf

  ATTRS{modalias}== scsi:t-0x00

   ATTRS{evt_media_change}== 0

  ATTRS{dh_state}== detached

  ATTRS{queue_depth}== 31

 
ATTRS{queue_ramp_up_period}== 120000

  ATTRS{queue_type}== simple

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0 :

  KERNELS== target3:0:0

  SUBSYSTEMS== scsi

  DRIVERS==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3 :

  KERNELS== host3

  SUBSYSTEMS== scsi

  DRIVERS==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0 :

  KERNELS== 0000:00:0d.0

  SUBSYSTEMS== pci

  DRIVERS== ahci

  ATTRS{vendor}== 0x8086

  ATTRS{device}== 0x2829

  ATTRS{subsystem_vendor}== 0x0000

  ATTRS{subsystem_device}== 0x0000

  ATTRS{class}== 0x010601

  ATTRS{irq}== 21

  ATTRS{local_cpus}== 1

  ATTRS{local_cpulist}== 0

 
ATTRS{modalias}== pci:v00008086d00002829sv00000000sd00000000bc01sc06i01

  ATTRS{numa_node}== -1

  ATTRS{enable}== 1

  ATTRS{broken_parity_status}== 0

  ATTRS{msi_bus}==

  looking at parent device
/devices/pci0000:00 :

  KERNELS== pci0000:00

  SUBSYSTEMS==

DRIVERS==

[root@test
rules.d]# udevadm
info -a -p /sys/block/sdb/sdb3

Udevadm
info starts with the device specified by the devpath and then

walks
up the chain of parent devices. It prints for every device

found,
all possible attributes in the udev rules key format.

rule to match, can be composed by the attributes of the device

the attributes from one single parent device.

  looking at device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0/block/sdb/sdb3 :

  KERNEL== sdb3

  SUBSYSTEM== block

  DRIVER==

  ATTR{partition}== 3

  ATTR{start}== 4241160

  ATTR{size}== 2120580

  ATTR{alignment_offset}== 0

  ATTR{discard_alignment}== 0

  ATTR{stat}==   200 
122  1288  255 
0  0  0 
0  0  250 
255

  ATTR{inflight}==   0 
0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0/block/sdb :

  KERNELS== sdb

  SUBSYSTEMS== block

  DRIVERS==

  ATTRS{range}== 16

  ATTRS{ext_range}== 256

  ATTRS{removable}== 0

  ATTRS{ro}== 0

  ATTRS{size}== 10485760

  ATTRS{alignment_offset}== 0

  ATTRS{discard_alignment}== 0

  ATTRS{capability}== 52

  ATTRS{stat}==   2082 
4734  15818  2580 
640  98980  99628 
48250  0  2549 
50830

  ATTRS{inflight}==   0 
0

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0/3:0:0:0 :

  KERNELS== 3:0:0:0

  SUBSYSTEMS== scsi

  DRIVERS== sd

  ATTRS{device_blocked}== 0

  ATTRS{type}== 0

  ATTRS{scsi_level}== 6

  ATTRS{vendor}== ATA 

  ATTRS{model}== VBOX HARDDISK 

  ATTRS{rev}== 1.0

  ATTRS{state}== running

  ATTRS{timeout}== 30

  ATTRS{iocounterbits}== 32

  ATTRS{iorequest_cnt}== 0xb10

  ATTRS{iodone_cnt}== 0xb0e

  ATTRS{ioerr_cnt}== 0xf

  ATTRS{modalias}== scsi:t-0x00

  ATTRS{evt_media_change}== 0

  ATTRS{dh_state}== detached

  ATTRS{queue_depth}== 31

 
ATTRS{queue_ramp_up_period}== 120000

  ATTRS{queue_type}== simple

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3/target3:0:0 :

  KERNELS== target3:0:0

  SUBSYSTEMS== scsi

  DRIVERS==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0/host3 :

  KERNELS== host3

  SUBSYSTEMS== scsi

  DRIVERS==

  looking at parent device
/devices/pci0000:00/0000:00:0d.0 :

  KERNELS== 0000:00:0d.0

  SUBSYSTEMS== pci

  DRIVERS== ahci

  ATTRS{vendor}== 0x8086

  ATTRS{device}== 0x2829

  ATTRS{subsystem_vendor}== 0x0000

  ATTRS{subsystem_device}== 0x0000

  ATTRS{class}== 0x010601

  ATTRS{irq}== 21

  ATTRS{local_cpus}== 1

  ATTRS{local_cpulist}== 0

  ATTRS{modalias}== pci:v00008086d00002829sv00000000sd00000000bc01sc06i01

  ATTRS{numa_node}== -1

  ATTRS{enable}== 1

  ATTRS{broken_parity_status}== 0

  ATTRS{msi_bus}==

  looking at parent device
/devices/pci0000:00 :

  KERNELS== pci0000:00

 
SUBSYSTEMS==

  DRIVERS==

[root@test
rules.d]# vim
99-oracle-asmdevices.rules

KERNEL== sdb2 ,
SUBSYSTEM== block , ATTR{size}== 2120580 , ATTR{start}== 2120580 ,
OWNER= grid ,NAME= asmdisk-data1 ,
GROUP= asmadmin , MODE= 0660

KERNEL== sdb3 ,
SUBSYSTEM== block , ATTR{size}== 2120580 , ATTR{start}== 4241160 ,
OWNER= grid ,NAME= asmdisk-data2 ,
GROUP= asmadmin , MODE= 0660

[root@test
rules.d]# start_udev

Starting
udev: 
[  OK ]

[root@test
rules.d]# ll
/dev/asm*

brw-rw—-.
1 grid asmadmin 8, 18 Jul 20 15:57 /dev/asmdisk-data1

brw-rw—-.
1 grid asmadmin 8, 19 Jul 20 15:57 /dev/asmdisk-data2

注意:從這里可以看到通過配置 99-oracle-asmdevices.rules 文件,創建出來的是塊類型的設備
          可以對比觀察下面通過裸設備創建出來的設備類型

二、使用裸設備創建 asm 磁盤

新增加一塊磁盤,并對其進行分區;

[root@seiang2
rules.d]# fdisk /dev/sdb

Command
(m for help): n

Command
action

  e 
extended

  p 
primary partition (1-4)

e

Selected
partition 4

First
cylinder (249-652, default 249):

Using
default value 249

Last
cylinder or +size or +sizeM or +sizeK (249-652, default 652):

Using
default value 652

Command
(m for help): n

First
cylinder (249-652, default 249):

Using
default value 249

Last
cylinder or +size or +sizeM or +sizeK (249-652, default 652): +1G

Command
(m for help): n

First
cylinder (372-652, default 372):

Using
default value 372

Last
cylinder or +size or +sizeM or +sizeK (372-652, default 652): +1G

Command
(m for help): w

partition table has been altered!

Calling
ioctl() to re-read partition table.

Syncing
disks.

[root@seiang2
rules.d]# fdisk
-l

Disk
/dev/sda: 16.1 GB, 16106127360 bytes

heads, 63 sectors/track, 1958 cylinders

Units
= cylinders of 16065 * 512 = 8225280 bytes

  Device Boot  Start  End  Blocks 
Id  System

/dev/sda1  * 
 1  13  104391 
83  Linux

/dev/sda2  14  1958 
15623212+  8e  Linux LVM

Disk
/dev/sdb: 5368 MB, 5368709120 bytes

heads, 63 sectors/track, 652 cylinders

Units
= cylinders of 16065 * 512 = 8225280 bytes

  Device Boot  Start  End  Blocks 
Id  System

/dev/sdb1  1  123  987966 
83  Linux

/dev/sdb2  124  125  16065 
83  Linux

/dev/sdb3  126  248  987997+ 
83  Linux

/dev/sdb4  249  652 
3245130  5  Extended

/dev/sdb5  249  371  987966 
83  Linux

/dev/sdb6  372  494  987966 
83  Linux

配置裸設備映射,修改 /etc/udev/rules.d/60-raw.rules 文件

[root@seiang2
rules.d]# vim
60-raw.rules

ACTION== add ,
KERNEL== /dev/sdb5 , RUN+= /bin/raw /dev/raw/raw5 %N

ACTION== add ,
ENV{MAJOR}== 8 , ENV{MINOR}== 1 , RUN+= /bin/raw
/dev/raw/raw5 %M %m

ACTION== add ,
KERNEL== /dev/sdb6 , RUN+= /bin/raw /dev/raw/raw6 %N

ACTION== add ,
ENV{MAJOR}== 8 , ENV{MINOR}== 2 , RUN+= /bin/raw
/dev/raw/raw6 %M %m

ACTION== add ,
KERNEL== raw5 , OWNER= grid , GROUP= asmadmin ,
MODE= 0660

ACTION== add ,
KERNEL== raw6 , OWNER= grid , GROUP= asmadmin ,
MODE= 0660

重啟 udev 服務,并查詢 raw 

[root@seiang2
rules.d]# start_udev

Starting
udev: 
[  OK ]

[root@seiang2
rules.d]# raw
-qa

/dev/raw/raw5:  bound to major 8, minor 1

/dev/raw/raw6:  bound to major 8, minor 2

[root@seiang2
rules.d]# ll
/dev/raw*

crw——-
1 root root 162, 0 Jul 20 02:53 /dev/rawctl

/dev/raw:

total
0

crw-rw—- 1 grid
asmadmin 162, 5 Jul 20 03:31 raw5

crw-rw—- 1 grid
asmadmin 162, 6 Jul 20 03:31 raw6
注意:從這里可以看到通過配置 60-raw.rules 文件,創建出來的是字符類型的設備

這樣配置之后,裸設備文件會自動映射到相應的分區設備文件,并設置正確的用戶和組。

裸設備介紹  (來自 http://blog.itpub.net/26736162/viewspace-1401193/)

裸設備:也叫裸分區(原始分區),是一種沒有經過格式化,不被 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 下則不用。

major 和 minor device
number 

在 unix/linux 系統中,一切都是文件。所有硬盤、鍵盤等設備都用文件來代表,對應著 /dev 下面的文件。對于應用程序來說,可以像對待普通文件一樣打開,關閉、讀寫這些設備文件。但是這種文件名,比如 /dev/sda、/dev /raw/raw1 都是用戶空間名稱,OS Kernel 根本不知道這個名稱指的是什么。在內核空間是通過 major、minor device
number 來區分設備的。
major device number 可以看作是設備驅動程序,被同一設備驅動程序管理的設備有相同的 major device
number。這個數字實際是 Kernel 中 device driver
table 的索引,這個表保存著不同設備驅動程序。而 minor device
number 用來代表被訪問的具體設備。也就是說 Kernel 根據 major device
number 找到設備驅動程序,然后再從 minor device
number 獲得設備位置等屬性。所有這些 major device
number 是已經預先分配好的。比如裸設備是 162,scsi 塊設備是 8

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= , RUN+= raw /dev/raw/rawX
%N  

配置設備名稱,用你需要綁定的設備名稱替換(如:/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}… 只需要任意配置一個就可以,但有些網友經過試驗,驗證必須二者同時配置才可以。

如果有多個 raw 設備,可以寫成:
ACTION== add , KERNEL== raw[1-4] ,
OWNER= dave , GROUP= tianlesoftware , MODE= 0660  
注意:在內核 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 設備的管理  

 

使用裸設備作為 Oracle 的數據文件的注意事項  
1、一個裸設備只能放置一個數據文件
2、數據文件的大小不能超過裸設備的大小
如果是日志文件,則裸設備最大可用大小 = 裸設備對應分區大小 – 1 * 512(保留一個 redo lock)
如果是數據文件,則裸設備最大可用大小 = 裸設備對應分區大小 – 2 *
db_block_size(保留兩個 block)
為了簡單起見,對所有的文件設置稱比裸設備小 1M 即可。
3、數據文件最好不要設置稱自動擴展,如果設置稱自動擴展,一定要把 maxsize 設置設置為比裸設備小
4、linux 下 oracle 不能直接把邏輯卷作為裸設備,也要進行綁定。unix 下就不需要。

   

感謝各位的閱讀!關于“如何解決使用 udev 管理 asmdisk 執行 /sbin/scsi_id 不顯示 UUID 的問題”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-24發表,共計20221字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 桂林市| 南投县| 宝应县| 天峻县| 贺兰县| 北宁市| 建湖县| 嘉定区| 石屏县| 鹰潭市| 淄博市| 黄梅县| 沙河市| 潮安县| 靖安县| 吉林市| 治多县| 万安县| 白沙| 铜梁县| 资溪县| 凤冈县| 临邑县| 开鲁县| 永州市| 法库县| 荥阳市| 洛隆县| 邳州市| 陆河县| 蒙自县| 桓仁| 涿鹿县| 辽宁省| 芦溪县| 镇平县| 邹平县| 安泽县| 介休市| 新化县| 衡山县|