Linux – Entregar disco para Oracle ASM

O que é ASM

No Oracle 11g R2 o ASM (Automatic Storage Management), ele fica responsável pelo gerenciamento dos discos entregues para o S.O. Sendo assim ao entregar você vai entrega-los em dispositivos “crus” conhecido como Raw device.

Primeiramente os discos devem ter sido entregues ao S.O e reconhecidos a partir do fdisk

# fdisk -l | grep /dev/
Disk /dev/sda: 53.7 GB, 53687091200 bytes
/dev/sda1 * 2 201 204800 83 Linux
/dev/sda2 202 51200 52222976 8e Linux LVM
Disk /dev/sdb: 75.2 GB, 75161927680 bytes
Disk /dev/sdc: 36.7 GB, 36695965696 bytes
Disk /dev/sdd: 36.7 GB, 36695965696 bytes
Disk /dev/sde: 17.2 GB, 17196646400 bytes

Acima os discos a serem entregues são: sdb, sdc, sdd e sde.

instalar o multipathd

#yum install device-mapper-multipath.x86_64
#service multipathd start
#chkconfig multipathd on

Deve-se criar o arquivo /etc/multipath.conf com o seguinte conteúdo:

# This is a basic configuration file with some examples, for device mapper
# multipath.
# For a complete list of the default configuration values, see
# /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.defaults
# For a list of configuration options with descriptions, see
# /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf.annotated
#
# REMEMBER: After updating multipath.conf, you must run
#
# service multipathd reload
#
# for the changes to take effect in multipathd

## By default, devices with vendor = "IBM" and product = "S/390.*" are
## blacklisted. To enable mulitpathing on these devies, uncomment the
## following lines.
#blacklist_exceptions {
# device {
# vendor "IBM"
# product "S/390.*"
# }
#}

## Use user friendly names, instead of using WWIDs as names.
defaults {
 user_friendly_names yes
}
##
## Here is an example of how to configure some standard options.
##
#
#defaults {
# udev_dir /dev
# polling_interval 10
# path_selector "round-robin 0"
# path_grouping_policy multibus
# getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
# prio alua
# path_checker readsector0
# rr_min_io 100
# max_fds 8192
# rr_weight priorities
# failback immediate
# no_path_retry fail
# user_friendly_names yes
#}
##
## The wwid line in the following blacklist section is shown as an example
## of how to blacklist devices by wwid. The 2 devnode lines are the
## compiled in default blacklist. If you want to blacklist entire types
## of devices, such as all scsi devices, you should use a devnode line.
## However, if you want to blacklist specific devices, you should use
## a wwid line. Since there is no guarantee that a specific device will
## not change names on reboot (from /dev/sda to /dev/sdb for example)
## devnode lines are not recommended for blacklisting specific devices.
##
#blacklist {
# wwid 26353900f02796769
# devnode "^(ram|raw|loop|fd|md|dm-|sr|scd|st)[0-9]*"
# devnode "^hd[a-z]"
#}
#multipaths {
# multipath {
# wwid 3600508b4000156d700012000000b0000
# alias yellow
# path_grouping_policy multibus
# path_checker readsector0
# path_selector "round-robin 0"
# failback manual
# rr_weight priorities
# no_path_retry 5
# }
# multipath {
# wwid 1DEC_____321816758474
# alias red
# }
#}
#devices {
# device {
# vendor "COMPAQ "
# product "HSV110 (C)COMPAQ"
# path_grouping_policy multibus
# getuid_callout "/lib/udev/scsi_id --whitelisted --device=/dev/%n"
# path_checker readsector0
# path_selector "round-robin 0"
# hardware_handler "0"
# failback 15
# rr_weight priorities
# no_path_retry queue
# }
# device {
# vendor "COMPAQ "
# product "MSA1000 "
# path_grouping_policy multibus
# }
#}

blacklist {
}

 

Realizar restart do serviço

#service multipathd restart

Separar os WWN

Pode ser feito conforme abaixo pelo udevadm sendo necessário realizar um a um alterando o path.

# udevadm info --query=all --path=/sys/block/sdb |egrep 'SUBSYSTEM|DEVTYPE|ID_(VENDOR|MODEL|SERIAL)='
E: DEVTYPE=disk
E: SUBSYSTEM=block
E: ID_VENDOR=VMware
E: ID_MODEL=Virtual_disk
E: ID_SERIAL=15000d54687327cd123e6e12fce7201a1

ou:

# multipathd show topology|grep dm-|cut -d"(" -f2|cut -d")" -f 1
15000d54687327cd123e6e12fce7201a1
15000d54687327cd123e6e12fce7201a2
15000d54687327cd123e6e12fce7201a3
15000d54687327cd123e6e12fce7201a4

Criar arquivo asm-rules com o seguinte conteudo:

vi /etc/udev/rules.d/99-asm.rules
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}==”15000d54687327cd123e6e12fce7201a1", NAME+="oracleASM/disks/ASMa1", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}==”15000d54687327cd123e6e12fce7201a2", NAME+="oracleASM/disks/ASMa2", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}==”15000d54687327cd123e6e12fce7201a3", NAME+="oracleASM/disks/ASMa3", OWNER="oracle", GROUP="oinstall", MODE="0660"
KERNEL=="sd*", SUBSYSTEM=="block", ENV{DEVTYPE}=="disk", ENV{ID_SERIAL}==”15000d54687327cd123e6e12fce7201a4", NAME+="oracleASM/disks/ASMa4", OWNER="oracle", GROUP="oinstall", MODE="0660"

Veja que acima deve ser alterado o ENV {ID_SERIAL} e o NAME, o NAME pode ser utilizado a seu gosto para identificar os discos ao Oracle.

Obs: Cuidado com espaços entre aspas.

Criar o diretório para a montagem dos discos ASM

# mkdir -p /dev/oracleASM/disks
# chown oracle:oinstall /dev/oracleASM/disks

Recarregue as regras de udev

# udevadm trigger
# udevadm control --reload-rules

 

Se todo procedimento foi seguido corretamente será possível listar os discos dentro do caminho criado

# ls -la /dev/oracleASM/disks/
total 0
drwxr-xr-x 2 root root 160 May 18 12:13 .
drwxr-xr-x 3 root root 60 May 18 12:13 ..
brw-rw---- 1 oracle oinstall 8, 96 May 15 14:15 ASMa1
brw-rw---- 1 oracle oinstall 8, 112 May 15 14:15 ASMa2
brw-rw---- 1 oracle oinstall 8, 64 May 15 14:15 ASMa3
brw-rw---- 1 oracle oinstall 8, 80 May 15 14:15 ASMa4

Dessa forma o Oracle passa a enxergar os discos RAW.

Leave a Reply

Your email address will not be published. Required fields are marked *