
[ Installing ASMLib ]

This document describes the steps required to install the Linux specific
ASM library and its assocated driver.  This library is provide to enable
ASM I/O to Linux disks without the limitations of the standard Unix I/O
API.  The steps below are steps that the system administrator must
follow.

[ Locating the ASMLib Packages ]

The ASMLib software is available from the Oracle Technology Network.
Go to http://otn.oracle.com/tech/linux/asmlib/ and follow the link for
your platform.

You will see 4-6 packages for your Linux platform.  The oracleasmlib
package provides the actual ASM library.  The oracleasm-support
package provides the utilities used to get the ASM driver up and
running.  Both of these packages need to be installed.

The remaining packages provide the kernel driver for the ASM library.
Each package provides the driver for a different kernel.  You must
install the appropriate package for the kernel you are running.  For
example, if you were running Red Hat Advanced Server 2.1, and the kernel
you were using was the 2.4.9-e.27enterprise kernel, you would choose the
oracleasm-2.4.9-e-enterprise package.  So, to installing these packages
on Red Hat Advanced Server 2.1 on an Intel x86 machine, you might use
the command:

	rpm -Uvh oracleasm-support-1.0.0-1.i386.rpm oracleasm-lib-1.0.0-1.i386.rpm oracleasm-2.4.9-e-enterprise-1.0.0-1.i686.rpm

If you were on a different machine, the package names would be slightly
different, replacing 'i686' with the appropriate architecture.  Use the
package names relevant for your distribution.

Once the command completes, ASMLib is now installed on the system.

[ Configuring ASMLib ]

Now that the ASMLib software is installed, a few steps have to be taken
by the system administrator to make the ASM driver available.  The
ASM driver needs to be loaded, and the driver filesystem needs to be
mounted.  This is taken care of by the initialization script,
/etc/init.d/oracleasm.

Run the /etc/init.d/oracleasm script with the 'configure' option.  It
will ask for the user and group that default to owning the ASM
driver access point.  If the database was running as the 'oracle' user
and the 'dba' group, the output would look like this:

	[root@ca-test1 /]# /etc/init.d/oracleasm configure
	Configuring the Oracle ASM library driver.
 
	This will configure the on-boot properties of the Oracle ASM library
	driver.  The following questions will determine whether the driver is
	loaded on boot and what permissions it will have.  The current values
	will be shown in brackets ('[]').  Hitting <ENTER> without typing an
	answer will keep that current value.  Ctrl-C will abort.

	Default user to own the driver interface []: oracle
	Default group to own the driver interface []: dba
	Start Oracle ASM library driver on boot (y/n) [n]: y
	Fix permissions of Oracle ASM disks on boot (y/n) [y]: y
	Writing Oracle ASM library driver configuration            [  OK  ]
	Creating /dev/oracleasm mount point                        [  OK  ]
	Loading module "oracleasm"                                 [  OK  ]
	Mounting ASMlib driver filesystem                          [  OK  ]
	Scanning system for ASM disks                              [  OK  ]


This should load the oracleasm.o driver module and mount the ASM driver
filesystem.  By selecting enabled = 'y' during the configuration, the
system will always load the module and mount the filesystem on boot.

The automatic start can be enabled or disabled with the 'enable' and
'disable' options to /etc/init.d/oracleasm:

	[root@ca-test1 /]# /etc/init.d/oracleasm disable
	Writing Oracle ASM library driver configuration            [  OK  ]
	Unmounting ASMlib driver filesystem                        [  OK  ]
	Unloading module "oracleasm"                               [  OK  ]

	[root@ca-test1 /]# /etc/init.d/oracleasm enable
	Writing Oracle ASM library driver configuration            [  OK  ]
	Loading module "oracleasm"                                 [  OK  ]
	Mounting ASMlib driver filesystem                          [  OK  ]
	Scanning system for ASM disks                              [  OK  ]


[ Making Disks Available to ASMLib ]

The system administrator has one last task.  Every disk that ASMLib is
going to be accessing needs to be made available.  This is accomplished
by creating an ASM disk.  The /etc/init.d/oracleasm script is again
used for this task:

	[root@ca-test1 /]# /etc/init.d/oracleasm createdisk VOL1 /dev/sdg
	Creating Oracle ASM disk "VOL1"                            [  OK  ]

Disk names are ASCII capital letters, numbers, and underscores.  They
must start with a letter.

Disks that are no longer used by ASM can be unmarked as well:

	[root@ca-test1 /]# /etc/init.d/oracleasm deletedisk VOL1
	Deleting Oracle ASM disk "VOL1"                            [  OK  ]

Any operating system disk can be queried to see if it is used by ASM:

	[root@ca-test1 /]# /etc/init.d/oracleasm querydisk /dev/sdg
	Checking if device "/dev/sdg" is an Oracle ASM disk        [  OK  ]
	[root@ca-test1 /]# /etc/init.d/oracleasm querydisk /dev/sdh
	Checking if device "/dev/sdh" is an Oracle ASM disk        [FAILED]

Existing disks can be listed and queried:

	[root@ca-test1 /]# /etc/init.d/oracleasm listdisks
	VOL1
	VOL2
	VOL3
	[root@ca-test1 /]# /etc/init.d/oracleasm querydisk VOL1
	Checking for ASM disk "VOL1"                               [  OK  ]

When a disk is added to a RAC setup, the other nodes need to be notified
about it.  Run the 'createdisk' command on one node, and then run
'scandisks' on every other node:

	[root@ca-test1 /]# /etc/init.d/oracleasm scandisks
	Scanning system for ASM disks                              [  OK  ]


[ Discovery Strings for Linux ASMLib ]

ASMLib uses discovery strings to determine what disks ASM is asking for.
The generic Linux ASMLib uses glob strings.  The string must be prefixed
with "ORCL:".  Disks are specified by name.  A disk created with the
name "VOL1" can be discovered in ASM via the discovery string
"ORCL:VOL1".  Similarly, all disks that start with the string "VOL" can
be queried with the discovery string "ORCL:VOL*".

Disks cannot be discovered with path names in the discovery string.  If
the prefix is missing, the generic Linux ASMLib will ignore the
discovery string completely, expecting that it is intended for a
different ASMLib.  The only exception is the empty string (""), which is
considered a full wildcard.  This is precisely equivalent to the
discovery string "ORCL:*".

