Translated message

A translation of this page exists in English.

マウントしていないディスクに、/proc/diskstats および iostat コマンドからはディスクに実行中の IO があるのはなぜですか?

Solution Unverified - Updated -

Environment

  • Red Hat Enterprise Linux 4.6

Issue

  • /proc/diskstats に、マウントしていないデバイスへの未処理の IO が表示されます。

8 32 sdc 562126 445 67809663 1918357 4902068 0 39216544 4214925992 451 1583514511 2995158897
1 2 3 4 5 6 7 8 9 10 11

  • 上述のフィールド #9 は、デバイスへの現在進行中の IO の数です。したがってここでの 451 の IO は、このデバイスへの未処理の状態です。

  • iostat は、ディスクに対して完了する読み込み IO を示します。

Resolution

原因の可能性はいくつかありますが、最も一般的なものはファイルシステムの署名スキャナーです。

queued コマンドは、メタデータのデバイスをスキャンしようとする lvm の結果になる場合があります。sosreport から、このデバイスとその他のデバイスをスキャンするには、lvm フィルターが現在設定されています。

/etc/lvm/lvm.conf:

    # By default we accept every block device:

    filter = [ "a/sda[1-9]$/" "a/sdb[1-9]$/" "a/sdc[1-9]$/" "a/sdd[1-9]$/" "a/emcpower.*/" "r/.*/" ]

sosreport の pvs の出力によると、/dev/sdN デバイスはいずれも物理ボリュームではないことが分かります。したがって、上述のフィルターでスキャンリストから削除しても問題はありません。

  PV              VG        Fmt  Attr PSize   PFree DevSize PV UUID                              
  /dev/emcpowera1               --        0      0   20.00G
  /dev/emcpowerb  prod5vg  lvm2 a-     5.00G    0    5.00G dpWmjp-ByB9-vwHK-oHxb-X0XR-2dQ5-jEVcUK
  /dev/emcpowerc  prod6vg  lvm2 a-     5.00G    0    5.00G HU6UrH-SyRH-2vDm-6Chl-Ucoj-yPMF-KkYI5m
  /dev/emcpowerd  prod3vg  lvm2 a-   268.00G    0  268.00G pgzPN6-QeSB-EgbY-rwBn-mkO6-Ylhc-pIzP7D
  /dev/emcpowere  orabinvg lvm2 a-   100.00G    0  100.00G Qw2C1G-Lnvq-vR5P-hOAK-x3zD-bRTx-qKE3R6
  /dev/emcpowerf  homevg    lvm2 a-   50.00G    0   50.00G cp5gHm-R1wp-ebQ9-q0I7-2J2k-tFLS-jhfPcm
  /dev/emcpowerg  archvg   lvm2 a-   200.00G    0  200.00G gkcrxe-U1FI-K2aH-ZMfn-O9g0-Lnz2-9tBigx
  /dev/emcpowerh  prod1vg  lvm2 a-   400.00G    0  400.00G yhz2Ee-ZveX-zbsr-v2FO-YoL0-3Ng4-5BtRDA
  /dev/emcpoweri  prod2vg  lvm2 a-   400.00G    0  400.00G foVt7i-c4Qp-F06K-H751-y32f-kdaV-JSUlc7
  /dev/emcpowerj  prod4vg  lvm2 a-     5.00G    0    5.00G PoA275-Z4GS-c8wj-pDxf-vO6J-ssYN-jDji5X
  /dev/sda1                      --        0     0  101.94M 
  /dev/sda2                      --        0     0    64.22G
  /dev/sda3                      --        0     0    1.95G
  /dev/sdb1                      --        0     0   18.64G
  /dev/sdb5                      --        0     0  117.98G
  /dev/sdc1                      --        0     0  409.86G

lvm フィルターが問題のデバイスに IO を発行しないように lvm フィルターを変更することができます。

/etc/lvm/lvm.conf:

    # By default we accept every block device:

    filter = [ "a/emcpower.*/" "r/.*/" ]

これはすべての emcpower デバイスを許可しますが、sda、sdb、および sdc を含むその他のすべてのブロックデバイスを拒否 (除外) します。

lvm.conf に上述の変更を行ったら、変更を有効にするためにいくつかの手順を行う必要があります。

1. lvm キャッシュを削除します。

# rm -f /etc/lvm/cache/.cache

2. キャッシュファイルを再生成します。

# pvscan
# lvscan
# vgscan

上述のコマンドを実行すると正しく動作することを確認します。つまり、pvscan は /dev/emcpowerX などのデバイスを出力し、iostat または /proc/diskstats はデバイスに IO を送りません。

3. 最後に、たとえば、この新しい lvm.conf が含まれるように initrd イメージファイルを再構築します。

# cp /boot/initrd-2.6.9-67.0.7.ELhugemem.img /boot/initrd-2.6.9-67.0.7.ELhugemem.img.BAK
# mkinitrd -v -f /boot/initrd-2.6.9-67.0.7.ELhugemem.img 2.6.9-67.0.7.ELhugemem

Root Cause

LVM は、許可されているデバイスに IO を発行し、オンディスク PV 情報に対してスキャンします。

Diagnostic Steps

lvm が、デバイスへの IO の原因または唯一の原因ではない場合に、マウントしていないデバイスに IO を発行しているプログラムを特定するのにシステムタップのスクリプトが必要になる場合があります。

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments