SCSI 予約競合の解決
search cancel

SCSI 予約競合の解決

book

Article ID: 341072

calendar_today

Updated On:

Products

VMware vSphere ESXi

Issue/Introduction


Symptoms:
免責事項:これは英文原文の記事 「Resolving SCSI reservation conflicts (1002293)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
  • LUN にアクセスできない。
  • LUN はゾーニングされていて、正しく表示および構成されている。
  • vdf コマンドが完了しない。
  • 次のエラーが表示される。

    Failure reading partition table from device [naa.xxxxx]:I/O error



Environment

VMware ESXi 3.5.x Embedded
VMware vSphere ESXi 5.5
VMware ESXi 4.1.x Installable
VMware ESX Server 3.5.x
VMware ESXi 3.5.x Installable
VMware ESX Server 3.0.x
VMware ESXi 4.0.x Embedded
VMware ESXi 4.0.x Installable
VMware vSphere ESXi 5.0
VMware ESX 4.1.x
VMware vSphere ESXi 5.1
VMware ESXi 4.1.x Embedded
VMware ESX 4.0.x

Resolution

この記事には、以下の手順が記載されています。

:SCSI 予約の原因の詳細については、「Analyzing SCSI Reservation conflicts on VMware Infrastructure 3.x and vSphere 4.x (1005009)」を参照してください。

ESX/ESXi 4.x および 5.x

SCSI 予約競合が LUN へのアクセスを妨げているのかどうかを特定するには、次の手順を実行します。
  1. 次のコマンドを実行し、起動時に ESX ホストで LUN が検出されていることを確認します。

    # esxcfg-scsidevs -c

    出力は次のようになります。

    Device UID Device Type Console Device Size Plugin Display Name
    eui.00000e1100b81bfc Direct-Access /dev/sda 70007MB NMP Local FUJITSU Disk (eui.00000e1100b81bfc)
    mpx.vmhba0:C0:T0:L0 CD-ROM /dev/sr0 0MB NMP Local HL-DT-ST CD-ROM (mpx.vmhba0:C0:T0:L0)
    mpx.vmhba3:C0:T0:L0 Direct-Access /dev/cciss/c0d0 34727MB NMP Local VMware Disk (mpx.vmhba3:C0:T0:L0)

  2. LUN がリストにない場合は、ストレージを再スキャンします。詳細については、「Performing a rescan of the storage on an ESX/ESXi host (1003988)」を参照してください。
  3. SCSI 予約競合エラーの兆候がないかどうか、システム ログを確認します。LUN に問題があることを示す行を探します。

    ESX 4.x: # cat /var/log/dmesg
    ESXi 4.x: # cat /var/log/messages
    ESXi 5.x: # cat /var/log/vmkernel.log

    Vendor:EMC Model:SYMMETRIX Rev:5771
    Type:Direct-Access ANSI SCSI revision:03
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    sdh :READ CAPACITY failed.
    status = c, message = 00, host = 0, driver = 00
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    VMWARE:Device that would have been attached as scsi disk sdh at scsi0,
    channel 0, id 0, lun 52
    Has not been attached because this path could not complete a READ
    command eventhough a TUR worked.
    result = 0x18 key = 0x0, asc = 0x0, ascq = 0x0
    VMWARE:Device that would have been attached as scsi disk sdh at scsi0,
    channel 0, id 0, lun 52
    Has not been attached because it is a duplicate path or on a passive
    path
    scan_scsis starting finish
    scan_scsis done with finish

    :この例で、LUN 52 はホスト クラスタでアクセスできなくなっています。これは手順 1 の出力のリストにあるため、ある時点においてはアクセスできる状態でした(おそらく、予約操作の途中の SAN スイッチ再起動が原因で、ホストが LUN を予約して解放しませんでした)。
これを解決するには、次の手順を実行します。
  1. 次のコマンドを実行し、すべてのホストを調べます(保留となっている予約があるホストにも適用します)。

    # esxcfg-info | egrep -B5 "s Reserved|Pending"

    出力は次のようになります。

    :出力がすべて示されているわけではありません。

    ----Console Device....................../dev/sdd
    |----DevfsPath........................../vmfs/devices/disks/vml.
    02000000006001c230d8abfe000ff76c51486715db504552432035
    |----SCSI Level..........................6
    |----Queue Depth.........................128
    |----Is Pseudo...........................false
    |----Is Reserved.........................false
    |----Pending Reservations................0
    --
    |----Console Device....................../dev/sda
    |----DevfsPath........................../vmfs/devices/disks/vml.
    02000000006001c230d8abfe000ff76c198ddbc13e504552432035
    |----SCSI Level..........................6
    |----Queue Depth.........................128
    |----Is Pseudo...........................false
    |----Is Reserved.........................false
    |----Pending Reservations................1

    :0 よりも大きい値を持つ保留中の予約があるホストは、ロックし続けています。

  2. 次のコマンドを実行し、LUN のリセットを実行して、ロックをクリアします。

    # vmkfstools --lock lunreset /vmfs/devices/disks/vml.02000000006001c230d8abfe000ff76c198ddbc13e504552432035

  3. 次のコマンドを実行し、LUN に保留中の予約がなくなったことを確認します。

    # esxcfg-info -s | egrep -B16 "s Reserved|Pending"

    :保留中の予約が 0 でないか、予約済みが false でない場合、LUN のリセットは成功しませんでした。

  4. 各 ESXi/ESX ホストでストレージ ウィンドウの更新を実行してください。
  5. データストアがマウントされていない場合は、再スキャンを実行します。詳細については、「Performing a rescan of the storage on an ESX/ESXi host (1003988)」を参照してください。
:LUN をリセットするときは、LUN 上の仮想マシンでサービスの中断がないようにします。

ESX/ESXi 3.5.x

SCSI 予約競合が LUN へのアクセスを妨げているのかどうかを特定するには、次の手順を実行します。
  1. 次のコマンドを実行し、起動時にホストで LUN が検出されていることを確認します。

    # cd /vmfs/devices/disks
    # ls vmh*

    出力は次のようになります。

    vmhba0:0:0:0
    vmhba0:0:43:0
    vmhba0:0:52:0

  2. LUN がリストにない場合は、ストレージを再スキャンします。詳細については、「Performing a rescan of the storage on an ESX/ESXi host (1003988)」を参照してください。
  3. dmesg を確認します。LUN に問題があることを示す可能性のある行を探します。

    # cd /var/log
    # cat dmesg

    Vendor:EMC Model:SYMMETRIX Rev:5771
    Type:Direct-Access ANSI SCSI revision:03
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    sdh :READ CAPACITY failed.
    status = c, message = 00, host = 0, driver = 00
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    VMWARE:Device that would have been attached as scsi disk sdh at scsi0,
    channel 0, id 0, lun 52
    Has not been attached because this path could not complete a READ
    command eventhough a TUR worked.
    result = 0x18 key = 0x0, asc = 0x0, ascq = 0x0
    VMWARE:Device that would have been attached as scsi disk sdh at scsi0,
    channel 0, id 0, lun 52
    Has not been attached because it is a duplicate path or on a passive
    path
    scan_scsis starting finish
    scan_scsis done with finish

    :この例で、LUN 52 はホスト クラスタでアクセスできなくなっています。これは手順 1 の出力のリストにあるため、ある時点においてはアクセスできる状態でした(おそらく、予約操作の途中の SAN スイッチ再起動が原因で、ホストが LUN を予約して解放しませんでした)。
これを解決するには、次の手順を実行します。
  1. 次のコマンドを実行し、すべてのホストを調べます(保留となっている予約があるホストにも適用します)。

    # esxcfg-info | egrep -B5 "s Reserved|Pending"

    出力は次のようになります。

    :出力がすべて示されているわけではありません。

    |----Console Device....................../dev/sdd
    |----DevfsPath........................../vmfs/devices/disks/vml.
    02000000006001c230d8abfe000ff76c51486715db504552432035
    |----SCSI Level..........................6
    |----Queue Depth.........................128
    |----Is Pseudo...........................false
    |----Is Reserved.........................false
    |----Pending Reservations................0
    --
    |----Console Device....................../dev/sda
    |----DevfsPath........................../vmfs/devices/disks/vml.
    02000000006001c230d8abfe000ff76c198ddbc13e504552432035
    |----SCSI Level..........................6
    |----Queue Depth.........................128
    |----Is Pseudo...........................false
    |----Is Reserved.........................false
    |----Pending Reservations................1

    :0 よりも大きい値を持つ保留中の予約があるホストは、ロックし続けています。

  2. 次のコマンドを実行し、LUN のリセットを実行して、ロックをクリアします。

    # vmkfstools --lock lunreset /vmfs/devices/disks/vml.02000000006001c230d8abfe000ff76c198ddbc13e504552432035

  3. 次のコマンドを実行し、LUN に保留中の予約がなくなったことを確認します。

    # esxcfg-info -s | egrep -B5 "s Reserved|Pending"

    :保留中の予約が 0 でないか、予約済みが false でない場合、LUN のリセットは成功しませんでした。

  4. 各 ESXi/ESX ホストでストレージ ウィンドウの更新を実行してください。
  5. データストアがマウントされていない場合は、再スキャンを実行します。詳細については、「Performing a rescan of the storage on an ESX/ESXi host (1003988)」を参照してください。

ESX 3.0.x

SCSI 予約競合が LUN へのアクセスを妨げているのかどうかを特定するには、次の手順を実行します。
  1. 次のコマンドを実行し、起動時に ESX ホストで LUN が検出されていることを確認します。

    # cd /vmfs/devices/disks
    # ls vmh*


    出力は次のようになります。

    vmhba0:0:0:0
    vmhba0:0:43:0
    vmhba0:0:52:0


  2. LUN がリストにない場合は、ストレージを再スキャンします。詳細については、「Performing a rescan of the storage on an ESX/ESXi host (1003988)」を参照してください。
  3. dmesg を確認します。LUN に問題があることを示す可能性のある行を探します。

    # cd /var/log
    # cat dmesg

    Vendor:EMC Model:SYMMETRIX Rev:5771
    Type:Direct-Access ANSI SCSI revision:03
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    sdh :READ CAPACITY failed.
    status = c, message = 00, host = 0, driver = 00
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    scsi0 (0,0,52) :RESERVATION CONFLICT
    VMWARE:Device that would have been attached as scsi disk sdh at scsi0,
    channel 0, id 0, lun 52
    Has not been attached because this path could not complete a READ
    command eventhough a TUR worked.
    result = 0x18 key = 0x0, asc = 0x0, ascq = 0x0
    VMWARE:Device that would have been attached as scsi disk sdh at scsi0,
    channel 0, id 0, lun 52
    Has not been attached because it is a duplicate path or on a passive
    path
    scan_scsis starting finish
    scan_scsis done with finish

    :この例で、LUN 52 は ESX ホスト クラスタでアクセスできなくなっています。これは手順 1 の出力のリストにあるため、ある時点においてはアクセスできる状態でした(おそらく、予約操作の途中の SAN スイッチ再起動が原因で、ホストが LUN を予約して解放しませんでした)。
これを解決するには、次の手順を実行します。
  1. 次のコマンドを実行し、保留中の予約がないかどうか、すべてのホストを調べます。

    # tail -1 /proc/vmware/scsi/vmhba[0-9]/[0-9]:*

    出力は次のようになります。

    ==> /proc/vmware/scsi/vmhba0/0:0 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba0/0:43 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba0/0:44 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba0/0:45 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba0/0:46 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba1/0:50 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba1/0:51 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba1/0:52 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:1

    ==> /proc/vmware/scsi/vmhba1/0:53 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba1/0:54 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    ==> /proc/vmware/scsi/vmhba2/0:0 <==
    Active:0 Queued:0 Reserved:N Pending Reserves:0

    :0 よりも大きい値を持つ保留中の予約があるホストは、ロックし続けています。

  2. 次のコマンドを実行し、LUN のリセットを実行して、ロックをクリアします。

    # vmkfstools --lock lunreset /vmfs/devices/disks/vmhba1\:0\:52\:0

  3. 次のコマンドを実行し、LUN に保留中の予約がなくなったことを確認します。

    # tail -1 /proc/vmware/scsi/vmhba1/0\:52

    出力は次のようになります。

    Active:0 Queued:0 Reserved:N Pending Reserves:0

    :保留中の予約が 0 でないか、予約済みが false でない場合、LUN のリセットは成功しませんでした。

  4. 各 ESXi/ESX ホストでストレージ ウィンドウの更新を実行してください。
  5. データストアがマウントされていない場合は、再スキャンを実行します。詳細については、「Performing a rescan of the storage on an ESX/ESXi host (1003988)」を参照してください。


Additional Information

Resolving SCSI reservation conflicts