클러스터에 새 SDS를 추가한 후 PowerFlex SDC에 IO 오류가 발생함
요약: PowerFlex 클러스터에 새 SDS를 추가하고 데이터를 새 SDS로 재조정한 후 일부 SDC에서 I/O 오류가 표시됨
증상
- SDS가 클러스터에 추가되었습니다(MDM 이벤트에서).
2022-03-07 18:28:07.080 MDM_CLI_CONF_COMMAND_RECEIVED INFO Command add_sds received, User: 'admin'. [4576114] protection_domain with ID a876543f00000000, fault_set N/A, New SDS name: sds12, Hostnames: 172.1.0.12, Port: 7072 2022-03-07 18:28:07.324 CLI_COMMAND_SUCCEEDED INFO Command add_sds succeeded. [4576114] ID: 7d120650000002f
- SDC 로그에는 새 SDS에 연결하려고 시도하는 커널 스택 추적이 표시됩니다. SDC가 새 SDS에 연결을 시도할 때 다음과 같은 내용이 여러 번 표시될 수 있습니다.
022-03-07T18:29:02.880040-05:00 sdc32 kernel: net_sched: page allocation failure: order:4, mode:0x104020 2022-03-07T18:29:02.880170-05:00 sdc32 kernel: CPU: 16 PID: 5662 Comm: net_sched Kdump: loaded Tainted: P OE ------------ 3.10.0-1062.el7.x86_64 #1 2022-03-07T18:29:02.880242-05:00 sdc32 kernel: Hardware name: Dell Inc. PowerEdge R740xd/5XXXXX, BIOS 2.4.8 11/26/2019 2022-03-07T18:29:02.880355-05:00 sdc32 kernel: Call Trace: 2022-03-07T18:29:02.880453-05:00 sdc32 kernel: [<ffffffffbb179262>] dump_stack+0x19/0x1b 2022-03-07T18:29:02.880553-05:00 sdc32 kernel: [<ffffffffbabc23d0>] warn_alloc_failed+0x110/0x180 2022-03-07T18:29:02.880623-05:00 sdc32 kernel: [<ffffffffbb1747fc>] __alloc_pages_slowpath+0x6b6/0x724 2022-03-07T18:29:02.880709-05:00 sdc32 kernel: [<ffffffffc09c021e>] ? netAddress_ToStrCopy+0x2de/0x520 [scini] 2022-03-07T18:29:02.880787-05:00 sdc32 kernel: [<ffffffffbabc6b84>] __alloc_pages_nodemask+0x404/0x420 2022-03-07T18:29:02.880851-05:00 sdc32 kernel: [<ffffffffbac14c68>] alloc_pages_current+0x98/0x110 2022-03-07T18:29:02.880922-05:00 sdc32 kernel: [<ffffffffbabc117e>] __get_free_pages+0xe/0x40 2022-03-07T18:29:02.880995-05:00 sdc32 kernel: [<ffffffffbac2052e>] kmalloc_order_trace+0x2e/0xa0 2022-03-07T18:29:02.881053-05:00 sdc32 kernel: [<ffffffffbac24571>] __kmalloc+0x211/0x230 2022-03-07T18:29:02.881110-05:00 sdc32 kernel: [<ffffffffc0988274>] mapClass_AllocAndInitObj+0x44/0x140 [scini] 2022-03-07T18:29:02.881167-05:00 sdc32 kernel: [<ffffffffc098959e>] mapClass_UpdateAll+0x40e/0x9b0 [scini] 2022-03-07T18:29:02.881229-05:00 sdc32 kernel: [<ffffffffc09c9994>] ? mosMitSchedThrd_CurThrdOurs+0x64/0x90 [scini] 2022-03-07T18:29:02.881298-05:00 sdc32 kernel: [<ffffffffc099aa07>] mapMdm_HandleObjUpdate_CK+0x327/0x730 [scini] 2022-03-07T18:29:02.881360-05:00 sdc32 kernel: [<ffffffffc099c070>] ? mapMdm_SendUpdateReq_CK+0xf0/0xed0 [scini] 2022-03-07T18:29:02.881419-05:00 sdc32 kernel: [<ffffffffc099c4b0>] mapMdm_SendUpdateReq_CK+0x530/0xed0 [scini] 2022-03-07T18:29:02.881480-05:00 sdc32 kernel: [<ffffffffc09a704f>] ? netSock_DoIO+0xef/0x7d0 [scini] 2022-03-07T18:29:02.881543-05:00 sdc32 kernel: [<ffffffffc09aaf47>] ? netChanThrottler_TryToWakeupWaiterOfCond+0x27/0x100 [scini] 2022-03-07T18:29:02.881606-05:00 sdc32 kernel: [<ffffffffc09ab118>] ? netChanThrottler_TryToWakeupWaiter+0x58/0x80 [scini] 2022-03-07T18:29:02.881660-05:00 sdc32 kernel: [<ffffffffc095cc80>] ? netChan_SendReq_CK+0x90/0xa70 [scini] 2022-03-07T18:29:02.881716-05:00 sdc32 kernel: [<ffffffffc095cdd0>] netChan_SendReq_CK+0x1e0/0xa70 [scini] 2022-03-07T18:29:02.881775-05:00 sdc32 kernel: [<ffffffffc09699c5>] netCon_SendReq_CK+0x175/0x590 [scini] 2022-03-07T18:29:02.881835-05:00 sdc32 kernel: [<ffffffffc0963cf7>] ? netRPC_SendDone_CK+0x47/0xab0 [scini] 2022-03-07T18:29:02.881890-05:00 sdc32 kernel: [<ffffffffc0963dd3>] netRPC_SendDone_CK+0x123/0xab0 [scini] 2022-03-07T18:29:02.881959-05:00 sdc32 kernel: [<ffffffffc09c9c24>] mosMit_RunWithTLS+0x54/0x60 [scini] 2022-03-07T18:29:02.882017-05:00 sdc32 kernel: [<ffffffffc09cbb92>] mosMitSchedThrd_ThrdEntry+0x1a2/0x500 [scini] 2022-03-07T18:29:02.882071-05:00 sdc32 kernel: [<ffffffffc09c82f0>] ? mosTicks_DestroyEnvSpecific+0x10/0x10 [scini] 2022-03-07T18:29:02.882126-05:00 sdc32 kernel: [<ffffffffc09c8310>] mosOsThrd_Entry+0x20/0x50 [scini] 2022-03-07T18:29:02.882185-05:00 sdc32 kernel: [<ffffffffbaac50d1>] kthread+0xd1/0xe0 2022-03-07T18:29:02.882240-05:00 sdc32 kernel: [<ffffffffbaac5000>] ? insert_kthread_work+0x40/0x40 2022-03-07T18:29:02.882294-05:00 sdc32 kernel: [<ffffffffbb18bd37>] ret_from_fork_nospec_begin+0x21/0x21 2022-03-07T18:29:02.882351-05:00 sdc32 kernel: [<ffffffffbaac5000>] ? insert_kthread_work+0x40/0x40 2022-03-07T18:29:02.891431-05:00 sdc32 kernel: ScaleIO mapClass_AllocAndInitObj:1301 :Error: Failed to allocate memory 38480.Cannot process MDM response
- 그러면 SDC 로그에 I/O 오류가 표시됩니다.
2022-03-07T18:49:03.652009-05:00 sdc32 kernel: ScaleIO mapMultiHead_UpdateInPlace:561 :Warning: Invalid primaryTgtIdx 47 at 2. Multi-head ID dd990042. 2022-03-07T18:49:03.652130-05:00 sdc32 kernel: ScaleIO mapClass_UpdateAll:614 :Error: Object ffff948c7f350000 (class multi_head) failed to update in place.status NO_RESOURCES (67) 2022-03-07T18:49:04.662144-05:00 sdc32 kernel: ScaleIO mapVolIO_ReportIOErrorIfNeeded:491 :[67641433832] IO-ERROR Type READ. comb: 6ecc80210154. offsetInComb 14536800. SizeInLB 256. SDS_ID 7dd0d24700000033. Comb Gen 21c1. Head Gen 222c. StartLB 5fb1ac860. 2022-03-07T18:49:04.662268-05:00 sdc32 kernel: blk_update_request: I/O error, dev scinic, sector 25687672672
영향
일부 SDC의 I/O 오류
원인
해결
새 SDS를 즉각적인 유지 보수 모드로 전환하여 IO 오류를 즉시 중지할 수 있습니다. SDC는 나머지 SDS에서 데이터를 가져올 수 있습니다. SDC 메모리 문제가 해결되면 SDS의 유지 보수를 중단합니다.
여기서 해야 할 일이 몇 가지 있으며, 모두 실행 계획에서 고려해야 합니다.
- 이 문제를 해결하기 위해 확실한 방법이 필요한 경우 SDC 호스트를 재부팅하면 문제가 해결됩니다. OS를 다시 초기화하면 이전에 있던 메모리 조각화가 사라집니다.
-
재부팅이 불가능한 경우 다음 명령을 사용합니다. 조각난 메모리를 최대한 회수하고 압축하려고 합니다. 이는 작동이 보장되지 않으며 메모리 조각을 회수/압축하는 몇 초 동안 현재 응용 프로그램에 지장을 줄 수 있습니다.
sync; echo 1 > /proc/sys/vm/drop_caches; echo 1 > /proc/sys/vm/compact_memory
"cat /proc/buddyinfo"로 메모리 사용량을 확인하여 위의 명령이 도움이 되었는지 확인하십시오. 위의 명령을 실행하기 전과 후에 사용하여 0 이상으로 상승하는지 확인합니다. "노드 0, 보통 영역" 행의 네 번째 열은 사용 가능한 64KB 연속 메모리 청크입니다. 이 경우 위의 명령을 실행하여 회수/압축하기 전에 표시됩니다.sdc32:~ # cat /proc/buddyinfo Node 0, zone DMA 1 0 0 1 2 1 1 0 1 1 2 Node 0, zone DMA32 9 5 7 5 9 6 8 6 7 5 295 Node 0, zone Normal 909921 1263646 202478 0<=== 0 0 0 0 0 0 0 Node 1, zone Normal 39085 0 0 0 0 0 0 0 0 0 0
- "sysctl -a"를 사용하여 커널에서 메모리 오버커밋 설정을 확인합니다. 커널이 기본값을 사용하는 경우:
vm.overcommit_memory = 0
vm.overcommit_ratio = 50
재부팅 후 OS에서 더 많은 메모리를 사용하고 나중에 이 문제를 방지하려면 이러한 매개 변수를 다음과 같이 변경하는 방법에 대해 OS 공급업체에 문의하는 것이 좋습니다.
vm.overcommit_memory = 2
vm.overcommit_ratio = 98
- 이것이 OS 메모리 조각화의 정기적인 패턴이 되는 경우 Linux 커널을 업그레이드해야 할 수 있습니다
영향을 받는 버전
모든 PowerFlex SDC는 OS 메모리 조각화 문제의 영향을 받을 수 있습니다.