Skills/mY Technutz 2020. 4. 6. 16:35

Oracle Linux 7 의 RHCK 를 사용하는 고객인데, Crash dump 가 발생하여 분석을 요청했다.

그냥 넘어가려고 했는데 eBPF 를 사용중인 서버에서 발생한 이슈라 흥미를 갖고

한번 살펴보기로 했다.

재밌는건 위 bpftool 은 sosreport 를 수집할때 systemtab 에 의해 수행되는 명령이었다.

재현테스트를 테스트머신을 만들어 수행해 보았으나, 아무런 이상없이

정상적으로 수집되고, 값도 정상적이다.

또한 bpftool 명령이 설치되어 있지 않다면 sosreport 수행 시행되지 않는다.

현재 고객은 위에서 보다시피 seos 등 3rd party 모듈을 여럿 사용하고 있었고,

filesystem permission 등의 관리가 이루어지고 있었기 때문에,

보안모듈을 의심할 수 밖에 없는 상황이였다.

안타깝게도, eBPFOL/RHEL 7 에서 Technical Preview 로 제공되므로,

더 깊은 상태의 investigation 이나 패치는 제공되지 않는다.

보다 상위의 커널들 ( Kernel 4.x, UEK4/5 ) 에서는 security_ops 를 아예 제거했고,

기본적으로 보안체크를 거치지 않고 다른 방법으로 처리하고 있었기에

적용하기도 어려운 상태였다.

결국 임시방편으로 고객에게 3rd-party 솔루션에서 bpftool 를 사용하는지 확인 후,

사용하지 않고, 필요로 하지 않는다면,

해당 패키지를 삭제하고 사용하지 않도록 하라고 권고하였다.

해당 패키지 (bpftool) 삭제 후 현재까지 이상없이 잘 운영중으로 보인다.

** Notes : 사실 Herbert 나 Todd 등 유수한 개발자님들께서 Technical Preview 라 귀찮다고
             코어덤프 거들떠보지도 않으셔서 상당히 어렵게 확인함 ㅋ

posted by mirr

댓글을 달아 주세요

카테고리 없음 2020. 4. 3. 18:36

아주 따끈따끈한 이슈를 발견해서 포스팅한다.

고객이 OL7 에서 kdump 테스트를 수행하는중, ext4 등 다른 파일시스템으로 저장이 되는데

별도로 연결한 xfs 파일시스템에는 저장이 되지 않는다는 문의를 해왔다.

"그럴리가 있남? 뭔가 잘못한거겠지 흥칫뿡" 속으로 생각하며,

직접 테스트를 하는데... 저장이 안된다...

"뭐지?" 하면서 살펴보기 시작한다.

이건 레드햇에서도 아직 답이 안나온  따끈따끈한 워크어라운드인것 같다.

혹시라도 OL7 에서 별도의 XFS 에 덤프를 저장해야 하는 경우, 해당 워크어라운드를 적용하도록 하자.

당연히 기존 루트 파일시스템에 저장하는 경우는 fsck 가 앞서 수행되므로 상관없이 잘 된다.

물론 환경에 따라서 sleep time 의 값이 더 필요할 수 도 있을것 같은데,

대부분 5~10초면 무난하지 않을까 싶다.

posted by mirr

댓글을 달아 주세요

Skills/System 2020. 3. 23. 21:29

메모리의 사용량 그리고 메모리의 어느정도 사용시 Swap 이 발생하고

이 비율을 어떻게 조절하는지에 대한 인터넷사이트나 페이지, 문서는 상당히 많은데,

막상 다소 잘못된 내용들이 너무 넘쳐나는 것 같고, 제대로 짚어주는 사람은 아무도 없어

글을 급하게 쓰기 시작한다.

사람의 인체와 마찬가지로 컴퓨터의 CPU 와 메모리라는 것은 상당히 복잡한 영역이다.

따라서 단순한 계산으로 쉽게 계산할 수 있는 방법은 존재하지 않는다.

결국 그때 그때의 사용정도만 종합적으로 보여준는 것이 다들 알고 있는

Free, top, mpstat, vmstat 등 의 명령인 것이다.

그 값에 의심을 갖지 말고 그냥 좀 믿자 .. 뇌피셜이 많아질수록 꼰대가 된다..

다시한번 결론!

Swappiness 가 0 으로 설정되어 있다고 해서 스왑을 안쓴다는건 아니다. 명심하자.

* 읽으신분들이 쪼금 되서 급하게 추가 :
"Swappiness 를 그럼 언제 쓰란 말이냐"

** File-backed 관련 테스트를 위한 간단한 Python code.
( file 은 dd if=/dev/zero of={filename} bs=1024M count=XXX 로 생성 )

#!/usr/bin/env python

import sys
import os

if len(sys.argv) != 2:
    print "usage: %s <file-name>" % sys.argv[0]
    sys.exit()

pid = os.getpid()

f = open(sys.argv[1], "r")
size=f.read()

print ("File read test (%d) : %s read - %dM") % (pid, sys.argv[1], len(size)/1024**2)

while True:
    pass

테스트를 할때 여러조건으로 중복으로 실행하며 테스트 해보시면 좋다..
(난 귀찮아서 ㅠㅠ)

*** 관련 하여 회사 Mailing List 에서 커널개발팀 답변 :

Also we *very strongly recommend* not setting vm.swappiness=0. That can
result in some corner cases where the system has sputtering hang-ups
when it finally does have to swap for some reason.

Unless oswatcher is showing major %so/%si (swap-out/in) activity, it's
not having any impact on system performance, so if the underlying
question is about performance, you're probably looking at the wrong thing.

Swappiness 가 메모리를 더 적극적으로 활용하도록 하는 것은 맞지만,

Pinch 상황 즉, 시스템 부하가 높아지는 상황에서는 심각한 서비스 영속성 ( service continuty )

손상시키는 결과를 불러올 수 있다는 점을 경고하고 있다.


posted by mirr

댓글을 달아 주세요

Skills/mY Technutz 2020. 3. 19. 10:41

회사 자동로그인 시스템을 회사 내부 워킹데스크탑에서 파이떤을 이용해 돌리는데,

보안을 위한 APM 을 사용하므로, 부팅시 꼭 직접 오프라인으로 비밀번호를 넣어줘야 부팅이되어

전원문제나 윈도우즈 업그레이드 문제 등으로 리부팅이 되면,

OS 영역으로 넘어가지를 못해서 모든 나의 "사무실에 출근한척 하기"

프로젝트와 연관된 자동화 프로그램들이 먹통이 되버리는 문제가 있었다...

특히 최근 코로나-19 로 인해 회사를 장기간 못가는 상황에서,

종종 맥북으로 cronjob 을 임시로 돌리는데

자꾸 안돌아가버리는 바람에 찾아보니.. cronjob 은 legacy/deprectated 된거나 마찬가지라

launchdlaunchctl 을 이용하라고 하는것이였다...

그래서 간략하게 plist 를 작성하고 등록하는 것에 대해서 기록해 본다.

WorkingDirectory 를 설정 안해서, 내부적으로 돌아가는 모듈화된 스크립트들이

자꾸 에러나서 한동안 삽질좀 했다는...

여러가지 동작을 하는 작업을 만들고 싶다면,

아래 애플 개발자매뉴얼을 참조하면 응용하기에 쓸만하다.

Launchd 가이드에는 사용가능한 Keyword reference 및 Cookbook 이 제공되어 유용!!

Daemons and Services Programming Guide

Launchd Guide and Cookbook

근데 사실 이거 다 필요없이 앱스토어에서 그냥 launch 로 검색하면

GUI 로 된 다양한 Launchd 관련 도구들이 많다...

즉, 난 개삽질 ㅋㅋㅋㅋㅋ

끝.

posted by mirr

댓글을 달아 주세요

Skills/System 2020. 2. 5. 15:20

한국은 별로 이슈가 없는데,

글로벌에서는 Oracle Unbreakable Linux Network ( 이하 ULN ) 에서 제공하는 패키지관리를

미러링하여 내부에서 사용하는 환경이 많다.

이를 위해 오라클에서는 ULN 에 등록된 서버프로파일에 yum server 로 사용하는지 확인하여

해당 채널 패키지를 미러링하는 서비스도 제공하고 있는데, 간단하게 해당 방법을 알아보도록 하겠다.

1. Prerequisuites

 - Oracle Linux 6 (x86_64) or later
- linux.oracle.com 와 linux-update.oracle.com 에 http/https 접근이 가능해야 한다.
- 당연하게도 Oracle Linux CSI (customer support identifier).

- ULN site 에 등록된 Oracle SSO ID
- 메타데이터 생성을 위한 최소 2G 이상의 공간과 6G 이상의 RAM

- Package 들을 저장하기 위한 충분한 저장공간

- 끝

posted by mirr

댓글을 달아 주세요