Nie można uruchomić serwerów Linux w przypadku przełączania awaryjnego
Symptoms
Uruchomienie skryptu "emcpbfs_linux config" w celu skonfigurowania PowerPath do rozruchu ze skryptu R1 i próba uruchomienia z nowego wpisu grub, który został utworzony i komputer uruchomił się prawidłowo zgodnie z oczekiwaniami. Jednak po przełączeniu awaryjnym nie działa. Powerpath nie wykrywa urządzeń podczas pracy w lokacji R2 i dlatego filtr LVM w obrazie ramdysku, który jest ustawiony tak, aby akceptował tylko urządzenia emcpower, nie znajduje żadnego z PV, co powoduje, że serwer nie może się uruchomić
Uruchamiając skrypt z 20-sekundowym uśpieniem, serwer faktycznie uruchomił się bez problemów, gdy został przełączony awaryjnie (i z tymi samymi nazwami pseudourządzeń)
Uruchomienie skryptu bez trybu uśpienia wykazywało te same objawy zapętlania podczas próby znalezienia grupy woluminów, a serwer nie uruchamiał się.
Cause
Gdy skrypt został uruchomiony bez trybu uśpienia: za pierwszym razem łącze FC nadal nie jest aktywne, a natywne urządzenia SCSI nadal nie są skonfigurowane na hoście.
Istnieje jednak jeden dysk wewnętrzny (/dev/sda), który jest już skonfigurowany. Skrypt zakłada więc, że natywne urządzenia rozruchowe są już skonfigurowane i kontynuuje próbę utworzenia urządzenia emcpower. Ale ponieważ urządzenia R2 nadal nie działają, kończy się to niepowodzeniem.
Zasadniczo z poniższego skryptu wynika, że warunek powodzenia się, ponieważ sdfound jest ustawiony na 1, mimo że urządzenie rozruchowe nie jest obecne.
if [ ${count1} -eq ${count2} ] && [ "${sdfound}" -eq 1 ]; Następnie /etc/opt/emcpower/emcpmgr map -p
<wycinek dziennika bez uśpienia>
LICZBA: getsddevs zwraca 1
LICZBA1: getsddevs zwraca 1
LICZBA: getsddevs zwraca 1 LICZBA2: getsddevs zwraca 1
/dev/sda
/dev/emcpower<snip>
<snip of log with sleep>
COUNT: getsddevs return 25
COUNT1: getsddevs return 25
COUNT: getsddevs return 25 COUNT2: getsddevs return 25
COUNT2: getsddevs return 25
/dev/sda /dev/sdb /dev/sdc /dev/sdd /dev/sdd /dev/sdf /dev/sdg /dev/sdh /dev/sdj /dev/sdj /dev/sdk /dev/sdm /dev/sdl /dev/sdm /dev/sdn /dev/sdo /dev/sdp /dev/sdq /dev/sdq /dev/sds /dev/sds /dev/sdt /dev/sdd /dev/sdv /dev/sdw /dev/sdx /dev/sdy
sdc: Nieznana tablica
partycji SDE: Nieznana tablica
partycji SDF: Nieznana tablica
partycji SDG: Nieznana tablica
partycji SDQ: Nieznana tablica partycji SDQ: Nieznana tablica
partycji SDR: Nieznana tablica
partycji EMCpowera:EMCPOWERA1
EMCPOWERA2
/dev/emcpower
/dev/emcpowera
/dev/emcpowera1
/dev/emcpowera2<snip>
Resolution
Obejście:
Wyłącz ten dysk wewnętrzny w systemie BIOS podczas rozruchu, a następnie spróbuj przełączyć się w tryb failover (bez uśpienia).
W tym przypadku rozruch powinien zakończyć się powodzeniem bez żadnych problemów, ponieważ skrypt sprawdza, czy liczba jest większa niż 0 podczas próby utworzenia urządzenia emcpower.
Trwała poprawka:
nie ma trwałej poprawki, ponieważ rozruch R1/R2 z dysku wewnętrznego nie jest zalecaną konfiguracją. Złożoność polega na tym, że skrypt nie będzie w stanie określić, czy dysk rozruchowy jest już skonfigurowany, czy nie. Ten skrypt nie jest specyficzny dla scenariuszy rozruchu R1/R2. Ten sam skrypt musi działać również przy normalnym rozruchu z konfiguracji SAN. Dodawanie snu, gdy nie jest to wymagane, nie byłoby zbyt dobrym pomysłem.
Inżynierowie udokumentują, że ta konfiguracja nie jest obsługiwana w podręczniku instalacji i administracji PowerPath.