Disk I/O Issue

We have a filesystem which contains 8 hard disks but i am facing disk I/O issue becuase data is not spreading across all the disks.Is there any way i can check how data is spreading and any parameter we need to change to spread ata across all disks.

OS--AIX 5.3

What are you using to RAID your disks?
If it is an AIX provided piece of software this would have been better posted in the AIX list, if it is Veritas Volume Manager or LVM for instance or other multi platform software, then this list is as good as any.

# iostat -xd

(For Linux and AIX I believe)

Is what I would use to see what disks are in use, if this is a software RAID and the individual disks are visible to the operating system then this will show which disks are most loaded, you could run this, log the figures then do something to use the filesystem you are concerned about and see which disks are the busiest and more to the point which has the largest queue size (waiting transactions) and await time which are causing the bottle necks ups .

I am going to transfer this to the AIX group.

An AIX system is always using the AIX LVM (at least i have never seen any exception to this in 16 years of AIX experience) and there are a lot of LVM tools to tackle this problem.

bakunin

Spreading of data across several (up to 1024 depending on VG type) hdisk devices can be done by creating Logical Volumes LV with an inter policy of maximum (lslv <yourlv>). The LV's upper bound needs to go along with the number of disks you use.

In case your LV was initially set up with an inter policy of minimum you could change the LV settings with
# chlv -ex <yourlv>
followed by a reorgainisation of the LV or Volume Group VG.
# reorgvg <yourvg> <yourlv>
You need free Physical Partitions PP in you VG to be able to reorg though. Mind that reorganising LV/VG that are mirrored over several storage systems might lead to copies being spread over those storage boxes in a way that makes the LVM mirror less reliable.
(In case you don't want to use the commandline you can use the AIX System Managment Interface Tool SMIT with the command as a fastpath e.g.
# smitty chlv
to access the chlv menu. )

Two more hints on sensibly using LV

  • AIX uses its LVs in the order in which they are created. I.e. it uses the filesystems that are created in theses LVs in this order. Therefore it may make sense to create different LV on different disks. You can control where an LV is placed with the mklv command: Creating an 4PP LV on hdisk3 hdisk4 hdisk2 hdisk1 would make AIX use the LV/FS in this order. Creating LV without telling LVM where to place it would lead to all LV (with an inter policy of maximum) being created in the order hdisk1 hdisk2 hdisk3 hdisk4. Such a design leads to hdisk1 being more utilised than the other hdisks. I.e. you created a hot spot that way.
  • It makes sense to not place LV with a high I/O on the same physical disks. E.g. keep loging LV on different physical disks. Use migratepv to move LV from one disk to another (of the same VG).
    # migratepv -l <yourlv> <fromdisk> <todisk>

Mind that spreading the LV over several disks was meant originally to spread data over physical disks. In case you use SAN LUNs those virtual disks might already be placed on several real disks making the inter policy superfluous.

To hype the LVM performance to the max you would then use stripe sets on several disks but that can be done during inital FS setup only, is more difficult to maintain/update and therefore is a different cattle of fish.