使用udev管理asmdisk執行/sbin/scsi_id不顯示UUID的解決方法
今天在搭建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.
A rule to match, can be composed by the attributes of the device
and 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
255 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
The 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.
A rule to match, can be composed by the attributes of the device
and 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.
A rule to match, can be composed by the attributes of the device
and 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.
A rule to match, can be composed by the attributes of the device
and 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.
A rule to match, can be composed by the attributes of the device
and 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
The 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
255 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
255 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下就不需要。
相關連結:
http://blog.itpub.net/14184018/viewspace-701675/
http://blog.itpub.net/14184018/viewspace-1364944/
作者:SEian.G(苦練七十二變,笑對八十一難)
ITPUB:http://blog.itpub.net/31015730/
51CTO:http://seiang.blog.51cto.com/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31015730/viewspace-2142370/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用udev管理asmdisk執行/sbin/scsi_id不顯示UUIDdevASMUI
- 使用udev管理asmdisk常用的命令devASM
- 利用UDEV管理配置ASMDISKdevASM
- 電腦顯示不了行動硬碟如何解決?行動硬碟插上不顯示解決方法硬碟
- MacOS 不顯示 SD 卡的 bug 解決方法Mac
- ie9不顯示flash的解決方法IE9
- Word下劃線不顯示解決方法
- 解決Win7 軟體圖示不顯示--Win7圖示異常,快捷方式不顯示解決方法Win7
- win10裝置管理器中不顯示藍芽的解決方法Win10藍芽
- 執行Java,不顯示控制檯Java
- 電腦顯示器不亮是什麼原因 電腦顯示器不亮的解決方法
- linux下shell顯示-bash-4.1#不顯示路徑解決方法Linux
- 行動硬碟不顯示怎麼辦? 行動硬碟不顯示磁碟機代號的解決辦法硬碟
- win10 桌面圖示不顯示名字如何解決_win10桌面圖示不顯示名稱解決方法Win10
- VMware 中使用 scsi_id 查詢磁碟UUIDUI
- 解決MySQL中文亂碼和插入中文不顯示的方法MySql
- windows10照片大圖示不顯示怎麼辦_win10系統不顯示圖示的解決方法WindowsWin10
- Windows 10 安裝SVN 不顯示狀態圖示--解決方法Windows
- TortoiseGit資料夾和檔案圖示不顯示解決方法Git
- Orace RAC安裝-Oracle Linux 5和6 ASM的UDEV SCSI規則配置-識別磁碟(/sbin/scsi_id)OracleLinuxASMdev
- Win10系統右鍵選單隻顯示圖示不顯示文字的解決方法Win10
- Win10系統中日曆不顯示事件的解決方法Win10事件
- Win10系統pdf縮圖不顯示的解決方法Win10
- Oracle中JOB的建立後不執行解決方法Oracle
- vmware不顯示usb圖示解決辦法
- 電腦顯示器黑屏 顯示器不亮的解決辦法
- 三種方法教你解決輸入法不顯示問題
- Windows10系統下工作列圖示名稱不顯示的解決方法Windows
- secureCRT顯示亂碼解決方法Securecrt
- /bin、/sbin、/usr/bin、/usr/sbin、/usr/local/sbin放置可執行檔案的區別
- win10系統資源管理器不顯示gpu狀態的最佳解決方法Win10GPU
- windows10系統工作列不顯示執行中程式圖示如何解決Windows
- windows10系統開機後顯示器不亮的解決方法Windows
- win10系統下工作列不顯示縮圖的解決方法Win10
- 微信小程式 iOS 中部分機型不顯示 iconfont 的解決方法微信小程式iOS
- 帝國CMS後臺登陸驗證碼不顯示的解決方法
- DELL電腦不顯示硬碟的解決辦法硬碟
- Picasa相簿圖片不顯示的解決辦法