今天在搭建RAC的时候,使用udev方式来创建ASM磁盘,执行/sbin/scsi_id命令不知道啥原因,死活获取不到UUID,执行结果啥也不显示。

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

没有UUID貌似没法配置udevrules文件,通过查阅相关资料,通过如下两种方式实现的,通过udevinfo(6版本操作系统udevadm取代了udevinfo)命令获取分区的信息,可以利用分区中的这2项信息SYSFS{start}=="63"和SYSFS{size}=="16771797"(6版本变为ATTR{start}=="4241160"和ATTR{size}=="2120580")来代替uuid唯一标识这个设备;

实验环境:

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

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

一、使用udevinfo/udevadm获取分区的唯一标识

新增加一块磁盘,并对它进行分区,分区之后通过udevinfo/udevadm命令来获取分区的唯一标识;

Redhat5版本

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

-rwxr-xr-x1 root root  15176 May  5  2009/sbin/udevcontrol

-rwxr-xr-x1 root root  61864 May  5  2009/sbin/udevd

-rwxr-xr-x1 root root 8×××8 May  5  2009 /sbin/udevd.static

-rwxr-xr-x1 root root  23680 May  5  2009/sbin/udevsettle

-rwxr-xr-x1 root root  24144 May  5  2009/sbin/udevtrigger

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

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

Udevinfostarts with the device specified by the devpath and then

walksup the chain of parent devices. It prints for every device

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

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

andthe 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

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

Buildinga new DOS disklabel. Changes will remain in memory only,

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

contentwon't be recoverable.

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

Command(m for help): n

Commandaction

e  extended

p  primary partition (1-4)

p

Partitionnumber (1-4): 1

Firstcylinder (1-652, default 1):

Usingdefault value 1

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

Command(m for help): n

Commandaction

e  extended

p  primary partition (1-4)

p

Partitionnumber (1-4): 2

Firstcylinder (124-652, default 124):

Usingdefault value 124

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

Command(m for help): n

Commandaction

e  extended

p  primary partition (1-4)

p

Partitionnumber (1-4): 3

Firstcylinder (126-652, default 126):

Usingdefault value 126

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

Command(m for help): p

Disk/dev/sdb: 5368 MB, 5368709120 bytes

255heads, 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

Thepartition table has been altered!

Callingioctl() to re-read partition table.

Syncingdisks.

[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

Udevinfostarts with the device specified by the devpath and then

walksup the chain of parent devices. It prints for every device

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

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

andthe 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@seiang2rules.d]#udevinfo -a -p /sys/block/sdb/sdb3/

Udevinfostarts with the device specified by the devpath and then

walksup the chain of parent devices. It prints for every device

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

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

andthe attributes from one single parent device.

lookingat 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@seiang2rules.d]# vim99-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@seiang2rules.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@seiang2rules.d]# udevcontrolreload_rules

[root@seiang2rules.d]# start_udev

Startingudev:                                            [  OK  ]

[root@seiang2rules.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@seiang2rules.d]#

Redhat6版本

[root@testrules.d]# udevadminfo -a -p /sys/block/sdb/sdb2

Udevadminfo starts with the device specified by the devpath and then

walksup the chain of parent devices. It prints for every device

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

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

andthe 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@testrules.d]# udevadminfo -a -p /sys/block/sdb/sdb3

Udevadminfo starts with the device specified by the devpath and then

walksup the chain of parent devices. It prints for every device

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

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

andthe 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@testrules.d]# vim99-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@testrules.d]# start_udev

Startingudev:                                            [  OK  ]

[root@testrules.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

二、使用裸设备创建asm磁盘

新增加一块磁盘,并对其进行分区;

[root@seiang2rules.d]# fdisk /dev/sdb

Command(m for help): n

Commandaction

e  extended

p  primary partition (1-4)

e

Selectedpartition 4

Firstcylinder (249-652, default 249):

Usingdefault value 249

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

Usingdefault value 652

Command(m for help): n

Firstcylinder (249-652, default 249):

Usingdefault value 249

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

Command(m for help): n

Firstcylinder (372-652, default 372):

Usingdefault value 372

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

Command(m for help): w

Thepartition table has been altered!

Callingioctl() to re-read partition table.

Syncingdisks.

[root@seiang2rules.d]# fdisk-l

Disk/dev/sda: 16.1 GB, 16106127360 bytes

255heads, 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

255heads, 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@seiang2rules.d]# vim60-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@seiang2rules.d]# start_udev

Startingudev:                                            [  OK  ]

[root@seiang2rules.d]#raw-qa

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

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

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

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

/dev/raw:

total0

crw-rw---- 1 gridasmadmin 162, 5 Jul 20 03:31 raw5

crw-rw---- 1 gridasmadmin 162, 6 Jul 20 03:31 raw6

裸设备:也叫裸分区(原始分区),是一种没有经过格式化,不被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 devicenumber

在unix/linux系统中,一切都是文件。所有硬盘、键盘等设备都用文件来代表,对应着/dev下面的文件。对于应用程序来说,可以像对待普通文件一样打开,关闭、读写这些设备文件。但是这种文件名,比如/dev/sda、/dev /raw/raw1都是用户空间名称,OS Kernel根本不知道这个名称指的是什么。在内核空间是通过major、minor devicenumber来区分设备的。major device number可以看作是设备驱动程序,被同一设备驱动程序管理的设备有相同的major devicenumber。这个数字实际是Kernel中device drivertable的索引,这个表保存着不同设备驱动程序。而minor devicenumber用来代表被访问的具体设备。也就是说Kernel根据major devicenumber找到设备驱动程序,然后再从minor devicenumber获得设备位置等属性。所有这些major devicenumber是已经预先分配好的。比如裸设备是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下就不需要。

相关链接:

作者:SEian.G(苦练七十二变,笑对八十一难)

ITPUB:http://blog.itpub.net/31015730/

51CTO:http://seiang.blog.51cto.com/

linux vbox 不能使用scsi_id 查看uuid,51CTO博客-专业IT技术博客创作平台-技术成就梦想...相关推荐

  1. linux vbox 不能使用scsi_id 查看uuid,使用udev管理asmdisk执行/sbin/scsi_id不显示UUID的解决方法...

    今天在搭建RAC的时候,使用udev方式来创建ASM磁盘,执行/sbin/scsi_id命令不知道啥原因,死活获取不到UUID,执行结果啥也不显示. [root@seiang2 ~]# scsi_id ...

  2. Linux查看当前http连接,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    linux下netstat命令: netstat - Print network connections, routing tables, interface statistics, masquera ...

  3. linux主节点启动nfs,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    Windows系统之间下以实现文件和目录的共享,那么在linux系统下面是否也可以实现了,我们就测试一下: 在linux下面实现目录共享的软件是nfs 要配置nfs服务首先要配置rsh服务才可以,具体 ...

  4. linux grep 快速,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    什么是grep? grep (global search regular expression(RE) and print out the line,其全称意义为全局搜索正则表达式,并打印出来.是一种 ...

  5. linux实时备份,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    rsync缺点/不足: 1.rsync在同步数据时,需要扫描所有文件后进行比对,进行差量传输.如果文件数量达到了百万甚至千万量级,扫描所有文件将是非常耗时的,并且正在发生变化的往往是其中很少的一部分, ...

  6. 荣新linux培训,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    切换用户 su - root 文件夹管理   mkdir(新建文件夹)  rmdir(删除空目录) 文件管理     touch(新建文件)  rm(删除文件)rm -rf(删除文件夹)   cat( ...

  7. linux初学文档,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    linux 里 一切皆文件 7种文件类型: 普通文件 f d 目录 b 块设备 /dev/sda /dev/sda1 /dev/sr0 c 字符设备 /dev/pts/0 /dev/ tty0 #tt ...

  8. linux a8启动过程,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    Linux系统启动流程之kernel 1.内核参数修改方法: 2.内核内核模块管理: 3.内核编译 用户空间访问.监控内核的方式:/proc, /sys 伪文件系统 /proc/sys: 此目录中的文 ...

  9. linux定时刷新命令结果,51CTO博客-专业IT技术博客创作平台-技术成就梦想

    基本指令等: 部分快捷键: ctrl+c 强制结束当前运行程序,终止命令 ctrl+d 结束当前运行程序 先按ESC然后按. 或者同时按住ALT和. 则输入上一条命令的最后一个参数,与!$相同 Ctr ...

最新文章

  1. win7环境变量设置
  2. 几万条数据的excel导入到mysql_【记录】2万多条数据的Excel表格数据导入mysql数据库...
  3. Leetcode每日一题:222.count-complete-tree-nodes(完全二叉树的节点个数)
  4. 视图 索引 存储过程
  5. scatter python_Python数据可视化之scatter( )函数
  6. Mac远程连接Linux桌面教程
  7. python小乌龟编程_Python案例——喝墨水的小乌龟
  8. 【总结】1292- 分享几个 VSCode 的高级调试与使用技巧
  9. PDF修改文字的步骤
  10. WPF基础篇 作者:IT168 静水流深 2008-01-02
  11. 微信小程序入门(一)微信小程序注册申请
  12. 淘宝网店商品哪个时间段是最佳上架时间?
  13. 【求职面试】程序员面试如何做自我介绍?
  14. PostgreSQL 的安装以及在安装过程中遇到的问题及解决方法
  15. 大学文秘专业有计算机,大学高级文秘专业描述
  16. java课程设计qq_Java课程设计(qq聊天程序)
  17. 在vue中使用canvas实现简单特效(下雨天)
  18. python图片裁剪软件_python 实现图片裁剪小工具
  19. 【解救ROS】ubuntu下安装clion(含补ding传送门)
  20. 计算机专业硕士初次认定工程师,深圳职称初次认定条件(初级、中级)

热门文章

  1. C语言研究性学习的路线之号外:一些朋友所提问题的反馈及第9章 指针
  2. 获取Google音乐的详细信息(方便对Google音乐批量下载)
  3. 使用git管理项目(一)搭建环境
  4. ubuntu桌面图标管理(以pycharm图标为例)
  5. 大学计算机软件名词解释,计算机常用工具软件的名词解释
  6. 【Unity开发小技巧】AudioManager声音管理器
  7. 谁可以告诉我在sqlhelper中Command Type 的含义,不甚感激
  8. Nature子刊 | 可应用于脑机接口的信号处理方法速度提高100倍
  9. mysql中like的用法
  10. AES,RSA,IBE三种算法的比较