=========== 시스템 세부 정보 ===========

=========== 시스템 세부 정보 ===========

=========== 시스템 세부 정보 ===========

OS: Solaris 10, 업데이트 11
CPU_ARCH: SPARC(sparcv9)
HW: Sun Fire V490(그래아아아아아아아 옛날 학교)
KERNEL_REV: 150400-40
프로그램: bpbkar32(Symantec's Netbackup) TL;DR: SUSPENDED로 인해
프로세스를 종료할 수 없음 kill -9두 개의 좋은 경로가 아닐 수도 있기 때문에 zpool이 발생했습니다.

문제:

시스템에는 종료할 수 없는 프로세스가 16개 있습니다. 우리는 백업 팀으로부터 NB 마스터 서버에서 이러한 작업을 종료할 수 없고 새 백업을 생성할 수 없다는 알림을 받았기 때문에 다음을 시도했고 다음을 ./bp.kill_all받았습니다.

배쉬-3.2#./bp.kill_all

종료해야 할 NetBackup 프로세스를 찾고 있습니다.
bpbkar 프로세스를 종료하는 중...

다음 프로세스는 여전히 활성 상태입니다.
루트 20346 1 0 02:02:33 ? 0:00 bpbkar32 -r 2678400 -ru 루트 -dt 1047868 -to 0 -bpstart_time 1481767648 -clnt n
루트 18689 1 0 12월 9일? 0:00 bpbkar32 -r 8035200 -ru 루트 -dt 0 -to 0 -bpstart_time 1481325879 -clnt nerp323
루트 12618 1 0 12월 7일? 0:00 bpbkar32 -r 2678400 -ru root -dt 357484 -to 0 -bpstart_time 1481077264 -clnt ne
root 29693 1 0 12월 9일? 0:00 bpbkar32 -r 2678400 -ru root -dt 529430 -to 0 -bpstart_time 1481249210 -clnt ne
root 10168 1 0 12월 9일? 0:00 bpbkar32 -r 2678400 -ru root -dt 530349 -to 0 -bpstart_time 1481250129 -clnt ne
root 1950 1 0 12월 14일? 0:00 bpbkar32 -r 2678400 -ru root -dt 962300 -to 0 -bpstart_time 1481682080 -clnt ne
이 스크립트로 해당 사용자를 종료하시겠습니까? [y,n] (y) y
나머지 프로세스
종료 중... 프로세스 종료 대기 중...
프로세스 종료 대기 중...
프로세스 종료 대기 중...
프로세스 종료 대기 중...
프로세스 대기 중 종료하려면...
아직 실행 중인 프로세스가 있습니다.

... 가독성을 위해 출력이 잘렸습니다.

우리는 극도의 편견을 가지고 이러한 프로세스를 종료하려고 시도 kill -9하지만 소용이 없습니다. 나는 보았다종료할 수 없는 작업을 종료하는 방법(중단할 수 없나요?)그리고'kill -9'가 작동하지 않으면 어떻게 되나요?"Solaris uninterruptable process"를 검색하여 부분적인 결과를 얻었습니다. 재부팅은 일반적인 주제인 것으로 보이며 "여기서 책상에 맞서는" 솔루션이기도 합니다.

즉, 나는 다음을 수행하고 싶습니다.
- 근본 원인이 무엇인지에 대한 내 논리와 추론을 검증합니다
. - 프로세스가 중지된 위치/실행을 시도하는 sys 호출이 무엇인지 확인하는 더 좋은 방법이 있는지 확인합니다. -
I/O 해결 가능한 경우 재부팅하지 않고 종료할 수 없는 프로세스를 삭제합니다.
거의 근본 원인 분석과 일종의 "앞으로 백업이 실행되는 동안 또는 두 개의 작업 경로가 없는 경우 전환 작업을 수행하지 마십시오" 완화에 불과합니다.

내가 얻은 것/생각한 것은 다음과 같습니다.
1) /proc/1950/ 디렉토리에 들어가서 상태를 살펴봅니다. . strings​임의의 문자를 분출합니다. 주목할 점은 'cwd'가 아무것도 아닌 링크를 표시하고 이를 해결하려고 시도하면 ls -alL /proc/1950/cwd터미널이 중단되고 생성도 발생한다는 것입니다.드럼롤또 다른 중단 없는 프로세스.

2) a를 실행하면 pstack 1950몇 가지 유용한 정보가 생성되지만 a에서 볼 수 없거나 ps -eaf이해할 수 있는 정보는 없습니다. 하지만 모든 0은 작동하는 PID에서처럼 주소나 시스템 호출을 볼 수 없기 때문에 나빠 보입니다.

배쉬-3.2#pstack 1950

1950: bpbkar32 -r 2678400 -ru 루트 -dt 962300 -to 0 -bpstart_time 1481682080 0000000000000000 ???????? (0, 0, 0, 0, 0, 0)

truss3) 실행 중인 프로세스에서 실행을 시도하면 실행이 중단됩니다. pfiles"pfiles: 프로세스 1950을 제어할 수 없습니다"라는 오류가 발생하는 경우도 마찬가지입니다. 흥미롭지만 기대됩니다.

4) 실행하면 strace"추적자가 이미 존재합니다"라는 메시지가 나타납니다.

5) a를 실행하여 pwdxcwd 반환을 인쇄합니다:
bash-3.2#pwdx 1950

1950: /버킷

우리 df에 포함되어 있기 때문에 이것은 흥미 롭습니다 ...
df -h /bucket

사용된 파일 시스템 크기 가용 용량
버킷에 마운트됨 1.9T 31K 1.9T 1%/버킷

... 하지만 /bucket에 CD를 넣고 수행하려고 하면 ls동일한 정지 효과가 발생합니다.

배쉬-3.2#zpool list

이름 크기 ALLOC FREE CAP HEALTH ALTROOT
버킷 1.94T 308K 1.94T 0% SUSPENDED -
rpool 136G 58.0G 78.0G 42% 온라인 -

배쉬-3.2#umount /bucket

'버킷'을 열 수 없습니다. 풀 I/O가 현재 일시 중지되었습니다.

배쉬-3.2#zpool export bucket

'/bucket'을 마운트 해제할 수 없습니다. 장치가 사용 중입니다.

배쉬-3.2#zpool status -x

풀: 버킷
상태: SUSPENDED
상태: IO 오류에 대한 응답으로 하나 이상의 장치에 오류가 발생했습니다.
조치: 영향을 받는 장치가 연결되어 있는지 확인한 다음 'zpoolclear'를 실행하십시오.
보다:http://www.sun.com/msg/ZFS-8000-HC
스캔: 요청된 없음
구성:
NAME STATE READ WRITE CKSUM
버킷 SUSPENDED 0 0 0 I/O 오류 발생 c3t50060E80102B1F5Ad78 FAULTED 2 0 0 오류가 너무 많음

으응... 우리가 물에 빠졌다는 걸 느꼈어요. 실제로 "전환 작업"이 발생했을 때 SAN에 대한 활성/정상 경로가 두 개 없었기 때문에 결국 밑에서 깔개를 잡아당기게 됐습니다. vdev와 백업이 종료되었을 때 백업이 작동하고 있었지만 나와 같은 모든 프로세스는 ls동일한 동작을 했을 것입니다.

"재부팅을 방지할 수 있는 이 알 수 없는 명령을 실행하세요"라고 마지막으로 생각한 사람이 있나요???

답변1

Jeff가 제안한 대로 zpool clear는 경로가 반환된 경우 문제를 해결하는 데 도움이 됩니다. 그렇지 않은 것 같으므로 서버에서 LUN을 볼 수 없는 것 같습니다.

A는 zpool clear -F -n bucket또한 마지막 트랜잭션 세트(-F 옵션)를 삭제하여 풀을 가져올 수 있는지 알려줍니다.`

스위치 작업에 대해 언급하셨으므로 어떤 작업이 수행되었는지, 변경 사항 중 하나가 경로를 제거했는지 확인하고 싶을 수도 있습니다. `luxadm display /dev/rdsk/c<____>s2 출력을 보셨습니까? 아니면 cfgadm을 사용하여 경로를 재구성해 보셨나요? 아니면 forcelip 이벤트를 경로 아래로 보내시겠습니까?

a의 전체 출력은 zpool status bucket풀 유형(미러, 고양이, 스트라이프 등)을 결정하는 데 유용할 수도 있습니다. 나는 문제에 근거한 거울이 아니라고 가정합니다.

나는 혼합에 있지 않기 때문에 말하기 쉽다는 것을 알고 있지만 문제가 아니라고 가정하면 데이터가 여전히 어레이에 모두 존재해야 하므로 아직 당황하지 마십시오. 그러나 일부 트랜잭션이 롤백되어 다시 가져와야 할 수도 있습니다.

행운을 빌어 요!

답변2

다음을 통해 SAN 상태(FC SAN 가정)를 확인할 수 있습니다.

for port in `fcinfo hba-port | grep Port | awk '{ print $4 }'`; do
> fcinfo remote-port -ls -p $port
> done

또한 다음 내용을 읽어보세요.매뉴얼 페이지mpathadm. mpathadm show lu LUNLUN의 상태를 표시하는 데 사용할 수 있습니다 .

관련 정보