ASMdisks
Intro
ASMdisks provides a way to manage Oracle ASM volumes using Linux UDEV as alternative to Oracle ASMLib.
A deeper explanation here: Fun with Linux UDEV and ASM: Using UDEV to create ASM disk volumes
You can use a combination of entire disks, partitions or mapper (including multipath) devices to configure as block devices for Oracle ASM (or other purposes such as destructive IOPS performance testing).
The asmdisks package provides some scripts of which /usr/bin/asm is the most important. It manages a file named /etc/asmtab with definitions for configuring Linux UDEV devices so you don't have to manually create the udev rules file. It also provides consistent naming based on SCSI serial IDs or device mapper configuration. By default, managed volumes appear as /dev/oracleasm/<volname> with owner "grid" and group "asmdba". In Oracle ASM, point the ASM_DISKSTRING to /dev/oracleasm to make things come to life.
asmdisks can handle raw volumes (i.e. /dev/sdi), partitions (/dev/sdi1) or mapper volumes (/dev/mapper/datavg-vol1) including Linux Multipath devices. ASMdisks now supports DellEMC Powerpath and SCINI (PowerFlex) devices.
Installation
# Install the repository
yum install https://yum.dirty-cache.com/dctools-release.rpm
# List available packages
yum --disablerepo="*" --enablerepo="dctools" list available
# Install the "asmdisks" package:
yum install asmdisks
# If you run VMware, add
disk.EnableUUID=true
# to the VMX configuration (see [http://gruffdba.wordpress.com/2012/11/06/scsi_id-on-centos-6-on-vmware-returns-null scsi_id on CentOS 6 on VMware returns null])
# and reboot
Because asmdisks is part of the Outrun Extras YUM repository on my web server, you can get updates via "yum update" as soon as I publish a new version of the package. In case this leads to problems, you can do "yum downgrade asmdisks" to go back to the previous release. The source RPM is also available from my web server if you would like to rebuild the package for your own purpose - it's licensed under GPLv3 so you're free to modify it in any way you like. If you make useful improvements I would appreciate to include these in the package (will list your name under authors if you like).
Info and manual
man asm
man asmstat
less /usr/share/doc/asmdisks/README
ASMdisks usage
If you have asmdisks installed as well as bash-completion, then you can use TAB completion. The "asm" command also responds to -? or -h options for help, or just "asm" without options. There's a man page ("man asm") as well with more detailed usage info.
TAB completion shows available commands and a list of available devices or volumes where you need them.
Showing available disks
# Show disks
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank -
/dev/sdd [1:0:1:0] 4G blank -
/dev/sde [1:0:2:0] 2G blank -
Adding disks
# Note that asm only allows creating volumes on either blank disks or with an Oracle ASM signature
asm createdisk data /dev/sdc
Updating asm rules
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank -
/dev/sde [1:0:2:0] 2G blank -
Note that TAB completion works [1]: try "asm [TAB][TAB] c [TAB] vol2 [TAB][TAB][TAB] and you will see something like this:
asm createdisk vol02 /dev/
/dev/mapper/rvg-home /dev/mapper/rvg-swap /dev/mapper/rvg-var /dev/sdd
/dev/mapper/rvg-opt /dev/mapper/rvg-tmp /dev/sdb /dev/sde
/dev/mapper/rvg-root /dev/mapper/rvg-usr /dev/sdc
Adding a few more disks:
asm createdisk temp /dev/sdd
Updating asm rules
asm createdisk redo /dev/sde
Updating asm rules
Listing volumes
asm list
Volume Device Type Size
data /dev/sdc blank 16.0
temp /dev/sdd blank 4.0
redo /dev/sde blank 2.0
Here the volume name is listed, the size, mapper name (not set here so it shows [-]), linux device name.
Showing ASMdisks volumes under Linux
The default diskstring is /dev/oracleasm so the shorthand vol1 and vol2 here actually means /dev/oracleasm/vol1 and ../vol2:
ls -al /dev/oracleasm/
total 0
drwxr-xr-x 2 root root 100 Apr 20 09:32 .
drwxr-xr-x 20 root root 3340 Apr 20 09:30 ..
lrwxrwxrwx 1 root root 6 Apr 20 09:32 data -> ../sdc
lrwxrwxrwx 1 root root 6 Apr 20 09:32 redo -> ../sde
lrwxrwxrwx 1 root root 6 Apr 20 09:32 temp -> ../sdd
Note that asmdisks also changes the owner/group/permissions of the device:
ls -al /dev/sd?
brw-rw---- 1 root disk 8, 0 Apr 20 09:34 /dev/sda
brw-rw---- 1 root disk 8, 16 Apr 20 09:34 /dev/sdb
brw-rw---- 1 grid asmdba 8, 32 Apr 20 09:34 /dev/sdc
brw-rw---- 1 grid asmdba 8, 48 Apr 20 09:34 /dev/sdd
brw-rw---- 1 grid asmdba 8, 64 Apr 20 09:34 /dev/sde
Using other disk strings
What if we want another disk string? Just enter it as a prefix to the volume name:
asm createdisk mypath/vol3 /dev/sdf
Updating asm rules
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank /dev/oracleasm/temp
/dev/sde [1:0:2:0] 2G blank /dev/oracleasm/redo
/dev/sdf [0:0:2:0] 1G blank /dev/mypath/vol3
Deleting volumes
We can remove volumes from asmdisks. Note that the disk itself does not get deleted and the data on the disk remains unchanged.
asm deletedisk mypath/vol3
Updating asm rules
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank /dev/oracleasm/temp
/dev/sde [1:0:2:0] 2G blank /dev/oracleasm/redo
/dev/sdf [0:0:2:0] 1G blank -
Renaming disks
Sometimes you just don't like a certain name for a volume. FYI, Oracle ASM couldn't care less what the linux name is of the device as long as it is accessible under ASM_DISKSTRING. But maybe you like to assign more useful names to asmdisks volumes for administrative reasons.
# List volumes, in this case they have meaningless labels vol1..vol3
asm list
Volume Device Type Size
vol1 /dev/sdc blank 16.0
vol2 /dev/sdd blank 4.0
vol3 /dev/sde blank 2.0
# Rename to more meaningful volumes
asm renamedisk vol1 data
Updating asm rules
asm renamedisk vol2 temp
Updating asm rules
asm renamedisk vol3 redo
Updating asm rules
asm list
Volume Device Type Size
data /dev/sdc blank 16.0
temp /dev/sdd blank 4.0
redo /dev/sde blank 2.0
Note that I recommend to stop Oracle ASM before renaming disks to avoid ASM errors.
Could we move a disk between paths? Sure, let's move mypath/vol3 to oracleasm/vol3:
asm renamedisk data stuff/data
Updating asm rules
asm list
Volume Device Type Size
stuff/data /dev/sdc blank 16.0
temp /dev/sdd blank 4.0
redo /dev/sde blank 2.0
ls -al /dev/stuff/
total 0
drwxr-xr-x 2 root root 60 Apr 20 11:16 .
drwxr-xr-x 21 root root 3440 Apr 20 11:16 ..
lrwxrwxrwx 1 root root 6 Apr 20 11:16 data -> ../sdc
Using disk partitions
Some people prefer to use disk partitions instead of whole disks. Make sure your disk partitions are aligned in that case (at 1 MiB here):
parted /dev/sdf mklabel gpt
Information: You may need to update /etc/fstab.
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank /dev/oracleasm/temp
/dev/sde [1:0:2:0] 2G blank /dev/oracleasm/redo
/dev/sdf [0:0:2:0] 1G gpt -
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank /dev/oracleasm/temp
/dev/sde [1:0:2:0] 2G blank /dev/oracleasm/redo
/dev/sdf [0:0:2:0] 1G gpt -
parted /dev/sdf mkpart primary 1m 100%
Information: You may need to update /etc/fstab.
asm createdisk part1 /dev/sdf1
Updating asm rules
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank /dev/oracleasm/temp
/dev/sde [1:0:2:0] 2G blank /dev/oracleasm/redo
/dev/sdf [0:0:2:0] 1G gpt -
# Note that asm does not show the volume because it's not a disk (it's a partition!)
# We can show it using 'list':
asm list
Volume Device Type Size
data /dev/sdc blank 16.0
temp /dev/sdd blank 4.0
redo /dev/sde blank 2.0
part1 /dev/sdf1 blank .9
Using LVM logical volumes as ASM devices
For small test servers you might want to test with multiple ASM volumes mapping to logical volumes in a Linux LVM:
# Create a volume group
vgcreate data /dev/sdg
Physical volume "/dev/sdg" successfully created.
Volume group "data" successfully created
# Create a 1GiB volume named vol1 on vg 'data', automatically activate upon boot
lvcreate -Ay -L1G -nvol1 data
Logical volume "vol1" created.
# List the volumes
lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
vol1 data -wi-a----- 1,00g
home rvg -wi-ao---- 512,00m
opt rvg -wi-ao---- 512,00m
root rvg -wi-ao---- 1,00g
swap rvg -wi-ao---- 8,00g
tmp rvg -wi-ao---- 512,00m
usr rvg -wi-ao---- 2,00g
var rvg -wi-ao---- 2,00g
ls -al /dev/data/
total 0
drwxr-xr-x 2 root root 60 Apr 20 09:44 .
drwxr-xr-x 22 root root 3500 Apr 20 09:44 ..
lrwxrwxrwx 1 root root 7 Apr 20 09:44 vol1 -> ../dm-7
ls -al /dev/dm-7
brw-rw---- 1 root disk 253, 7 Apr 20 09:44 /dev/dm-7
# Now we can use it as asmdisks volume:
asm createdisk lvol1 /dev/data/vol1
Updating asm rules
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [1:0:0:0] 16G blank /dev/oracleasm/data
/dev/sdd [1:0:1:0] 4G blank /dev/oracleasm/temp
/dev/sde [1:0:2:0] 2G blank /dev/oracleasm/redo
/dev/sdf [0:0:2:0] 1G gpt -
/dev/sdg [0:0:3:0] 4G lvm -
# Note that sdg shows as type "lvm" as it is now a LVM physical volume
# We can show the volume using 'list'
asm list
Volume Device Type Size
data /dev/sdc blank 16.0
temp /dev/sdd blank 4.0
redo /dev/sde blank 2.0
part1 /dev/sdf1 blank .9
lvol1 /dev/dm-7 blank 1.0
Multipath volumes
If you have device-mapper-multipath installed and configured, you can use multipathed devices. As multipath is managed by device-mapper the way to work with them is the same: just configure /dev/mapper/mpathX as device name similar to using LVM logical volumes. Output then looks like this:
# Listing disks having device-mapper-multipath aliases
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt mpathb
/dev/sdc [0:0:2:0] 1G gpt mpathg
/dev/sdd [0:0:3:0] 4G lvm mpathe
/dev/sde [0:0:5:0] 4G blank mpathc
/dev/sdf [0:0:6:0] 2G blank mpathd
/dev/sdg [1:0:0:0] 16G blank mpatha
/dev/sdh [2:0:0:0] 16G blank mpatha
# Create a multipathed volume
asm createdisk m1 /dev/mapper/mpatha
Updating asm rules
# 'disks' still shows the individual paths, not the udev volume
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 16G dos -
/dev/sdb [0:0:1:0] 20G gpt mpathb
/dev/sdc [0:0:2:0] 1G gpt mpathg
/dev/sdd [0:0:3:0] 4G lvm mpathe
/dev/sde [0:0:5:0] 4G blank mpathc
/dev/sdf [0:0:6:0] 2G blank mpathd
/dev/sdg [1:0:0:0] 16G blank mpatha
/dev/sdh [2:0:0:0] 16G blank mpatha
# Show the volume with 'list'
asm list
Volume Device Type Size
m1 /dev/dm-3 blank 16.0
Supported disk (driver) types
EMC Powerpath
EMC Powerpath is an excellent alternative for standard multipathing. Powerpath devices work like multipathed devices. Use names like /dev/emcpowera, /dev/emcpowerb and so on.
ScaleIO SCINI devices
DellEMC ScaleIO is a software defined storage layer using a driver named scini. ASMdisks supports SCINI block volumes once they are created using the ScaleIO client (sdc) software.
ASMTab file
We keep track of volume definitions in a file called /etc/asmtab. Let's see what the file looks like:
# /etc/asmtab - configuration file for asmdisks
# Definitions for IORate testing - volumes under /dev/iorate will have root:iops @ mode 0601
PATH=iorate:root:iops:0660
# PATH=oracleasm:oracle:oinstall:0660
#
# This file keeps track of udev disk mappings for asmdisk(1)
# You should normally not have to edit this file directly
# Use asm(1) instead.
#
# On each line:
#
# label type identifier
# where
# label: diskstring/volume name (default diskstring is oracleasm and can be omitted)
# type: one of scsi, part or mapper (scsi=entire SCSI disk, part=scsi disk partition, mapper=linux disk mapper device)
# label: scsi_id, scsi_id:partition, mapper_name
#
# Ownerships and permissions can be specified for a diskstring:
# PATH=diskstring:owner:group:mode
# default is oracleasm:grid:asmdba:0660
#
# example:
# vol1 scsi 36000c29f825cd85b5fcc70a1aadebf0c # entire SCSI disk
# vol2 part 36000c298afa5c31b47fe76cbd1750937:1 # partition 1 of entire SCSI disk
# vol3 mapper mpathb # /dev/mapper/mpathb (multipath device)
# iorate/test1 mapper iops-vol1 # LV vol1 on VG iops, will be mapped as /dev/iorate/test1
# -----------------------------------------------
vol2 scsi 36000c297ed46c64ae28ba422880902ca
mypath/vol3 scsi 36000c29df4ec0cef21cfcc31108708a5
vol4 scsi 36000c29997d99a762b3890fc6438cfd1:1
vol6 mapper asmdata-vol6
vol7 mapper asmdata-vol7
vol8 mapper asmdata-vol8
vol1 scsi 36000c2927d96084fab336839b9b7ca68
You see two types of entries in this file: the first is the PATH definition. Default is oracleasm:grid:asmdba:0660 if not specified differently. A definition that comes pre-set in the asmtab file is iorate:iops:0660 which helps us doing raw I/O testing on devices using another excellent EMC tool named <a title="IOrate on Google code" href="https://sites.google.com/site/vwiorate/home" target="_blank">IORate</a>. (using asmdisks this prevents us from running iorate as root and thereby risking overwriting real data).
Updating udev definitions
If you manually changed asmtab you need to re-generate the udev rules. This is done via the "asm scandisks" command.
In some cases Linux udev might leave old volume definitions behind, a reboot or manual removal (i.e. rm -f /dev/oracleasm/*
)
might be required (followed by another run of "asm scandisks" or manual udev commands.
# Manually force the system to re-read and activate the UDEV rules
udevadm control --reload-rules
udevadm trigger
Changing default user, group and modes
Some environments like to use different owners and groups than grid:asmdba. If you want to change this, say, to oracle:asmdba, you can enter this in the PATH= definition. The mode may also be changed if you so like (not recommended if you use ASM).
Example:
# We want to change the default grid:asmdba to, for example, oracle:dba
# So we add a line in /etc/asmtab:
PATH=oracleasm:oracle:dba:0660
# Now the ownership has changed:
ls -al /dev/oracleasm/
total 0
drwxr-xr-x 2 root root 60 Apr 20 10:47 .
drwxr-xr-x 21 root root 3640 Apr 20 10:47 ..
lrwxrwxrwx 1 root root 7 Apr 20 10:55 m1 -> ../dm-3
ls -al /dev/dm-3
brw-rw---- 1 oracle dba 253, 3 Apr 20 10:55 /dev/dm-3
# We also want to change the location of the disks to /dev/asm/, so we change the prefix:
PATH=asm:oracle:dba:0660
# We now also need to change the volume names as the default prefix is 'oracleasm':
asm list
Volume Device Type Size
m1 /dev/dm-3 blank 16.0
asm renamedisk m1 asm/m1
Updating asm rules
asm list
Volume Device Type Size
asm/m1 /dev/dm-3 blank 16.0
ls -al /dev/asm/m1
lrwxrwxrwx 1 root root 7 Apr 20 10:58 /dev/asm/m1 -> ../dm-3
Database cloning
If you're familiar with VMware and/or DellEMC technology, you are probably very familiar with the concept of database cloning. You can use these technologies to quickly create a cloned set of volumes, mount these on another host and bring it up as another database, use it for backups, or whatever you like.
In VMware (and usually also using disk arrays) this means that asm disks will get different scsi_id signatures. As "asmdisks" uses these signatures for persistent naming, a cloned set of disks will not be recognised. If the original devices were used by Oracle ASM, the volumes themselves will have ASM signatures written to them so in the case of ASM, we can import the volumes using the "asm import" function. The volumes will get the standard names vol01, vol02, ... etc because ASM does not care what the devs are named anyway and you're free to rename them yourself afterwards.
As illustration I removed all entries from asmtab and rebooted my host:
# Showing available disks
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 40G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [0:0:2:0] 16G asm -
/dev/sdd [0:0:4:0] 32G blank -
/dev/sde [1:0:0:0] 8G asm -
/dev/sdf [1:0:1:0] 4G asm -
/dev/sdg [1:0:2:0] 1G asm -
/dev/sdh [2:0:0:0] 64G asm -
/dev/sdi [2:0:1:0] 16G blank -
/dev/sdj [2:0:2:0] 16G asm -
/dev/sdk [2:0:3:0] 16G asm -
/dev/sdl [2:0:4:0] 4G gpt -
/dev/sdm [2:0:5:0] 1G gpt -
/dev/sdn [2:0:6:0] 1G blank -
/dev/sdo [2:0:8:0] 1G blank -
/dev/sdp [2:0:9:0] 1G blank -
/dev/sdq [2:0:11:0] 16G blank -
# You see asmdisks recognizes ASM signatures but does not know where to configure the volumes
# so on the "cloned" host ASM cannot see those volumes. Let's import the volumes:
asm import
asm: [msg] importing /dev/sdc as /dev/oracleasm/vol01
Updating asm rules
asm: [msg] importing /dev/sde as /dev/oracleasm/vol02
Updating asm rules
asm: [msg] importing /dev/sdf as /dev/oracleasm/vol03
Updating asm rules
asm: [msg] importing /dev/sdg as /dev/oracleasm/vol04
Updating asm rules
asm: [msg] importing /dev/sdh as /dev/oracleasm/vol05
Updating asm rules
asm: [msg] importing /dev/sdj as /dev/oracleasm/vol06
Updating asm rules
asm: [msg] importing /dev/sdk as /dev/oracleasm/vol07
Updating asm rules
asm disks
Device SCSI Size Type Target
/dev/sda [0:0:0:0] 40G dos -
/dev/sdb [0:0:1:0] 20G gpt -
/dev/sdc [0:0:2:0] 16G asm /dev/oracleasm/vol01
/dev/sdd [0:0:4:0] 32G blank -
/dev/sde [1:0:0:0] 8G asm /dev/oracleasm/vol02
/dev/sdf [1:0:1:0] 4G asm /dev/oracleasm/vol03
/dev/sdg [1:0:2:0] 1G asm /dev/oracleasm/vol04
/dev/sdh [2:0:0:0] 64G asm /dev/oracleasm/vol05
/dev/sdi [2:0:1:0] 16G blank -
/dev/sdj [2:0:2:0] 16G asm /dev/oracleasm/vol06
/dev/sdk [2:0:3:0] 16G asm /dev/oracleasm/vol07
/dev/sdl [2:0:4:0] 4G gpt -
/dev/sdm [2:0:5:0] 1G gpt -
/dev/sdn [2:0:6:0] 1G blank -
/dev/sdo [2:0:8:0] 1G blank -
/dev/sdp [2:0:9:0] 1G blank -
/dev/sdq [2:0:11:0] 16G blank -
# All disks that had "asm" signatures are now imported.
# They are given volXX names - feel free to rename them to more meaningful names later.
# Remark that "import" only works for full disks, not partitions or logical volumes.
# Let's see in Oracle ASM what it looks like:
# Starting a SQLPlus session as sysasm
SYS:+ASM > @ls-disks
DG Name Size Used Free Used % Type STATE Path
------------ ------------ ------------ ------------ ------------ ------ --------- -------- ------------------------------
- - 16.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol01
- - 8.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol02
- - 4.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol03
- - 1.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol04
- - 64.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol05
- - 16.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol06
- - 16.00 0.00 0.00 MEMBER NORMAL /dev/oracleasm/vol07
------------ ------------ ------------
Total GiB 125.00 0.00 0.00
7 rows selected.
@ls-diskgroups
NAME S M Size Free Used Used %
-------------------- -- -- ---------- ---------- ---------- ------
DATA N 0.00 0.00 0.00
FRA N 0.00 0.00 0.00
IOPS N 0.00 0.00 0.00
REDO N 0.00 0.00 0.00
SOE N 0.00 0.00 0.00
TEMP N 0.00 0.00 0.00
---------- ---------- ----------
Total GiB 0.00 0.00 0.00
6 rows selected.
SYS:+ASM > alter diskgroup all mount;
SYS:+ASM > @ls-diskgroups
NAME S M Size Free Used Used %
-------------------- -- -- ---------- ---------- ---------- ------
DATA Y 1 8.00 4.23 3.77 47.2
FRA Y 1 16.00 15.88 0.13 00.8
IOPS Y 1 32.00 29.84 2.16 06.8
REDO Y 1 1.00 0.31 0.69 68.8
SOE Y 1 64.00 3.86 60.14 94.0
TEMP Y 1 4.00 0.80 3.20 80.1
---------- ---------- ----------
Total GiB 125.00 54.91 70.09
6 rows selected.
Note that a restart of ASM/clusterware would usually also mount all diskgroups (preventing you to do this manually).
ASMstat
Ever used "iostat" under Linux and had issues figuring out which Linux device was mapped to what ASM device?
Because we know what's mapped here we can do some translation. "asmstat" is a small wrapper for "iostat" that filters out some irrelevant disks (like cdrom) and translates /dev/sdXX names into /dev/oracleasm/XXX names. All parameters that you give "asmstat" are forwarded to "iostat" without further modification.
Example:
iostat
Linux 2.6.32-504.el6.x86_64 (db01) 07-11-14 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
3,30 0,00 2,67 1,05 0,00 92,98
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 6,13 303,14 15,49 460918 23546
sdb 1,44 9,82 2,30 14931 3496
sdc 1,92 13,76 2,28 20928 3472
[snip]
dm-7 1,37 1,78 1,70 2710 2580
dm-8 0,40 1,40 0,09 2124 140
dm-9 4,23 221,55 13,22 336874 20096
asmstat -xm 2
Linux 2.6.32-504.el6.x86_64 (db01) 07-11-14 _x86_64_ (1 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
3,28 0,00 2,65 1,01 0,00 93,06
Device: rrqm/s wrqm/s r/s w/s rMB/s wMB/s avgrq-sz avgqu-sz await svctm %util
sda 2,40 1,42 4,62 1,26 0,14 0,01 51,76 0,01 1,38 0,73 0,43
vol01 0,07 0,00 1,11 0,29 0,00 0,00 8,39 0,01 5,04 5,01 0,70
vol02 0,08 0,00 1,56 0,29 0,01 0,00 8,35 0,01 4,05 4,03 0,75
vol03 0,06 0,00 0,91 0,29 0,00 0,00 8,42 0,01 5,59 5,57 0,67
sde 0,05 0,00 0,99 0,00 0,00 0,00 8,36 0,01 14,06 13,62 1,35
vol04 0,10 0,00 1,33 0,00 0,01 0,00 8,58 0,00 1,47 1,44 0,19
sdg 0,01 0,00 0,78 0,00 0,00 0,00 8,06 0,00 2,66 1,70 0,13
sdi 0,05 0,00 0,58 0,00 0,00 0,00 8,74 0,00 2,00 1,95 0,11
sdh 0,01 0,00 0,48 0,00 0,00 0,00 8,11 0,00 3,26 2,58 0,12
sdl 0,07 0,00 0,58 0,00 0,00 0,00 8,98 0,00 1,95 1,91 0,11
sdj 0,05 0,00 0,49 0,00 0,00 0,00 8,77 0,00 2,63 2,57 0,13
sdm 0,05 0,00 0,58 0,00 0,00 0,00 8,75 0,00 1,86 1,80 0,10
sdn 0,05 0,00 0,59 0,00 0,00 0,00 8,73 0,00 0,53 0,53 0,03
sdk 0,04 0,00 0,50 0,00 0,00 0,00 8,70 0,00 2,16 2,16 0,11
Wipedisk
Wipedisk is another small script in the asmdisks package. It backs up the first 1MiB of a block device to /tmp/ and then zeroes it out. Very handy to clear old ASM disks or even a boot disk for re-install of the OS. Because this is potentially a dangerous command (even with the data backed up before clearing) it requires the "-f" flag to become effective and there's a 5 second countdown in which you may still abort.
# wipedisk -f /dev/sdn
Backing up 1st MB of /dev/sdn in /tmp/_dev_sdn, restore with dd if=/tmp/_dev_sdn of=/dev//dev/sdn bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1,0 MB) copied, 0,0128343 s, 81,7 MB/s
Wiping 1st mb of disk /dev/sdn
5
4
3
2
1
1+0 records in
1+0 records out
1048576 bytes (1,0 MB) copied, 0,0854113 s, 12,3 MB/s
Read the wipedisk(1) man page for more info.
- ↑ Requires the "bash-completion" package to be installed