Go to main content

SPARC T8 シリーズサーバープロダクトノート

印刷ビューの終了

更新: 2017 年 11 月
 
 

iSCSI ターゲットの速度が遅いために iSCSI ブートでパニック vfs_mountroot: cannot mount root が発生する (26178433)

この問題は、3 つのすべてのサーバーに影響します。

サーバーが Ethernet または InfiniBand ネットワーク経由で iSCSI 論理ユニット (LUN) からブートするように構成されている場合、関数 vfs_mountroot でオペレーティングシステムのパニックが発生することがあります。


注 -  Oracle Solaris 11.3 SRU 24 が動作している SPARC M8-8 サーバー、および Oracle Solaris 11.3 SRU19 - SRU 24 が動作している SPARC M7 サーバーでこの vfs_mountroot パニックが発生することがあります。

vfs_mountroot パニックが発生した場合は、システムコンソールに次のような出力が表示されます。

{0} ok boot net
Boot device: /pci@300/pci@1/network@0  File and args:
1000 Mbps full duplex Link up
1000 Mbps full duplex Link up
1000 Mbps full duplex Link up
SunOS Release 5.11 Version 11.3 64-bit
Copyright (c) 1983, 2016, Oracle and/or its affiliates. All rights reserved.
NOTICE: Configuring iSCSI boot session...
NOTICE: iscsi connection(5) unable to connect to target iqn.1986-03.com.sun:02:118cb23b-920f-49ef-b7a1-b00767a60dfa, target address 192.168.1.1
NOTICE: iscsi connection(5) unable to connect to target iqn.1986-03.com.sun:02:118cb23b-920f-49ef-b7a1-b00767a60dfa, target address 192.168.1.1
WARNING: Failed to configure iSCSI boot session
WARNING: Failed to get iscsi boot path

panic[cpu0]/thread=20012000: vfs_mountroot: cannot mount root

この vfs_mountroot パニックはほとんどの場合、ブートプロセス中に発生します。ただし、システムが iSCSI 論理ユニットからすでにブートしていて、iSCSI 論理ユニットが一時的に使用不可になっている場合にも同様の問題が発生することがあります。たとえば、一時的なネットワークの輻輳またはネットワークのフェイルオーバーの結果として iSCSI 論理ユニットが使用不可になる可能性があります。

回避方法

このような vfs_mountroot パニックの問題は通常、iSCSI ターゲットデバイスまたはネットワーク接続の速度が遅いために発生します。ただし、Solaris 11.3 SRU 24 ではその iSCSI イニシエータのカーネルモジュールでのタイムラグのため、この問題が発生しやすくなります。iSCSI ターゲットデバイスまたはネットワークの速度が遅い場合は、次のいずれかの回避方法を使用してサーバーのブートを試みます。

サーバー構成に合った適切な回避方法を決定します。

インストール済みのブート環境に回避方法を適用する

SPARC T8 および SPARC M8 サーバーでサポートされている最小の Oracle Solaris OS 11.3 は Oracle Solaris 11.3 SRU 24 です。これらのサーバーに、以前のバージョンの Oracle Solaris 11.3 のブート環境が含まれることはありません。インストール済みのブート環境に回避方法を適用するには、次のステップに従います。

  1. Oracle Solaris 11.3 のインストール DVD からブートします。

    boot コマンドで –s オプションを使用します。そうしない場合は、インストールプログラムを終了する必要があります。

    {0} ok boot rcdrom -s
  2. サーバーがブートされたら、ネットワークインタフェースを構成し、サーバーが iSCSI ターゲットの IP アドレスにアクセスできることを確認します。

    # ping 192.168.1.1
    192.168.1.1 is alive
  3. iSCSI ブートに使用された iSCSI ターゲットの検出アドレスを指定することによって、iSCSI SendTargets 検出方法を構成します。

    # iscsiadm add discovery-address 192.168.1.1
    # iscsiadm modify discovery -t enable
  4. format コマンドの出力に iSCSI ブートの論理ユニットが表示されることを確認します。

    # format
    1. c0t5000CCA02D104088d0 <HGST-H101812SFSUN1.2T-A770-1.09TB>
      /scsi_vhci/disk@g5000cca02d104088
      /dev/chassis/SYS/DBP/HDD0/disk
    2. c0t5000CCA02D1032D8d0 <HGST-H101812SFSUN1.2T-A770-1.09TB>  solaris
      /scsi_vhci/disk@g5000cca02d1032d8
      /dev/chassis/SYS/DBP/HDD1/disk
    3. c0t5000CCA02D102FF8d0 <SUN1.2T cyl 48638 alt 2 hd 255 sec 189>
      /scsi_vhci/disk@g5000cca02d102ff8
      /dev/chassis/SYS/DBP/HDD2/disk
    4. c0t5000CCA02D103B20d0 <HGST-H101812SFSUN1.2T-A770-1.09TB>  solaris
      /scsi_vhci/disk@g5000cca02d103b20
      /dev/chassis/SYS/DBP/HDD3/disk
    5. c0t60000000000000000000000000009999d0 <SUN-COMSTAR-1.0-60.00GB>
      /scsi_vhci/ssd@g60000000000000000000000000009999
    Specify disk (enter its number): 5  
    selecting c0t60000000000000000000000000009999d0
    [disk formatted]
  5. ルートプールをインポートし、代替マウントポイントを指定します。

    # zpool import -R /a -d /dev/dsk/c0t60000000000000000000000000009999d0s0 rpool
  6. iscsi-rpool が正常にインポートされていることを確認します。

    # zpool list
    NAME    SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
    rpool  59.5G  48.9G  10.6G  82%  1.00x  ONLINE  /a
  7. インポートされた rpool のブート環境を表示します。

    # beadm list
    be_find_current_be: failed to find current BE name
    be_find_current_be: failed to find current BE name
    BE            Flags Mountpoint Space  Policy Created          
    --            ----- ---------- -----  ------ -------          
    S11.3-SRU18.6 -     -          32.82M static 2027-07-03 13:57 
    S11.3-SRU22.3 R     -          6.42G  static 2027-07-03 14:03 
    solaris       -     -          99.75M static 2027-07-03 13:40
  8. 一時マウントポイントを作成し、選択されたブート環境をマウントします。

    # mkdir /a/mnt
    # zfs mount -o mountpoint=/a/mnt/ rpool/ROOT/S11.3-SRU22.3
  9. 回避方法を適用します。

    # echo "set iscsi:iscsi_conn_first_login_max=20" >> /a/mnt/etc/system
    # echo "set iscsi:iscsi_conn_first_interval_max=10" >> /a/mnt/etc/system
  10. 次回リブート時に回避方法がアクティブ化されるように、マウントしたブート環境内のブートアーカイブを更新します。

    # bootadm update-archive -v -R /a/mnt
  11. システムをリブートして、iSCSI ブートデバイスからブートします。

    # shutdown -y -i0 -g0
    {0} ok boot net

Oracle Solaris OS の新規インストールに回避方法を適用する

新しくインストールしたブート環境に回避方法を適用するには、次のステップに従います。

  1. システムをリブートする直前までインストールを繰り返し、インストールプログラムを終了します。

                              Installation Complete
    The installation of Oracle Solaris has completed successfully.
    
    Reboot to start the newly installed software or Quit if you wish to
    perform additional tasks before rebooting.
    
    The installation log is available at /system/volatile/install_log. After
    reboot it can be found at /var/log/install/install_log.
    
    Esc-4_View Log Esc-7_Halt Esc-8_Reboot Esc-9_Quit
  2. Esc-9 キーシーケンスを押してインストールプログラムを終了してから、3 を押してシェルを入力します。

    Welcome to the Oracle Solaris installation menu 
         1  Install Oracle Solaris
         2  Install Additional Drivers
         3  Shell
         4  Terminal type (currently xterm)
         5  Reboot
    Please enter a number [1]:3
  3. ブート環境を表示します。

    # beadm list
    be_find_current_be: failed to find current BE name
    be_find_current_be: failed to find current BE name
    BE      Flags Mountpoint Space Policy Created          
    --      ----- ---------- ----- ------ -------          
    solaris R     -          2.29G static 2027-07-04 14:46
  4. 新しくインストールしたブート環境をマウントします。

    # beadm mount solaris /a
  5. 回避方法を適用します。

    # echo "set iscsi:iscsi_conn_first_login_max=20" >> /a/etc/system
    # echo "set iscsi:iscsi_conn_first_interval_max=10" >> /a/etc/system
  6. 次回リブート時に回避方法がアクティブ化されるように、マウントしたブート環境内のブートアーカイブを更新します。

    # bootadm update-archive -v -R /a
  7. 回避方法を適用します。

    # echo "set iscsi:iscsi_conn_first_login_max=20" >> /etc/system
    # echo "set iscsi:iscsi_conn_first_interval_max=10" >> /etc/system
  8. ブート環境をアンマウントし、システムをリブートします。

    # beadm umount solaris
    # reboot

Oracle Solaris 11.3 SRU 19.5 よりも前のブート環境を選択する

SPARC T8 および SPARC M8-8 サーバーに、SRU 24 よりも前のバージョンの Oracle Solaris 11.3 のブート環境が含まれることはありません。以前のブート環境が含まれている SPARC M7 サーバーが存在する場合、次のステップに従って Oracle Solaris 11.3 SRU 19.5 よりも前のブート環境をブートすることで、この vfs_mountroot パニックの問題の影響を受ける Oracle Solaris OS のブート環境に回避方法を適用します。

  1. Oracle Solaris 11.3 SRU 19.5 よりも古いブート環境を選択します。

    {0} ok boot net -L 
    Boot device: /pci@300/pci@1/network@0  File and args: -L
    1000 Mbps full duplex Link up
    1000 Mbps full duplex Link up
    1000 Mbps full duplex Link up
    1 Oracle Solaris 11.3 SPARC
    2 S11.3-SRU18.6
    3 S11.3-SRU22.3
    Select environment to boot: [ 1 - 3 ]: 2
    
    To boot the selected entry, invoke:
    boot [<root-device>] -Z rpool/ROOT/S11.3-SRU18.6
    
    Program terminated
  2. Oracle Solaris 11.3 SRU 19.5 よりも前のブート環境を選択してブートします。

    {0} ok boot net -Z rpool/ROOT/S11.3-SRU18.6
  3. 既存のブート環境を一覧表示します。

    # beadm list
    BE            Flags Mountpoint Space  Policy Created          
    --            ----- ---------- -----  ------ -------          
    S11.3-SRU18.6 N     /          33.32M static 2027-07-03 15:57 
    S11.3-SRU22.3 R     -          6.40G  static 2027-07-03 16:03 
    solaris       -     -          99.75M static 2027-07-03 15:40
  4. パニックを示しているブート環境をマウントします。

    # beadm mount S11.3-SRU22.3 /mnt
  5. 回避方法を適用します。

    # echo "set iscsi:iscsi_conn_first_login_max=20" >> /mnt/etc/system
    # echo "set iscsi:iscsi_conn_first_interval_max=10" >> /mnt/etc/system
  6. 次回リブート時に回避方法がアクティブ化されるように、マウントしたブート環境内のブートアーカイブを更新します。

    # bootadm update-archive -v -R /mnt
  7. ブート環境をアンマウントします。

    # beadm umount S11.3-SRU22.3
  8. サーバーを新しいブート環境にリブートします。