PowerScale OneFS 9.11 이상: Vnode가 효율적으로 재확보되지 않아 노드가 OOM을 실행함
Summary: 메모리에 많은 수의 vnode가 누적되면 하나 이상의 노드가 OOM(메모리 부족) 상태가 될 수 있습니다. 스냅샷과 SmartPools를 사용하며 OneFS 9.11 이상을 실행하는 모든 클러스터에서 이 문제가 발생할 수 있습니다.
Symptoms
OOM 상태는 노드 패닉과 무대응으로 이어져 성능 저하 및 데이터 가용성 손실 이벤트를 초래할 수 있습니다. 메모리의 vnode의 수가 필요한 최대 vnode보다 큽니다. 활성화 또는 비활성화 vfs.vnlru_reuse_freevnodes (vnode 재활용)은 문제에 영향을 주지 않습니다.
문제는 OOM 메시지에서 식별할 수 있습니다. vmlogs및 미니덤프를 사용할 수 있습니다. 48GB 메모리가 장착된 F200 노드의 메시지 출력 예:
2025-06-11T05:31:56.025986+02:00 <0.4> - /boot/kernel.amd64/kernel: OOM: v_wire_count: 11262575, v_active_count: 7 events_since_last_log 674 2025-06-11T05:31:56.025992+02:00 <0.4> - /boot/kernel.amd64/kernel: Malloc Pigs: 2025-06-11T05:31:56.025997+02:00 <0.4> - /boot/kernel.amd64/kernel: Type InUse MemUse Requests 2025-06-11T05:31:56.026004+02:00 <0.4> - /boot/kernel.amd64/kernel: iaddr_set 15701654 981354K 4078195298 2025-06-11T05:31:56.026010+02:00 <0.4> - /boot/kernel.amd64/kernel: devbuf 171845 649730K 35775475 2025-06-11T05:31:56.026016+02:00 <0.4> - /boot/kernel.amd64/kernel: isi_hash 137112 505157K 760464664 2025-06-11T05:31:56.026022+02:00 <0.4> - /boot/kernel.amd64/kernel: newblk 4 131072K 1483813 2025-06-11T05:31:56.026027+02:00 <0.4> - /boot/kernel.amd64/kernel: inodedep 4 65536K 531073 2025-06-11T05:31:56.026035+02:00 <0.4> - /boot/kernel.amd64/kernel: vfscache 4 32817K 4 2025-06-11T05:31:56.026041+02:00 <0.4> - /boot/kernel.amd64/kernel: bar_owner_vec264 259 32256K 191809 2025-06-11T05:31:56.026047+02:00 <0.4> - /boot/kernel.amd64/kernel: linux 169103 28170K 142448723 2025-06-11T05:31:56.026052+02:00 <0.4> - /boot/kernel.amd64/kernel: statistics data 13062 20453K 1189902 2025-06-11T05:31:56.026058+02:00 <0.4> - /boot/kernel.amd64/kernel: vfs_hash 1 16384K 1 2025-06-11T05:31:56.026064+02:00 <0.4> - /boot/kernel.amd64/kernel: pagedep 4 16384K 151925 2025-06-11T05:31:56.026069+02:00 <0.4> - /boot/kernel.amd64/kernel: sysctloid 269900 14747K 274194 2025-06-11T05:31:56.026075+02:00 <0.4> - /boot/kernel.amd64/kernel: acpica 194000 12817K 3055662 2025-06-11T05:31:56.026081+02:00 <0.4> - /boot/kernel.amd64/kernel: 8kB dinodes 2315 11909K 10694470462 2025-06-11T05:31:56.026086+02:00 <0.4> - /boot/kernel.amd64/kernel: pcb 136 9230K 470386 2025-06-11T05:31:56.026092+02:00 <0.4> - /boot/kernel.amd64/kernel: Unshown bins account for 100723K 2025-06-11T05:31:56.026103+02:00 <0.4> - /boot/kernel.amd64/kernel: Total: 2628733K 2025-06-11T05:31:56.026109+02:00 <0.4> - /boot/kernel.amd64/kernel: UMA Zalloc Pigs: 2025-06-11T05:31:56.026114+02:00 <0.4> - /boot/kernel.amd64/kernel: NAME SIZE LIMIT COUNT MEM USED 2025-06-11T05:31:56.026120+02:00 <0.4> - /boot/kernel.amd64/kernel: IFSINODE 616, 0, 17222149, 11481500K 2025-06-11T05:31:56.026126+02:00 <0.4> - /boot/kernel.amd64/kernel: VNODE 584, 0, 17224440, 9842604K 2025-06-11T05:31:56.026132+02:00 <0.4> - /boot/kernel.amd64/kernel: mbuf_jumbo_p 4096, 0, 272268, 1089072K 2025-06-11T05:31:56.026137+02:00 <0.4> - /boot/kernel.amd64/kernel: VM OBJECT 272, 0, 49671, 839200K 2025-06-11T05:31:56.026143+02:00 <0.4> - /boot/kernel.amd64/kernel: UMA Slabs 0 80, 0, 3078132, 246336K 2025-06-11T05:31:56.026149+02:00 <0.4> - /boot/kernel.amd64/kernel: BUF TRIE 144, 0, 122678, 217204K 2025-06-11T05:31:56.026154+02:00 <0.4> - /boot/kernel.amd64/kernel: RADIX NODE 144, 0, 333231, 141808K 2025-06-11T05:31:56.026160+02:00 <0.4> - /boot/kernel.amd64/kernel: vmem btag 56, 0, 143433, 114884K 2025-06-11T05:31:56.026166+02:00 <0.4> - /boot/kernel.amd64/kernel: mbuf 256, *, *, 75888K 2025-06-11T05:31:56.026172+02:00 <0.4> - /boot/kernel.amd64/kernel: mbuf 256, 19265886, 284503, * 2025-06-11T05:31:56.026177+02:00 <0.4> - /boot/kernel.amd64/kernel: mbuf_packet 256, 0, 64, * 2025-06-11T05:31:56.026183+02:00 <0.4> - /boot/kernel.amd64/kernel: lki_mds_ent 160, 0, 62000, 69428K 2025-06-11T05:31:56.026189+02:00 <0.4> - /boot/kernel.amd64/kernel: md3 512, 0, 131072, 65540K 2025-06-11T05:31:56.026194+02:00 <0.4> - /boot/kernel.amd64/kernel: md0 512, 0, 131072, 65540K 2025-06-11T05:31:56.026200+02:00 <0.4> - /boot/kernel.amd64/kernel: pbuf 1024, *, *, 38760K 2025-06-11T05:31:56.026206+02:00 <0.4> - /boot/kernel.amd64/kernel: pbuf 1024, 256, 0, * 2025-06-11T05:31:56.026211+02:00 <0.4> - /boot/kernel.amd64/kernel: vnpbuf 1024, 512, 0, * 2025-06-11T05:31:56.026217+02:00 <0.4> - /boot/kernel.amd64/kernel: clpbuf 1024, 15872, 0, * 2025-06-11T05:31:56.026223+02:00 <0.4> - /boot/kernel.amd64/kernel: mdpbuf 1024, 1638, 0, * 2025-06-11T05:31:56.026228+02:00 <0.4> - /boot/kernel.amd64/kernel: nfspbuf 1024, 8192, 0, * 2025-06-11T05:31:56.026234+02:00 <0.4> - /boot/kernel.amd64/kernel: swwbuf 1024, 4096, 0, * 2025-06-11T05:31:56.026240+02:00 <0.4> - /boot/kernel.amd64/kernel: swrbuf 1024, 8192, 0, * 2025-06-11T05:31:56.026245+02:00 <0.4> - /boot/kernel.amd64/kernel: lkc_gen_ent 64, 0, 21333, 18100K 2025-06-11T05:31:56.026253+02:00 <0.4> - /boot/kernel.amd64/kernel: MAP ENTRY 96, 0, 138594, 15488K 2025-06-11T05:31:56.026259+02:00 <0.4> - /boot/kernel.amd64/kernel: Top zones: 24321352K 2025-06-11T05:31:56.026265+02:00 <0.4> - /boot/kernel.amd64/kernel: Malloc zones: 2344608K 2025-06-11T05:31:56.026270+02:00 <0.4> - /boot/kernel.amd64/kernel: Other zones: 117512K 2025-06-11T05:31:56.026276+02:00 <0.4> - /boot/kernel.amd64/kernel: UMA total: 26783472K
다음 항목 수는 1,700만 개가 넘습니다.
NAME SIZE LIMIT COUNT MEM USE IFSINODE 616, 0, 17222149, 11481500 VNODE 584, 0, 17224440, 9842604
여기서 최대 vnode는 2,900,000이며 다음에서 찾을 수 있습니다. vmlogs > kern.maxvnodes.
vnode의 수는 클러스터상에서 확인할 수 있으며, 다음과 같이 최대 vnode를 참조할 수 있습니다 sysctl:
# isi_for_array -s "sysctl vfs.numvnodes" # isi_for_array -s "sysctl kern.maxvnodes"
Cause
문제를 조사 중입니다.
Resolution
영구적인 해결 방법은 OneFS 9.11.0.2 및 9.12.0.0 이상 OneFS 릴리스에 있습니다.
해결 방법:
현재 해결 방법은 모든 노드에서 매시간 메모리 캐시를 플러시하는 것입니다. 아래 예제 루프는 모든 노드의 화면 세션에서 사용할 수 있습니다.
# while true; do date; isi_for_array -s 'sysctl vfs.numvnodes; isi_flush '; sleep 3600; done
isi_flush 명령이 진행 중입니다. 죽이지 마십시오 isi_flush 이로 인해 일시적인 서비스 중단이 발생할 수 있습니다.
캐시 메모리 플러시를 더욱 자동화하고 안정성을 높이기 위해 cron 작업을 예약할 수 있습니다. 아래 예제에서는 매시간 7분이 지난 캐시를 플러시합니다.
편집 /etc/mcp/override/crontab 텍스트 편집기를 클릭하고 다음을 입력합니다.
7 * * * * root pgrep isi_flush || /usr/bin/isi_flush
편집 방법에 대한 자세한 정보 crontab Isilon crontab 편집 방법 문서에서 찾을 수 있습니다.
SmartLock 규정 준수 모드
SmartLock 규정 준수 모드 클러스터의 경우 sudo 앞에 추가해야 합니다. isi_for_array 및 isi_flush:
# while true; do date; sudo isi_for_array -s 'sysctl vfs.numvnodes; sudo isi_flush '; sleep 3600; done
사용하는 경우 cron 직업 compadmin 편집할 수 없습니다. /etc/mcp/override/crontab, crontab 다음 구성을 포함하는 CLI 툴 -e 각 노드에서 옵션을 사용하여 아래와 같이 필요한 줄을 추가해야 합니다. 줄에 루트였던 "who" 열이 포함되어 있지 않습니다. /etc/mcp/override/crontab, 이기 때문에 cron 작업 기준 compadmin 오직.
편집하다 cron 다음을 사용하는 작업:
# crontab -e
편집기에서 다음을 수행합니다.
누르다 i 삽입 모드로 전환합니다.
줄 아래에 붙여넣기:
7 * * * * pgrep isi_flush || sudo /usr/bin/isi_flush
Esc 키를 누릅니다.
누르다 :wq! 을 클릭하여 변경 사항을 저장합니다.