dumpdocker: docker 를 활용한 dump 자동분석

레드햇포럼 2014 (http://redhat.events/forum/seoul) 에서 발표한 자료이다.
오픈소스 crash 발생 시 자동으로 분석하여 First Pass 분석 리포트를 생성해 주고,
분석에 필요한 환경을 갖추어 다른 장비에서 덤프 분석을 하는데 도움을 준다.

Docker, 그 기발한 활용법 (dumpdocker – 자동 덤프 분석 툴)

 

Posted in Uncategorized | Leave a comment

Easter Eggs in Ubuntu Linux

Microsoft 사의 소프트웨어에는 알려진 Easter Egg 가 많다. (워드 문서에서 =rand() 를 입력하면 The quick brown fox jumps over the lazy dog. 문장이 반복해서 입력되는 것 등…  )

리눅스에도 Ester Eggs 들이 있는데 Ubuntu 의 aptitude 명령은 다음과 같은 재미있는 Ester Egg를 숨기고 있다. (aptitude: Debian GNU/Linux 패키지 시스템의 텍스트 기반 인터페이스)

aptitude

Posted in Uncategorized | Leave a comment

IT 인프라 엔지니어 후배들에게 권하고 싶은 도서 목록 by 현역 인프라 엔지니어

TCP/IP 소켓 프로그래밍 C(얇지만 얇지 않은)(2판)

이 책은 프로그래밍과 관련된 내용이 주를 이루지만, 소켓 내부의 동작을 잘
설명하기 때문에 이 부분에 초점을 맞추어 읽어도 좋다. 특히, 7장 소켓의 내부 동작부분은 독립적으로 읽어도 내용을 이해하는데 별무리가 없으며 TCP 소켓의 상태 전이와 소켓 버퍼 등에 대해 상세히 설명이 되어 있기 때문에 입문용으로 적합하다고 생각한다.

FIN_WAIT_2, CLOSE_WAIT 의 짝과 TIME_WAIT 이 필요한 이유, 수신/송신 버퍼에 대한 내용 등은 서버관리자 입장에서 네트워크 관련 문제들을 접근할 때 단단한 기본기를 제공해 줄 것이다. 또한 프로그래밍과 관련해서 close( ) 함수가 반환 된 후에 TCP 단에서 이루어지는 정리 과정은 자칫 놓치기 쉬운 디테일까지 챙겨준다.

서버관리자에게 네트워크 관련 이슈는 TCP/IP에 대한 이해와 때로는 네트워크
프로그램에 대한 이해까지 필요한 분야이다. 이 책은 이에 대한 좋은 시작점을 제공해 준다.
성당과 시장오픈소스

소프트웨어의 철학과 개념을 쉽게 풀어 쓴 책. 이 책도 open
source contents 로 웹에서 다운로드 받을 수 있다.
http://korea.gnu.org/people/chsong/cb/

IT 분야에서 일하는 사람이라면 반드시 읽어야 하는 필독서.

미래를 바꾼 아홉가지 알고리즘

이 책에 소개된 알고리즘은 다음과 같다.
1 검색엔진 인덱싱, 2 페이지 랭크, 3 공개 키 암호화, 4 오류 정정 코드, 5 패턴
인식과 인공지능, 6 데이터 압축, 7 데이터베이스, 8 디지털 서명, 9 계산 가능성과 결정 불가능성.

이 책을 읽을 때 3 공객키 암호화를 선택했는데 그 이유는 알고리즘 만큼이나 기발한 설명 방법 때문이었다. 내가 이브 모르게 아놀드와 어떻게 같은 색의 물감을 만들어 내는지 그 방법을 읽었을 때 조금은 소름이 돋았다. 이 책은 소개된 알고리즘 만큼이나 기발한 방법으로 복잡한 알고리즘을 통찰력 있는 안목으로 소개해 주는 책이라는 생각이 든다.

항상 IT 기술을 다루는 우리들도 우리가 다루는 기술에 대해 다른 사람들에게 쉽게
설명해 주어야 할 때가 자주 있다. 이 책을 읽으면서 그런 주제들을 어떻게 쉽게 풀 수 있을지 생각해 보았으면 한다.

구글을 지탱하는 기술

구글의 검색엔진을 구성하는 기술에 대한 overview 를
제공해주는 책이다. Hadoop, 분산파일시스템, MapReduce 등등.. 한번은 들어봤을 주제에 대한 상당히 자세한 설명을 해주는 책이다.

TCP/IP Illustrated Volume 1

Volume 1 ~ 3 까지 3권이 있다. 저자인 故 W. Richard Stevens 님은 이 책외에도
Advanced Programming in the UNIX Environment, Unix Network Programming 등의 책을 적으셨는데 UNIX/Linux 를 다루는 사람들이라면 성서처럼 두고 읽어야 할 책이다. 처음 설명했던 TCP/IP 소켓프로그래밍이 읽기 편한 책이라면 이 책은 참고서처럼 두고 참고할 책.

인프라 엔지니어의 교과서

일단 이책은 얇고 읽기에 편하다. 내용이 얕은 측면이
있지만 IT 인프라의 용어 등에 익숙해 지기에 적당한 책이다. 저자는 일본 라인에서 근무하는 인프라 엔지니어이며, 본인의 경험을 책에 잘 반영하여 IT 인프라 관리를 처음 시작하는 엔지니어를 위한 좋은 입문서를 적었다.

서버/인프라를 지탱하는 기술

이 책을 통해 실제 인프라 기술에 대한 깊이 있는 지식
습득은 어렵다. 그러나 현장에서 어떠한 일이 일어나는지 무엇을 준비해야 하는지에 대한 정보를 얻을 수 있다.

Posted in Uncategorized | Leave a comment

[자료] 오픈스택: 구석구석 파헤쳐보기

얼마 전 페이스북을 통해 오픈스택에 대한 전반적인 내용을 잘 설명해놓은 자료를 접하게 되었다. 근래 오픈스택과 관련한 일들을 접하게 된 터라 관심있게 보았고, 또 관련 자료들을 수집하고 있었기에 더더욱 좋았던 자료였다. 저자인 레드햇의 솔루션 아키텍트인 에츠지 나카이(Etsuji Nakai)씨에게 메일을 보내 PDF 대신 원본을 받아서 한글로 번역했고, 이를 공유해본다.

근데, 알고봤더니 이 분이 쓴 책을 이미 가지고 있었던 것.

전문가를 위한 10년 활용 리눅스 시스템” 🙂

좋은 자료를 공유해주신 에츠지 나카이씨에게 다시 한번 감사의 인사를 드린다.

Thank you again for sharing your great slide about OpenStack, Mr. Etsuji Nakai.

 http://www.slideshare.net/kingcrab/ss-32579693

 http://www.slideshare.net/enakai/open-stack-insideoutv10

Posted in Cloud Computing, Virtualization | Tagged , , | 2 Comments

빨리, 멀리, 오래 가는 법?!

난 인라인 매니아다. 오랜 기간동안 타면서 느낀 게 있다. 처음엔 조금만 타도 허리가 너무 아파서 조금 가다 금새 허리 펴고, 또 한 두 발 옮기다 허리 펴고… 그래서 허리가 안아프면 좋겠다 싶어서 허리 강화 운동을 했다. 허리 근육, 등 근육을 키우려고 엎드려서 상체 들기도 하고, 벽 잡고 별 짓을 다 했다. 그러기를 한참… 어느 순간부터 허리가 아프지 않았다. 근데, 이젠 다리가 아픈거다. 앞에 쌩쌩 달리는 회원들을 보고, 욕심이 생겨서 빨리 가보려다 금새 허벅지, 종아리 등이 굳어버려 어기적 댔다. 그 때부터 스쿼트, 계단 뛰어오르기, 발목 접었다 폈다 등 별 짓을 다 했다. 이젠 뭐… 하고 내 달렸더니 심장이 터질 것만 같더라. 몸이 바쳐주니 이젠 숨이 너무 차서 못 달리는… 그 때부터 달리기도 하고, 심박수를 꾸준히 올렸다 내렸다 조절해가며 운동했다. 이젠 왠만큼 달려도 숨이 덜 차는 시기가 온 순간… 허리가 다시 아프기 시작했다! 아, 이게 어느 한 부분만 단련해선 안되는구나. ㅜㅜ

며칠 전에 다녀 온 오픈스택 데이 행사에서 강사 한 분이 그런 얘길 했다. 오픈스택을 비롯해서 오픈소스를 접하다 보면, 그 자체 아키텍처나 기술들을 이해하고 숙달하는 것도 중요하지만 결국 그 기반이 되는 리눅스의 최신, 고급의 기술들에 대한 이해가 필요해진다고. 결국 리눅스, 오픈소스 분야도 어느 하나만 파고 들어봐야 멀리, 빨리 가지 못하겠다 싶다. 허리도 중요하고, 허벅지나 종아리 힘도 필요하고, 무엇보다 심장이 튼튼하게 받혀줘야 오래 가지 않겠나.

할 게 너무 많다. 젠장.

Posted in Story | Tagged , | Leave a comment

[단상] 오픈소스를 바라보는 불편한 시각

요근래 부쩍 IT 미디어나 기업 내에서 오픈소스 도입에 대한 목소리가 커지고 있는 듯한 느낌이다. 언제쯤 메인 스트림에 포함될까 싶던 리눅스는 이제 더이상 마이너가 아니고, 클라우드 컴퓨팅이나 빅데이터 얘기가 나오면서부터는 너도나도 오픈소스에 대해서 이야기하고 있다. 수 많은 오픈소스 프로젝트들 중에 지금 사람들의 입에 오르내리고 있는 대표적인 것들은 트렌드를 반영하는 듯 “하둡”, “오픈스택”, “리눅스” 등일 것이다. 몇몇 대기업들은 오픈소스를 성공적으로 도입해서 비즈니스를 이끌어 가고 있지만, 아직 대다수의 기업들은 “안정성”, “기술지원”, “사례” 등을 들먹이며 도입을 망설인다.

여기저기서 “오픈소스”에 대해 말하고 있고, 오픈소스 도입이 지금의 IT 트렌드를 빠르게 쫓아갈 수 있는 최선의 방법임에도 망설이는 이유는 무엇일까?

오픈소스 도입의 실패
기업들이 오픈소스 도입을 전혀 시도하지 않은 것은 아니다. 이미 여러 해 전부터 도입을 해왔고, 또 지금도 많은 업무에 적용해 사용하고 있다. 하지만, 여기에는 기업 내부에서 정한, 또는 암묵적인 한계가 있다. 일부 웹 서버와 중요도가 떨어지는 서버들을 대상으로 한다는 것이다. 중요도가 높은 서비스들에 대해서는 여전히 유닉스나 윈도우를 채택하고 있다. 오픈소스의 대표적인 운영체제인 리눅스가 주요 업무에 채택되지 않는 이유들은 앞에서 언급한 “안정성”, “기술지원”, “사례”가 부족하다는 것이다. 물론 이 외에도 여러가지가 있겠지만, 유닉스 서버 수준의 안정성을, 기술지원을 받을 수 있는가와 국내 다른 기업들이 사용하고 있는가가 중요한 도입 결정의 요인이기 때문이다. 아시다시피, 국내에서 해외 사례는 큰 의미가 없다는 것도 문제다. 이러한 이유들 때문에 사용 중인 리눅스 서버들이 아무런 문제없이 잘 운영되고 있다하더라도 기업 내 다른 서비스들로 확산되지 않는다. 하물며, 장애라도 몇 건 나고난 후라면 더이상의 리눅스 서버 도입은 고려하지 않는다.

리눅스 서버가 확산이 되지 않는 또다른 문제 하나는 역량의 부족이다. 많은 수의 리눅스 서버를 운영하고 있지만, 리눅스를 아는 사람은 없다고 한다. 리눅스 운영을 맡고 있지만, 시스템 관리자에게 할당된 문서 작업 등의 업무가 많기 때문에 실제 작업은 외주 업체에서 수행하는 경우도 많다. 물론 기본적인 부분은 시스템 관리자가 처리하겠지만, 큰 작업이라도 하게 되면 외주 업체나 벤더가 테스트 작업부터 실제 적용까지 수행한다. 큰 기업일 수록 이런 사례가 더 많다. 한 명의 시스템 관리자가 관리해야하는 서버의 대수도 많거니와 특정 운영체제만을 담당하는 것이 아니라 전체를 담당하다보니 깊은 수준의 지식보다는 넓고 얕은 지식만 쌓을 수밖에 없는 경우도 있다. 그러다보니 리눅스 서버는 언제나 뒷전으로 밀려날 수 밖에 없는 듯.

IT 시장의 시각: 트렌드, 패러다임의 변화
IT 시장에서 오픈소스를 바라보는 시각은 어떤 것일까? 이미 오래 전부터 새로운 기술의 개발 환경과 상용 소프트웨어 벤더들의 기본 개발 및 테스트 환경은 리눅스 서버에 맞춰져 있었다. 그런 이유로 최신의 기술과 IT 트렌드를 이끄는 여러 솔루션들은 리눅스와 오픈소스 환경에 최적화 되어있다고 봐도 과언이 아니다. 지금의 클라우드 컴퓨팅과 빅데이터 플랫폼을 도입하기 위해서는 리눅스와 오픈소스 기반이 아니면 여러가지 고려사항들 때문에 골치가 아플 지경이다. 이미 리눅스와 오픈소스 기반의 컴퓨팅 환경은 대세가 되었고, IT 운영 환경의 패러다임을 변화시키고 있다.

기업에서의 시각: 비용절감
하지만, 그 IT 시장의 일원으로 있는 기업들의 시각은 조금 다른 듯 하다. 기업의 임원들은 오픈소스 도입에 대해 검토하라 지시하지만, 그렇게 시작된 오픈소스 도입 검토에는 도입해야할 것이 정확히 “어떤” 오픈소스인지 또 어떤 분야인지에 대한 방향은 없다. 예를 들어, 빅데이터의 경우 빅데이터 플랫폼 구축을 위해 오픈소스 도입을 검토한다고 하지만, 그 빅데이터 플랫폼의 활용이 모호한 상황이다보니 진전이 없다. 또한 “공짜”의 인식이 머리 속 깊이 자리잡고 있다보니, “오픈소스를 활용한 비용절감 방안”과 같은 제목의 문서가 만들어진다. 리눅스 서버를 도입하면 무조건 비용이 절감되고, 오픈소스는 그냥 갖다 쓰면 되고… 여기에는 몇 가지 조건이 붙는다. 비용이 절감되어야 하지만, “안정성은 우수”해야하고, “기술 지원은 상용 유닉스 수준”이어야 하고… 게다가 이를 관리하는 시스템 관리자들은 여전히 외주 업체의 도움을 받아야 하는.

오픈소스: 역량의 내재화와 기술 선도의 기회
오픈소스는 “비용절감”의 방안으로 도입하려 한다면 많은 부분에서 실패로 이어질 가능성이 크다고 생각한다. 인정할 것은 인정하자. 리눅스에 대한 안정성이 예전에 비해 굉장히 높아진 것은 분명한 사실이지만, 아직까지 부족한 부분이 많다 생각한다. 오픈소스 프로젝트의 많은 결과물들도 그러하다. 이들에 대한 기술지원을 담당하고 있는 서비스 업체들도 예전에 비해 많이 늘어나고 기술력도 높아진 게 사실이지만, 여전히 대형 글로벌 벤더들이 수행하고 있는 기술지원에 비하면 아직 갈 길이 멀다. 그렇기 때문에 경우에 따라서는 오히려 더 많은 비용을 지불해야할 지도 모르는 일이다. 오픈소스 도입을 “비용절감”에만 초점을 맞추고 바라본다면 실패할 가능성이 아주 높다. 오픈소스를 도입해서 내부 기술력을 확보하고, 이를 통해 시장에서의 기술을 선도한다면 자연스레 따라오는 것이 “비용절감”이라는 “효과”일 것이다.

리눅스를 비롯하여 도입 및 검토하는 여러 오픈소스들에 대한 개발, 구축, 운영과 지원에 대한 역량을 내부에서 어느 정도 확보하는 것이 매우 중요한 포인트라 생각한다. 물론 처음 도입하는 시점에서는 모든 부분에 대한 역량 확보가 어려운 일일테지만, 도입 검토 시점에서 역량 강화 및 확보 방안에 대해서도 다뤄서 오픈소스 기반의 서비스를 지속적으로 확대해 나가는 것이 필요하다고 생각한다. 그 과정에서 쌓이는 Know-how를 오픈소스 커뮤니티에 공유하고, 개선해나가다 보면 해당 오픈소스 프로젝트를 리드해나갈 수 있는 기회가 마련될 것이다.

오픈소스를 도입해 사용한다는 것은 기업으로 하여금 최고의 IT 기술력을 확보하고 IT 시장을 선도할 기회를 가진다는 생각이 바탕에 깔려야 비로소 성공할 수 있지 않을까.

Posted in Story | Tagged , , , | 6 Comments

oVirt Korea User Group 첫 번째 세미나 참석

Image

2014/2/8 (토) 14:00 ~ 17:00 강남토즈타워점에서 oVirt Korea Group 첫 번째 세미나가 열렸다. oVirt 는 리눅스상에서 KVM(Kernel Virtual Machine) 하이퍼바이저를 관리하는데 사용할 수 있는 통합된 프로젝트들의 모음인데 현재 3.3.3 버전이 release (2013/2/3) 되어있으며, 3.4 버전의 (베타버전) 테스트가 진행 중이다. 3.3 –> 3.4 의 업데이트가 좀 늦은 감이 있으나 최근 가상화의 흐름을 본다면 속도 조절을 하고 있다고 봐도 될 듯 하다. 발표자인 Red Hat Korea의 이 차장님에 의하면 3.2 버전부터 안정성이 어느정도 확보되었다고 한다.

이 모임은 oVirt 홈페이지에도 등록이 되어 있을 만큼 관심도 많았고 참여 인원도 의외로 많았다. (http://http://www.ovirt.org/Home)

oVirt/RHEV Technical Community Event

Date: Feb 8, 2014
Location: Seoul, South Korea
Exploring oVirt’s big potential in cloud computing in despite its current focus on traditional IT workloads.

위의 소개에도 잠깐 언급이 되어 있는데 traditional IT workload 환경에서 가상화를 관리하는 도구로서의 가능성이 세미나 때에도 언급되었다. 전반적으로 OpenStack 과의 positioning issue 가 있으나 그 가능성은 충분하여 관심을 가지고 익혀 두는 것이 좋을 것으로 생각된다.

세션 중 Red Hat Korea 의 허부장님의 “oVirt/RHEV API를 이용한 개발 방법” 내용은 비슷한 세대의 IT인의 고민과 도전을 공유할 수 있어서 정말 유익했고 세미나 후의 식사자리도 정말 유쾌해서 주말 내내 기분이 좋았다. 이번 세미나는 얻은 것이 정말 큰 것 같다.

앞으로 oVirt 의 발전이 어떻게 진행되는지 살펴보는 것도 좋은 관전 포인트라 생각하며 oVirt 아키텍처를 간단히 소개한다.

ImageoVirt Architecture quoted from www.ovirt.org  

ovirt-engine

초기에 C# 으로 구현된 것을 Red Hat 에서 Java (JBoss) 기반으로 변환하였다. Network, storage, nodes, ISO image 들을 구성 할 수 있도록 해주며 command line interface tool (ovirt-engine-cli) 과 RESTful API (ovirt-engine-api)를 제공하여 개발자들이 관리 기능을 쉘 스크립트로 통합할 수 있도록 해 준다. Python wrapper 가 제공 된다.

VDSM

Virtual Desktop and Server Management 데몬이 oVirt 가 관리하는 nodes에서 동작하며, nodes 에서 동작 중인 VM 들을 원격으로 deply, start, stop, monitor 하도록 해 준다.

ovirt-node

VM을 실행하기에 (딱) 충분한 O/S. 일반적인 linux 배포판을 (VDSM과 다른 dependency들을 설치하여) ovirt-engine에 의해 관리되는 oVirt node 로 변환 가능하다. 한 가지 재미있는 것은 oVirt node는 stateless 로 되어 있다는 점이다. 이 개념을 이해하지 못한다면 oVirt 에 익숙해지기 어렵다는 발표자의 주의가 있었을 만큼 중요한 개념이다. 이렇게 stateless 로 디자인된 이유는 (1) Local disk에 node image를 설치 하지 않고 node 를 구동하기 위함 (2) 구성이 지속되지 않도록 (3) 통신을 위한 일종의 보안을 제공함 등이라고 한다.

dwh 와 reports

ovirt-engine을 위한 reports와 data warehouse components는 선택사항이며, 따로 패키징되고 개발되었다.

그 외의 많은 oVirt Subprojects 들이 있는데 여기에서 확인 가능하다.
http://http://www.ovirt.org/Subprojects

위에서 소개한 내용 중 stateless 내용이 나오는데 부연 설명하자면, nodes (또는 host) 상에서 동작하는 VM 에는 아무런 정보가 저장되지 않는다는 것이다. 그럼 그 정보는 어디에 저장이 되는가? storage node에 저장이 된다고 한다. 여기에는 VM과 관련된 image 들과 ISO 들이 저장된다.  그래서 oVirt Architecture 를 이야기 할 때 크게 3가지 구성요소로 설명을 하기도 한다. (1) ovirt-engine (2) VM을 구동할 ovirt-nodes (3) storage nodes (VM state/정보 저장)

ArchitectureoVirt Architecture quoted from http://www.ovirt.org   

Posted in oVirt | Tagged , , | 6 Comments

Copy Avoidance

HP-UX 11i v3의 ndd 설정에 다음과 같은 내용이 있다.

socket_enable_ca:

When set to 1, enables the socket copy avoidance optimization for
send system calls. When set to 0, copy avoidance is disabled.
This feature can improve the performance of applications that send
large data buffers over a socket. Copy avoidance is supported only
on Integrity systems. The value returned for this tunable will
indicate whether copy avoidance is supported and in use.
[0-1] Default: 0

이 값을 1 로 설정하면 send(2) system call 에 대한 copy avoidance 최적화를 통해 성능향상이 가능하다는 설명이다.

여기서 copy avoidance 가 무엇을 이야기 하는지 개념적으로 살펴 보자.

Image

위 그림은 서버에서 동작 중인 네트워크 애플리케이션이 disk 에서 데이터를 읽어 네트워크 카드를 통해 송신하는 과정 중 데이터 흐름을 간단히 표시한 것이다.

file cache, 애플리케이션 버퍼(위 그림에서 Server buffer), 소켓 버퍼(Socket buffer)를 통해 NIC 로 전달되는 여러 번의 copy 는 메모리 및 I/O bandwidth를 사용함은 물론, copy 시의 checksum 비교 등 시스템 자원을 사용하게 된다. 두 말할 필요도 없이 copy 횟수가 줄어든다면 (copy avoidance 최적화를 통해) 성능향상이 가능할 것이다.

socke_enable_ca 를 1로 설정하는 경우 애플리케이션의 변경 없이 VM(Virtual Memory) subsystem 의 도움으로 User space 에서 Kernel space 로의 copy (위 그림에서 copy #3) 를 피할 수 있게 된다. send(2) 시스템 콜 호출 시에 이런 동작이 일어나게되므로 outbound 데이터가 소켓(socket) 을 통해 나갈 때 성능 향상이 있을 것이다.

Posted in Network | Tagged , | 4 Comments

Introduction: Why fin_wait_2?

FIN_WAIT_2 is TCP socket status which is waiting for final FIN from the peer. This is the status of whom completes its job and just waits job completion of the other side.

However, we usually observe many FIN_WAIT_2 sockets drain file descriptors and it consequently causes troubles due to lack of resources. What is the problem? Out of running of resources caused by too many FIN_WAIT_2 sockets or not coming FIN from the peer side?

It is not only about network stuff. In computer area, there are so many similar symptoms and reasons like too many FIN_WAIT_2 sockets we can not understand unless we understand under the hood of the knowledges. I would like to discuss these stories.

Posted in Story | Leave a comment