Setup SAN Boot for RHEL 6.x using native multipath on EMC storage

Requirements:
1) RHEL 6.x (most apply to RHEL 5.x too, RHEL 5.x use mkinitrd instead of Dracut and the /etc/multipath.conf is slightly different refer to Red Hat KB in reference section)
2) EMC storage was setup with Active/Active (ALUA)
3) Boot LUN was presented with single path for initial install


Procedures:

1. Server boots up after initial install
2. Login to server as root to enable multipath
[root@server1]#mpathconf --enable –-with_multipathd y
3. Edit /etc/multipath.conf and make sure it only contains following valid parameters

blacklist {
}


defaults {
 user_friendly_names yes
}
devices {
  device {
    vendor "DGC"
    product ".*"
    product_blacklist "LUNZ"
    hardware_handler "1 alua"   
    path_checker directio    
    prio alua                
  }
}
4.Find out the logical path the root disk is mapped
[root@server1]#multipath –v3 
It should be /dev/mapper/mpatha

5. Create initramfs with multipath module
[root@server1]#dracut --force -–add multipath

6. Make sure multipath.conf is included in initrd image
[root@server1]#lsinitrd /boot/initramfs-*.x86_64.img | grep multipath.conf
-rw-r--r--   1 root     root         2525 Feb 27 13:31 etc/multipath.conf
7. Modify the /boot/grub/device.map and change
 (hd0) /dev/sda    to
 (hd0) /dev/mapper/mpatha
This is assuming the boot disk is on /dev/mapper/mpatha as verified in step 2 above.

8. Reboot the server.

9. Verify multipath, check hwhandler='1 alua' and member disk sda for mpatha
[root@server1]#multipath –ll 
mpatha (3600601609973310067eb1e1ed69ae311) dm-0 DGC,VRAID
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 1:0:0:0 sda 8:0   active ready running
  

10. Ask storage administrator to enable other paths for boot LUN.
11. Reboot server again after multipath is aenabled in storage too
12. Login server to verify all paths, check hwhandler='1 alua' prio>0
if hwhandler='1 emc' or prio=0 means PNR mode

[root@server1]#multipath -ll
mpatha (3600601609973310067eb1e1ed69ae311) dm-0 DGC,VRAID
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 1:0:1:0 sdd 8:48  active ready running
| `- 2:0:1:0 sdj 8:144 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 1:0:0:0 sda 8:0   active ready running
  `- 2:0:0:0 sdg 8:96  active ready running
mpathb (360060160997331009fd6e124d69ae311) dm-1 DGC,VRAID
size=800G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 1:0:0:1 sdb 8:16  active ready running
| `- 2:0:0:1 sdh 8:112 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 1:0:1:1 sde 8:64  active ready running
  `- 2:0:1:1 sdk 8:160 active ready running
13. Partition other LUNS using fdisk command as normal, but use logical path /dev/mapper/mpathb etc (partition will be created as /dev/mapper/mpathbp1 instead of /dev/mapper/mpathb1
NOTE: any change to /etc/multipath.conf requires re-create initramfs ( dracut --force -–add multipath) and a reboot, because the boot LUN is on SAN, if boot LUN is local disk, change to /etc/multipath.conf only requires multipathd restart

<출처: http://honglus.blogspot.kr/2014/03/setup-san-boot-for-rhel-6x-using-native.html>

안녕하세요 한국 리눅스 사용자 그룹을 운영하고 있는 이호성 (Tommy Lee) 라고 합니다. 먼저 금번 

소그룹 세미나때 발표를 허락해 주셔서 다시한번 감사의 말씀을 드립니다. 

발표 시간은 40분 내외로 준비를 해주시고.. 혹시나 데모 (Demo)를 준비하신 연사분들 께서는 

Presentation을 짧게 하시고 데모 위주로 하셔도 상관은 없습니다. (자유롭게 진행하셔요..^^)

커뮤니티 세미나 이기 때문에 너무 경직되지 않았으면 좋겠습니다..^^

재능기부 형태의 세미나 발표를 감당해 주시고 참여해 주셔서 다시한번 감사의 말씀 전해드립니다..


1. Linux kernel core 분석 방법론 

   - 강사: 이미르 (한국 오라클 GSS)


2. zinst 패키지 기반의 리눅스 중앙관리 시스템

    - 강사 : 양지욱 과장 (GS샵) 


3. Percona를 이용한 클러스터 구축 

   - 강사 : 이동현 차장 (오픈소스 컨설팅) 


4. GlusterFS를 이용한  NAS 솔루션

    - 강사 : 이호성 차장 (오픈소스 컨설팅, 한국리눅스 사용자 그룹 운영자) 


5. Linux RBAC with LDAP 

    - 강사 : 송상준 부장 (서진 디엔에스) 



난공불락세미나_템플릿.pptx


일반적으로 리눅스에서 NMI 신호를 받게 되는 경우에는 크가 두가지 경우로 나타낼수 
있습니다. 

첫번째 : 커널에서 NMI_WATCHDOG을 활성화 했을 경우.. 
두번째 : 자체 하드웨어에서 NMI_WATCHDOG 신호를 사용하게 되는 경우 

일반적으로 하드웨어에서 발생시킨 NMI 신호의 경우 불특정 부하가 발생하거나, 하드웨어
자체적인 이상이 발생했을 경우 NMI Interrupt 신호를 발생시키게 되는데, 간혹 펌웨어나 
BIOS상에서 버그로 인해서 강제적으로 시스템을 재부팅 시키는 경우가, 발생하는 경우가 
있는데, know-issue 이기는 하지만 일반적으로 운영할때 발생할수 있는 상황이여서 정리해 봅니다. 


1. 커널 패닉 원인 (Root Cause)

HP DL380 G8 장비에서 자동으로 Rebooting 되는 원인으로는 HP DL380 G8 장비에서
발생된 NMI 신호를 커널 수신하여 NMI watchdog 메세지와 함께 커널 Panic을 발생.

NMI의 신호의 경우 커널에서 NMI_WATCHDOG=0 처리를 하지 않아도 HP 서버는  NMI Handler 기능을 가지고 있기 때문에 하드웨어 자체적으로 인터럽트 신호를 주기적으로
보내 시스템의 이상 여부를 확인하게 됨


2. vmcore Kernel Panic trace

Red Hat으로 Escallation 된 vmcore를 trace 한결과 아래아 같이 HP IML로 인한 NMI로 인해 커널 패닉이 발생되었음을 확인가능. 

crash> sys 

 KERNEL: /usr/lib/debug/lib/modules/2.6.32-358.el6.x86_64/vmlinux

    DUMPFILE: /var/crash/vmcore  [PARTIAL DUMP]
        CPUS: 12
        DATE: Tue Mar 11 11:26:52 2014
      UPTIME: 14 days, 21:28:40
LOAD AVERAGE: 0.20, 0.21, 0.18
       TASKS: 585
    NODENAME: mzeus02
     RELEASE: 2.6.32-358.6.2.el6.x86_64
     VERSION: #1 SMP Tue May 14 15:48:21 EDT 2013
     MACHINE: x86_64  (2892 Mhz)
      MEMORY: 24 GB
       PANIC: "Kernel panic - not syncing: An NMI occurred, please see the Integrated Management Log for details


또한 커널에서 FIFO 스택에 대한 Back trace 에서도  아래와 같이 hpwdt_pretimeout에
대한 Status를 확인

즉 NMI 신호에 대해서 선점하지 못하고 대기하고 있다가 일정 시점에서 NMI Interrupt 신호를 받지 못하면 시스템을 Hangup으로 간주하여 강제로 재부팅을 하게 되고 현재 설정된 kdump 구성으로 인해서 vmcore를 발생. 

crash> bt -t

PID: 0      TASK: ffffffff81a8d020  CPU: 0   COMMAND: "swapper"
              START: crash_kexec at ffffffff810c0dd2
  [ffff880036607d30] crash_kexec at ffffffff810c0dd2
  [ffff880036607db0] show_trace at ffffffff8100f275
  [ffff880036607db8] do_kimage_alloc at ffffffff810c0e5f
  [ffff880036607e00] schedule at ffffffff8150d47f
  [ffff880036607e30] arch_prepare_kprobe at ffffffff81513056
  [ffff880036607e80] hpwdt_pretimeout at ffffffffa01054cd [hpwdt]
  [ffff880036607e90] trampoline_handler at ffffffff81511b99
  [ffff880036607ea0] opt_pre_handler at ffffffff81513685
  [ffff880036607ee0] opt_pre_handler at ffffffff815136ea
  [ffff880036607ef0] srcu_init_notifier_head at ffffffff8109cc1e
  [ffff880036607f20] oops_begin at ffffffff815112c1
  [ffff880036607f50] do_general_protection at ffffffff81510c10
    [exception RIP: format_decode+837]
    RIP: ffffffff8127f585  RSP: ffff880036603c98  RFLAGS: 00000046
    RAX: ffffffff817e8e72  RBX: ffffffff81eacf29  RCX: 0000000000000000
    RDX: 0000000000000078  RSI: ffff880036603ce8  RDI: ffffffff817e8e71
    RBP: ffff880036603c98   R8: 0000000000000078   R9: ffffffff81a01e58
    R10: 0000000000000000  R11: 0000000000000001  R12: ffffffff817e8e71
    R13: ffffffff817e8e71  R14: ffff880036603e08  R15: ffffffff81ead300
    ORIG_RAX: ffffffffffffffff  CS: 0010  SS: 0018
--- <NMI exception stack> ---
  [ffff880036607000] format_decode at ffffffff8127f585
  [ffff880036603ca0] vsnprintf at ffffffff81280e34
  [ffff880036603d08] default_wake_function at ffffffff81063322
  [ffff880036603d40] simple_strtoll at ffffffff81281451
  [ffff880036603d60] vprintk at ffffffff8106f0b6
  [ffff880036603d88] __wake_up at ffffffff81055ab3
  [ffff880036603db8] delayed_work_timer_fn at ffffffff810912e0
  [ffff880036603dc8] insert_work at ffffffff81090d8d
  [ffff880036603e00] schedule at ffffffff8150d581
  [ffff880036603e60] dmar_set_interrupt at ffffffff812ad9d0
  [ffff880036603e78] __rcu_process_callbacks at ffffffff810e6f94
  [ffff880036603ed0] handle_IRQ_event at ffffffff810e1720
  [ffff880036603ed8] __do_softirq at ffffffff8107700f
  [ffff880036603f20] handle_fasteoi_irq at ffffffff810e3e6e
  [ffff880036603f60] handle_irq at ffffffff8100de89


- 조치 사항 - 

금번 발생된 HP DL380 G8에서 시스템에 강제로 재부팅 되는 이슈는 Know-issue  
아래의 링크는 RHEL6.4 기반에서 운영되는 HP 장비에서 발생된  "PANIC: "Kernel panic - not syncing: An NMI occurred, please see the Integrated Management Log for details"

이슈와 관련해서  HP 장비에 대한 FIrmware 및 BIOS 업그레이드를 권장하고 있음
아래의 문서에 댓글로 달려 있는 코멘트를  참조했을 때 HP DL580 G7과 HP DL380 G8이 동일한 문제를 나타내고 있음.  

< 관려 이슈 문서>

https://access.redhat.com/site/solutions/442193


+ Recent posts