레이블이 freebsd인 게시물을 표시합니다. 모든 게시물 표시
레이블이 freebsd인 게시물을 표시합니다. 모든 게시물 표시

2016년 11월 14일 월요일

MeetBSD CA 2016 참석기


MeetBSD CA는 2008년부터 2년마다 열리는 행사로 2014년 산호세의 웨스턴 디지탈사에 이어 올해는 BSD의 고향이라 할 수 있는 캘리포니아 버클리 대학교의 Clark Kerr 캠퍼스 내에 있는 Krutch Theatre에서 열렸습니다.


MeetBSD 행사는 기술 컨퍼런스라기 보다는 유저그룹이 모이는 행사에 가까운데, 지난번에 비해서는 아주 자세한 기술 이야기는 줄고 그보다는 현황에 대한 업데이트라든가 언컨퍼런스 형태의 모임 위주로 진행이 되었습니다. 아무래도 기술적인 이야기는 EuroBSD, BSDCan, AsiaBSD에서 주로 다루고 있고, 이름에서도 알 수 있듯이 지역 행사에 더 가깝기 때문입니다.

그중 몇몇 세션에 대해서 살펴보면, (놓친 것도 있습니다)

Day 1


Devin Teske, "Netgraph vs epair+if_bridge in the context of vimage jails; Using and managing vimage jails"

jail 안의 networking (VIMAGE 사용)에 대한 이야기입니다. 기존의 jail 방식에 추가로 VIMAGE커널을 하나 구축해서 jail 내에서 독립적인 네트워킹을 할 수 있는데 netgraph 와 if_bridge 두가지 방법으로 호스트와 브리지 형태의 네트워크를 구축할 수 있네요.

Krste Asanovic, "RISC-V: Instruction Sets Want To Be Free"
RISC-V는  CPU 아키텍처 책에도 나오는 RISC ISA (Instruction Set Architecture) 의 다섯번째 에디션으로 오픈 소스 형태로 개발이 되고 있습니다. Intel의 IA-32, IA-64, ARM의 ARM v7 등이 많이 쓰이는 ISA의 대표적인 예인데, 상용이기도 하고 오래 되다 보니 한 명령이 너무 많은 일을 수행하는 경우도 있다고 합니다. RISC-V는 간단하고 확장 가능한 아키텍처를 지향하고 있고, 실제 하드웨어와 컴파일러를 위해 여러 업체나 오픈소스 프로젝트와 협력하고 있다 합니다. FreeBSD와 같은 오픈 소스 OS는 이런 오픈 아키텍처 위에서 돌아가는데 매우 적합 하겠죠.

Sean Chittenden, "Using FreeBSD in the Cloud, Development to Prod"

HashiCorp (consul, terraform 등으로 유명하죠) 의 Sean 씨는 FreeBSD를 클라우드상에서 이용하는 방법에 대해서 GCE기반으로 설명을 해 주었습니다. 요즘에는 다수의 서버나 VM을 다루는 일이 많아 졌으므로 단순히 OS만 설치하는게 아니라 어떻게 설정 관리를 하는지도 매우 중요합니다. 

Matt Ahrens, "History of ZFS and OpenZFS"

Matt 씨는 선마이크로시스템즈에서 ZFS를 개발한 핵심 개발자 중 한명인데, 2001년 이후 ZFS의 역사에 대해서 발표를 하였습니다. 처음에는 솔라리스용으로 개발하다 선이 오라클로 인수되고 여러가지 역사를 거치면서 ZFS는 2011년 오픈소스화되어 지금은 FreeBSD에서 매우 밀어 주는 파일시스템이 되었고 FreeNAS 등의 스토리지나 기타 몇몇 스토리지 어플라이언스에서도 사용되고 있습니다. zfs는 FreeBSD 궁합이 잘 맞고 부트 파일시스템으로도 이용 가능하기 때문에 기존의 FFS를 완전히 대체할 수 있습니다.
리눅스에서도 ZFS on Linux가 있고 (라이센스 이유로 커널에는 정식 포함은 안되고 있습니다) Ubuntu 가 ZFS를 기본 채용한다고 해서 화제가 되기도 하고요. 처음부터 상용으로 개발이 된 것이라 매우 안정적이고 (대신 메모리를 좀 먹는데 요즘에는 큰 문제는 안됩니다) 매우 확장성이 높은 것이 특징입니다.

Michael Dexter, "Not Only is BSD Coming Home to Roost But so is the bhyve Hypervisor!"

FreeBSD에는 가상 OS를 쓸 수 있게 해 주는 네이티브 하이퍼바이저로 bhyve가 있습니다. Michael 씨는 bhyve 프로젝트의 창시자이자 리더인데, bhyve 프로젝트의 역사와 현황에 대해서 발표를 하였습니다. 지금은 게스트 OS로 FreeBSD 뿐 아니라 리눅스, 윈도우 등도 모두 사용 가능하고 게스트 콘솔용 RDP 서버도 지원하는 등 대부분의 하이퍼바이저에서 지원하는 기능을 모두 포함하고 있습니다. 향후에 큰 발전이 기대되는 프로젝트이기도 합니다.

Day 2

Jordan Hubbard, "FreeNAS 10: The Challenges of building a modern Enterprise Storage Appliance on FreeBSD"

FreeBSD 프로젝트 창시자이자 현재는 iXSystems의 CTO인 Jordan씨가 FreeBSD 기반의 스토리지 OS인 FreeNAS 10 에 대해서 소개를 하였습니다. UI가 잘 되어 있고 ZFS기반인 것이 특징입니다. FreeNAS 프로젝트 자체도 오픈 소스이니 집이나 회사에서 스토리지 서버 만들 때 쉽게 활용할 수 있습니다. 특이하게 UI를 통해서 bhyve기반의 VM이나 이를 활용해서 Docker 컨테이너를 만드는 데모 (리눅스 게스트 위에서 돌아가는)도 보여 주었는데, Docker와 같은 컨테이너 기술은 *BSD가 아직 부족한 분야 이기도 합니다. jail 이 오래전부터 있어 왔지만, Docker 는 널리 사용되는 점도 있고 패키징이나 업데이트등의 관리가 용이하다는 것이 더 좋은 점이겠지요.

아무래도 Jordan 씨는 BSD관계자라면 대부분 아는 사람이다 보니 자기소개 없이 시작했는데, 나중에 '자기 소개 부탁 드립니다'라고 물어 보는 사람이 있어서 다른 청중들이 웃기도 했습니다.

Kris Moore, "Unveiling TrueOS"

PC-BSD는 FreeBSD 기반의 데스크탑 OS입니다. 이번에 이름을 TrueOS로 바꾸었는데, 기본적으로는 FreeBSD를 더 데스크탑에서 이용하기 쉽게 다시 패키징하고, 관리 UI를 제공하고 있다고 보면 됩니다. 노트북 등에서 사용할 BSD를 선택할 때에는 FreeBSD에서 시작하기 보다는 PC-BSD (이제는 TrueOS) 에서 시작하는게 아무래도 편리한 점이 많습니다. GUI 설치도 가능 하고요. 이름을 바꾸게 된 것은 BSD기반이기는 하지만 데스크탑과 서버를 모두 포괄하는 범용 OS로 나가고자 하는 의지가 있지 않나 싶습니다.

새 버전에는 GNOME/KDE/XFCE와 유사한 X윈도우 기반 데스크탑 환경인 Lumina Desktop 이 기본이 되었고 (기존에는 GNOME/KDE/XFCE 등을 고를 수 있었습니다), 시스템 설정 UI가 SysAdm 으로 변경되고 API 서버로도 제공, FreeBSD 릴리즈를 따라가는게 아니라 -CURRENT를 따라가는 업데이트 시스템, base의 pkg화 등 내부적인 변화가 많이 있습니다. 데스크탑에서의 요구를 반영하다 보니 FreeBSD에서는 설치 단게에서 기본적으로는 제공되지 않는 사운드 시스템(PulseAudio)이나 몇몇 패키지의 옵션 변경등도 추가되어 있습니다.

Allan Jude, ZFS Discussion Panel

Allan씨는 Michael Lucas 씨와 함께 FreeBSD Mastery: ZFS를 쓰는 등 FreeBSD 활동이 매우 활발한 분입니다. 관련 개발자들과 같이 하는 Q&A였습니다.

Kylie Liang, PCI pass-thru

마이크로소프트는 자사의 Azure 클라우드 서비스에 FreeBSD를 기본 제공하는 등 리눅스 이외에도 오픈 소스 OS 지원을 하고 있습니다. 이 발표는 MS의 Hyper-V 하이퍼바이저의 PCI Passthrough 기능을 FreeBSD가 지원하게 되면서 호스트에 있는 하드웨어 (네트워크 카드 등)을 직접 하드웨어 수준에서 접근 가능하게 되었다는 내용 입니다. SR-IOV도 지원 예정이라고 하네요.


그외 FreeBSD 10.3이 Azure에 올라 왔고, OpenBSD도 예정이라고 하네요.


또한 중국에서 처음으로 BSD Meetup를 열 예정이라고 합니다.


이번 MeetBSD CA 2016에서는 최근에 많이 화제가 되었던 zfs, bhyve, PC-BSD, FreeNAS등의 주요 프로젝트는 대부분 다루어지긴 했습니다만, FreeBSD(또는 그 기반 OS)에 대한 내용이 대부분이었고 NetBSD나 OpenBSD관련 내용이 없던 것이 조금 아쉬웠습니다. 그외 각 프로젝트의 역사 등에 대한 세션도 유익 했고, 마이크로소프트가 지속적으로 BSD에 대한 지원을 하고 있는 점도 인상적이었습니다. 알게모르게 많은 발전이 이루어지고 있는지라 많은 공부가 되었습니다. VIMAGE커널이나 bhyve는 저도 써본적이 없는데 한번 시도해 봐야 겠고요.

오픈소스의 역사를 살펴 보면 OS가 매우 큰 부분을 차지 하지만, 요즘에는 서버 쪽에서는 클라우드 기반 서비스, 빅데이터, 클라이언트는 웹이나 모바일 개발의 비중이 늘어 나면서 OS자체의 관심은 상대적으로 줄어든 게 아닌가 합니다. 또한 클라우드나 빅데이터의 경우에도 OS의 선택은 대부분 리눅스가 되다 보니 아마존, 마이크로소프트, 구글 등의 큰 벤더 이외에는 BSD 등을 기본 제공해 주는 클라우드는 많지 않은 것이 현실입니다. 그런 점에서 보다 적극적으로 클라우드, 빅데이터, 컨테이너 등에 대한 지원이 더 필요하지 않을까 싶습니다.






2014년 11월 2일 일요일

MeetBSD CA 2014 참석기

MeetBSD는 세계적으로 열리는 BSD사용자의 모임입니다. 심각한 회의라기 보다는 각자 가벼운(또는 무거운) 주제로 발표 하고 사용자 간의 커뮤니케이션을 하는 행사입니다.

MeetBSD CA는 주로 실리콘밸리 지역에서 열리는데 2010년에 Hacker Dojo 에서 열린 행사에 참석한 적이 있습니다만 딱히 재미는 없었는지라... 2012년은 참석 못하였고, 이번 2014년 행사는 San Jose 남쪽에 있는 Western Digital (네 하드드라이브 만드는 그 회사) 사무실에서 열렸습니다.


일정은 이틀간 오전에 세션 두개 오후에 세션 두개 그리고 언컨퍼런스 형식으로 이루어집니다.

첫째날 - 11/1/2014

 

Rick Reed, “WhatsApp: Half a billion unsuspecting FreeBSD users” 

첫 세션은 WhatsApp 입니다. WhatsApp 은 최근의 여러 IT 서비스 중에서 FreeBSD로 돌아가는 가장 큰 예라고 할 수 있겠습니다. 약 6억 정도의 가입자가 있다고 하네요. 아무래도 창업자가 야후! 출신이라는 점도 작용하였을 것 같습니다만.

처음에는 오픈소스의 XMPP서버를 이용하여 서비스를 만들다가 이후에 erlang 기반의 독자 구현으로 옮겨 갔다고 합니다. OS는 FreeBSD 7 에서 시작하였다가 지금은 FreeBSD 9.1 ~ 9.3 을 사용하고 있고 10은 아직 테스트 중이라고 하네요. 서버는 약 800대 (채팅 및 사진/비디오 서버 포함)라고 합니다. 규모에 비해서는 단촐해 보이는데 서버를 꽤 한계까지 끌어서 쓰고 있는 것으로 보입니다. 동접이 140m (1.4억) 이라고 하니까 어마어마하군요.

재미있었던건 Q&A시간에 누가 설정관리 도구를 어떤 걸 쓰는지 물어 보았었는데 (흔한 대답은 puppet, chef, ansible, saltstack 같은 것입니다만) 딱히 쓰고 있지는 않고 make? 라고 하더군요 :) 서버가 몇대 안되는 관계로 (대당 open file 개수가 수백만인걸로 유명하니) 거의 수동 관리하고 있다고. 테스트도 대부분 1대 서버 정도를 실제 업데이트해 보고 문제 생기면 바로 롤백한다고 합니다. 규모에 비해서는 좀 심심한 대답이더군요. 누가 암호화에 대한 걸 물어 봤었는데 저장까지는 듣지 못했지만 초기에는 SSL을 적용 했다가 round trip 문제로 AES기반으로 별도 프로토콜을 정의해서 쓴다고 합니다. 그래도 SSL이 쓰이는 곳에 대해서는 erlang 의 SSL구현은 그리 좋지 않아서 stud 를 쓰고 있다고 합니다.

Jordan Hubbard, “FreeBSD: The Next 10 Years”

jkh 의 세션이었는데, 올해로 21년을 맞은 FreeBSD를 뒤돌아 보면 처음에는 지금의 모습에 대해서 예상하지 못한 것들이 많이 있었다고 하는군요. 따라서 앞으로 10년을 예상하는건 매우 힘들지만, 최대한 레고 블럭과 같이 조립 가능하고 유연한 OS가 되어야 하지 않을까 하는 아이디어들을 몇 이야기 했습니다. 그 중의 하나가 시스템을 정의할 수 있는 하나의 설정 파일인데, 이런 아이디어들이 대부분 OS X에서 구현되어 있다는 건 재미있는 일이더군요 (launchd 나 plist 구조 등).

사실 유닉스(의 변종)이 현재의 모바일 기기를 지배하고 있는 것이 현실이므로 (안드로이드나 iOS나 모두 유닉스 기반 입니다) FreeBSD도 그것에 맞추어 변화 하는 것이 맞겠죠.

Alex Rosenberg, "Meet PlayStation 4" 

SCE에서 나와서 발표 하였는데, PS4는 FreeBSD커널 기반으로 만들어져 있습니다. 하드웨어가 x86 기반이기도 하고요. 물론 FreeBSD가 그대로 부팅하는 것은 아니고, 커널 부팅 이후에는 일반적인 유닉스 부팅 순서를 따르는게 아니라 그 이후에는 매우 독자적인 방식이라고 합니다. 게임콘솔에서 필요한 기능을 맞추기 위해서 CPU스케줄러 등도 일부 변경 하였다고 하네요. 개발 환경도 clang 등을 사용할 수 있게 되어서 개발자 들에게 호평이라고 하는데... 게임개발자들은 대부분 윈도우 기반 개발자들이라, 비주얼스튜디오용 clang 플러그 인 등 개발자를 위한 배려가 상당히 되어 있는 것으로 보입니다. 영상을 몇 틀어 주었는데 언차티드4는 그렇다 치고 테슬라가 주인공인 게임은 좀 재미있어 보이더군요 :) (찾아보니 The Order: 1886 이군요) PS3시대와는 달리 모두 실기에서 바로 캡처하였다는 걸 강조하는 점이 재미 있었습니다. 그리고 이런류의 하드웨어는 기본적으로 10년을 보고 만들기 때문에 게임기 수명의 후반이 되면 게임개발자들이 기계를 철저하게 분석해서 생각도 못해본 품질의 게임을 만들어 낸다고 합니다. 가령 지금의 PS3같은 상황이겠죠.

디스크 뽀개기(?) 행사

FreeBSD 기반의 FreeNAS 스토리지를 만드는 iXsystems에서 나와서 하드 4개 x NAS 두개가 연결된 디스크에서 직접 FreeBSD를 빌드 하면서 디스크를 하나씩 빼보는 (8개 있으니까 구성에 따라 다르지만 7개까지는 뺄 수 있겠죠) 행사를 하였습니다. 빼낸 디스크는 망치로 깨는 퍼포먼스도... (아 회장이 Western Digital 이어서 그런지 디스크는 Seagate...)


역시 하드 8개를 다 제거 하니 빌드가 멈추더군요. :)

언컨퍼런스

여러가지 주제가 있었는데 zfs 이야기하는데 가 봤습니다. lz4 compression 에 대해서 물어 봤는데 그냥 켜 두어도 별 문제 없다고 하네요. 어차피 early abort가 있어서 압축이 안될것 같으면 그냥 저장한다고 하고, 최근 버전인지 모르겠는데 두번 이상 압축하면 더 줄어드는 효과가 있어서 한번 지정해 보아도 좋을 거라고 합니다.

Kirk McKusick, “A Narrative History of BSD”


BSD와 UFS 등으로 유명한 Kirk McKusick (사실 BSD행사의 단골 손님입니다) 이 BSD의 역사에 대해서 슬라이드 없이 (손에 들고 있는건 노트...) 옛날 이야기를 하시는 자리. 오늘의 주제는 TCP구현에 관한 BSD vs BBN 및 기타 에피소드였습니다. 자세한 내용은 "오픈 소스" 이북 (무료로 볼 수 있습니다)의 2장을 참고 하시면 되겠습니다. 이분은 이런 무용담(?) 계열을 이야기하길 꽤 좋아하시는 것 같네요. :) (vs AT&T를 다음에 듣고 싶네요. 육성으로)


둘째날 - 11/2/2014

이틀째는 아무래도 첫째날보다는 좀 루즈한 분위기인듯.

Brendan Gregg, "Performance Analysis"

각종 성능측정에 대한 이야기였는데, FreeBSD도 dtrace 등의 여러가지 다양한 측정 도구를 제공하고 있지요. 이분의 홈페이지와 블로그를 잘 읽어보면 좋은 정보를 많이 얻을 수 있습니다. 발표 중에 나왔던 이 페이지에 정리가 잘 되어 있습니다.

Corey Vixie, "Web Apps on Embedded BSD..."

사실 BSD와 직접 관련 없어 보이기는 한데 FreeNAS상에서의 웹 UI개발에 대한 이야기 입니다. 상당히 최근에 유행하는 각종 UI 라이브러리를 써서 확장 가능한 UI를 만들어 보려고 하는 것 같더군요. Facebook 의 React 를 쓰고 있다고 합니다. 특이한 점은 이러한 라이브러리도 대부분 BSD라이센스를 채용하고 있다는 것 입니다.

BSD보급을 위해 필요한 것들: 브레인스토밍

BSD보급을 위해서 각자 생각하는 의견을 교환하는 시간이 있었습니다. 그중에 마음에 드는 것은 Coursera 에 강의 올리기..

Kip Macy, Iflib, libukern

iflib는 네트워크 드라이버에 들어가는 공통 기능의 라이브러리입니다. 각종 드라이버에 들어가는 라인 수를 크게줄일 수 있다고 하네요. libukern은 사용자 모드에서 BSD커널을 돌리기 위한 라이브러리입니다. User Mode Linux나 NetBSD RUMP같은 것을 생각하면 됩니다.

Allan Jude, UCL as a system configuration language


UCL(libucl에서 상세한 문법을 볼 수 있습니다)은 pkg(8)의 설정파일 등을 지정하는 언어인데 이것을 이용하여 첫날 jkh@가 이야기 하였던 공통 설정 파일을 만들고자 하는 시도 입니다. 이런 용도면 JSON, YAML, XML등이 있는데 이런것 보다 사람이 다루기 쉽고, JSON으로 변경하기도 쉽다는 장점이 있습니다. 현재 nginx 등에서 사용되는 설정 파일 형식을 생각해 보면 쉽습니다. bhyveucl 이나 uclcmd 등을 참조해 보시면 됩니다.


끝으로

전반적으로 매우 BSD스러운 행사였습니다. BSD스럽다는건... 이쪽에서 하는 모임의 경우 나이 많은 분들도 많고, 아무래도 OS라는게 신규로 이 커뮤니티에 들어오려는 사람들이 접근하기에는 쉽지 않은 주제이다 보니 점점 커뮤니티 자체가 그대로 나이를 먹고 있다는 문제점이 있지요. 그래서 이런저런 대외 활동을 하려고 하는 것 같습니다만 이 사람들 자체가 그런 성향이 아닌지라... 그리 효과적이지 않아 보입니다.

제가 처음에 FreeBSD를 접할 때 에는 집에서 쓸만한 Unix 가 필요하다는 것 때문이었고 이후에 써야 되니 X윈도우도 설정해야 하고 한글 입출력도 해야 하고 기타 등등을 하다가 나중에 논문도 쓰고 졸업하고서는 회사 일에도 쓰게 되고 등등이었는데, 지금은 사실 집에서 쓸만한 Unix가 필요하면 그냥 맥북 쓰면 그만이고 고민할 것도 거의 없죠. 회사나 서비스에 쓸 경우에도 대부분의 경우 Linux 만 쓰면 되기 때문에 선택에 대해서 굳이 고민할 필요가 없고 주위의 사람들도 대부분 Linux면 만족하고 있고 사실 Linux 인지도 이제는 거의 중요하지 않는 상황이 되었습니다. 즉 이전보다는 OS자체에 대해 고민을 덜 하고 있고 그 위에서 어떤 어플리케이션이, 어떤 언어가, 어떤 프레임웍이 올라가야 하는지에 대한 이야기가 더 많은 것이 사실이죠.

하지만 우리가 잘 보이지 않는 곳에서 BSD가 많이 쓰이고 있다는 것도 사실이고 (Netflix OpenConnect 라든가 Sony PS4 라든가 Apple iOS 이라든가) 라이센스 등의 면에서 이전보다 눈에 덜 뜨일 뿐이지 사용이 줄었다고는 보지 않습니다. OS 자체 보다는 기술을 이용하여 만든 여러가지 제품이 있다는 것이죠. 따라서 기존에 하던 것과는 다른 방향의 마케팅이 필요하지 않을까요. 둘째날에 이에 대해 좋은 제안들이 많이 있었으니 어떤 형태로든 실현 되기를 바랍니다.

2014년 7월 23일 수요일

서평: 해커와 화가

http://www.yes24.com/24/goods/11775130?scode=032&OzSrank=1





제목에도 있지만 "해커와 화가"의 비유를 통해 결국은 프로그래머 = 예술가 임을 말하고 싶은게 아닌가 싶다. 사실 일맥 상통하는 점이 많은데, 결국 프로그래밍은 창작이고, 좋은 프로그램은 "아름다운" 프로그램이라는 점이다. 열줄 써야 하는 코드가 5줄로 줄을때, 하지만 그렇다고 perl 의 one-liner 와 같은 난해한 코드가 아니라 딱 보고 금방 이해가 가는 "아름다운" 코드를 볼 때 더욱 그러하다.

결론은 강추천. 사실 이 책은 총 15장인데 프로그래밍에 대한 이야기는 10장부터 나오니까 2/3 은 사실 프로그래밍과 직접 관련은 없는 내용 들이다. 이분의 이야기는 이래저래 사실 내 취향에 직격인데... (perl 이나 FreeBSD 이야기도 종종 나오고) 1장부터 시작해서 계속. 몇가지만 인용해 보면

"... 비아웹에서 우리가 가진 규칙 중 하나는 어려운 상황과 마주쳤을 때 아래층이 아니라 위층으로 뛰어 올라가는 것이었다... 위로 뛰는 것은 어려운 일이지만 (나를 쫗아오는) 그 덩치 큰 친구에게는 훨씬 더 어려운 일일 것이다"

"우리가 리스프를 사용하고 있는 사실을 경쟁자가 안다고 해도 그들은 이 이유를 이해하지 못할 것이기 때문이었다. " "그 이유를 알 정도로 영리하다면 그들도 이미 리스프를 사용하고 있었을 것이다"
 그리고 책에서 인용되는 그린스펀의 프로그래밍 규칙 중 열 번째. 원문 그대로 인용한다.

Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of CommonLisp.

여담으로, lisp 에 대해서는 사실 그렇게 많이 써 본건 아니지만, 예전에 emacs lisp 패키지 중 ps-print.el 을 수정해서 버퍼에 들어 있는 한글을 프린터로 출력 가능하게 한 적이 있었다. emacs 내부 구조와 elisp 의 동작에 대해서 잠깐 살펴볼 수 있는 좋은 기회였는데, 처음에는 꽤 힘들었지만 일단 완성된 프로그램에 대해서는 꽤 만족했던 기억.


2013년 11월 25일 월요일

FreeBSD 10.0-BETA3 에서 하드웨어 RAID5 + zfs raid0 와 JBOD + zfs raidz 성능비교



새로 ftp.kr.freebsd.org 서버를 셋업하게 되어서, 기존 방식대로 ufs2 로 할까 하다가 10.0-BETA3 을 설치하게 되면서 zfs root 라든가 기존에 해 보지 않았던 것을 해 보고 있습니다. 그중에 FTP 미러 파티션을 무엇으로 해 볼까가 중요한 문제인데, 서버에 내장된 RAID 카드 (mfid) 의 하드웨어 RAID5 를 사용해 보느냐 아니면 디스크는 모두 JBOD로 지정하고 zfs 의 동급 기능인 raidz 를 써 볼까 하다가 간단히 성능 비교를 해 보기로 했습니다.

기본적으로는 ZFS Raidz Performance, Capacity and Integrity 을 읽고서 제 환경에 맞도록 따라한 것입니다. 자세한 설명은 해당 사이트를 읽어 주세요.

테스트 환경은 다음과 같습니다. 중요한 것만 나열 합니다.

하드웨어

  • DELL 2950
  • Xeon E5405 2.0Ghz x 2 (총 8코어)
  • 16G RAM
  • DELL PERC6 - LSI MegaRAID SAS
  • 디스크: SAS ST1000NM0023/HS0[A9] 953344MB x 4

OS

  • FreeBSD 1.0-BETA3 (amd64)
  • 커널 변경 없음

테스트


다음과 같은 4가지를 비교합니다

  • Hardware RAID5 (writeback):  PERC5 설정에서 디스크 4를 모아서 RAID5로 설정하고, Physical Disk의 write 설정을 writeback 으로 지정한 것입니다. zfs 에서는 zfs create disk 으로 설정.
  • ZFS raidz + HW writethrough: PERC5 설정에서는 디스크 4개를 각각 하나의 Virtual Disk 로 지정하고 해당 Virtual Disk 에는 하나의 Physical Disk 만 추가, Physical Disk 의 write설정을 writethrough 로 지정합니다. zfs는 zfs create raidz 로 설정합니다.
  • ZFS raidz + HW writeback: PERC5 설정에서는 디스크 4개를 각각 하나의 Virtual Disk 로 지정하고 해당 Virtual Disk 에는 하나의 Physical Disk 만 추가, Physical Disk 의 write설정을 writeback 로 지정합니다. zfs는 동일하게 zfs create raidz 로 설정합니다.
  • ZFS raidz + lz4 HW writeback: PERC5 설정에서는 디스크 4개를 각각 하나의 Virtual Disk 로 지정하고 해당 Virtual Disk 에는 하나의 Physical Disk 만 추가, Physical Disk 의 write설정을 writeback 로 지정합니다. zfs는 zfs create raidz 로 설정합니다. 추가로, LZ4 compression도 테스트하고 싶어져서 lz4 compression 을 pool 에 추가합니다. zfs set compression=lz4 로 간단히 할 수 있습니다. LZ4 compression 은 9.2 부터 추가된 기술로, 기존의 lzjb 보다 빠르고, 압축율이 낮으면 자동으로 압축을 하지 않는 기능이 있어서 압축 파일, 이미지, 동영상에서도 안심하고 사용할 수 있다고 합니다.

테스트에는 bonnie++ (benchmarks/bonnie++)을 사용합니다. 명령은 다음과 같습니다.
즉 단일 프로세스 테스트과 4개 프로세스 동시 테스트를 수행합니다.


## 1 proc
bonnie++ -u 101 -r 8192 -s 81920 -d /disk -f -b -n 1

## 4 proc

bonnie++ -u 101 -r 8192 -s 81920 -d /disk -f -b -n 1 -p 4 &
bonnie++ -u 101 -r 2048 -s 20480 -d /disk -f -b -n 1 -y s &
bonnie++ -u 101 -r 2048 -s 20480 -d /disk -f -b -n 1 -y s &
bonnie++ -u 101 -r 2048 -s 20480 -d /disk -f -b -n 1 -y s &
bonnie++ -u 101 -r 2048 -s 20480 -d /disk -f -b -n 1 -y s &


결과


1 프로세스의 결과입니다.  y 축은 bonnie++ 에서 측정된 전송 속도 (Mbytes/sec) 입니다. 하드웨어 RAID5 와 zfs raidz 의 차이가 거의 없고, writethrough 보다는 writeback 이 더 빠른 것으로 볼 수 있습니다. lz4 compression 은 sequential read에서는 큰 향상이 없지만 write 에서 거의 두배 이상, 그리고 무엇보다 random r/w 에서의 효과가 어마어마한 것으로 나타납니다.




4 프로세스의 결과입니다. 4개 결과의 평균 값입니다. raidz+writeback 이 H/W raid5 보다 더 좋고, compression 의 효과가 더 높은 것을 볼 수 있습니다. 거의 3배 빠르군요.



결론

생각보다 하드웨어 RAID5 보다 zfs raid5 가 성능상 떨어지지 않고, 새로 추가된 lz4 compression 이 sequential write 및 random I/O 에서 큰 효과를 볼 수 있다는 점을 알 수 있습니다. 특히 동시에 여러개가 있는 경우 random I/O에서의 효과는 어마어마하군요. CPU 를 사용한다는 단점은 있지만 크게 CPU intensive 한 어플리케이션이 아닌 경우 lz4 를 기본 사용하는 것도 무리가 없지 않을까 합니다. 제 경우는 zfs raidz+lz4 로 해 보려 합니다.






2010년 3월 18일 목요일

FreeBSD 7.x 에서 ntp 설정하기

FreeBSD 7.2 기준입니다.

ntp설정이 있긴 한데 매뉴얼도 없고... CentOS 기준으로 파일을 복사해서 사용하는게 쉽더군요.
아래 명령은 root 권한이 필요합니다.

일단 /etc/rc.conf 에 다음과 같은 내용을 추가합니다.

ntpd_enable="YES"
ntpd_sync_on_start="YES"

그리고 몇가지 사전 작업을 합니다.

# touch /etc/ntp/keys
# mkdir /var/lib/ntp

/etc/ntp.conf 를 다음 내용을 만듭니다. 내용은 CentOS 5.x 의 /etc/ntp.conf 에서 주석만 제거한 것입니다.

restrict default nomodify notrap noquery
restrict 127.0.0.1
server 0.pool.ntp.org
server 1.pool.ntp.org
server 2.pool.ntp.org
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
driftfile /var/lib/ntp/drift
broadcastdelay 0.008
keys /etc/ntp/keys

다 되었으면 ntp를 시작해 줍니다.

# sh /etc/rc.d/ntp start

/var/log/messages 의 내용을 체크해 봅니다. 아래와 같이 오류가 없으면 문제 없는 것입니다.

Mar 18 17:52:10 chii ntpd[1747]: ntpd 4.2.4p5-a Mon Jan 18 21:26:42 PST 2010 (1)

혹시 ntpdate를 cron에서 돌리는게 있었다면 주석 처리해 주세요. 두가지는 동시에 실행되지 않습니다. 부팅시에 ntp 뜨기 전에 ntpdate를 실행하는 것은 시간을 미리 맞추고 ntp를 기동하는 효과가 있으므로 권장하는 방식입니다.

ntp를 local로 돌리는 장점은 시간이 틀어지면 자동으로 수정된다는 것으로, PC내장 클럭의 문제를 방지할 수 있습니다. 오버헤드도 별로 없으므로 다수의 서버를 운영하는 경우 ntpdate를 주기적으로 실행하는 것보다 권장하고 싶군요.

2009년 7월 18일 토요일

LastPass.com

여러가지 사이트에 가입하고 특히 사내 시스템에서도 여러가지 암호 시스템이 (물론 통합되지 않은 탓도 있겠지만) 존재하는데 일반적으로 관리의 한계를 넘어서는 경우가 대부분이죠.

브라우저에서 암호 관리를 위해 3년 넘게 AI RoboForm을 사용해 왔는데 최근에 lastpass.com으로 바꾸었습니다. 좋은 점이라고 하면 다음과 같은것을 들 수 있겠지요.
  • MacOS X, 윈도, FreeBSD에서도 돌아간다(FreeBSD는 정식은 없지만 리눅스판 설치하면 어떻게든 됩니다). 물론 IE, FF 모두 지원합니다 (사파리는 안쓰므로 모름)
  • 암호가 서버에 저장되어서 여러 PC에서도 플러그인만 설치하면 바로 사용할 수 있다 (서버에 개인 암호들을 올리는건 조금 저항감이 있긴 하지만... RoboForm도 GoldSync라고 비슷한 기능을 제공합니다만 추가로 구매해야 하고 서버에 암호 올리는건 같지요)
  • 무료

처음에 설치할 때 기존 브라우저(IE, FF 등)의 암호 데이터 내지는 기존 암호 관리 프로그램 데이터를 옮길 수 있고, 물론 RoboForm 데이터를 import할 수 있는 기능을 제공하므로 기존 데이터도 무리 없이 옮길 수 있습니다. 다만 RoboForm에서 개별로 암호 걸어놓은 엔트리의 경우 해제할 수 있도록 암호를 일일이 쳐 주어야 하는데 이건 어차피 RoboForm에서도 웬만하면 안쓰는 기능이라...

그룹 몇가지 만들어서 (개인, 회사 등) 잘 분류해 놓으면 꽤 편리하게 사용할 수 있습니다. RoboForm에 비해서 암호 폼 디텍션이나 자동 입력에 조금 문제가 있는 부분이 있습니다만 그럭저럭 참고 사용할만 하네요.

이걸로 구매하는 어플리케이션이 하나 더 줄었습니다...

2009년 6월 18일 목요일

FreeBSD 7.2 with VirtualBox Host works!


Since vmware is not working anymore, it's been a long time for waiting VirtualBox in FreeBSD!

If you are using 7.2-RELEASE, just update your ports and install emulators/virtualbox. There are some
problems but generally it works very well. I am using virtualbox-2.2.51.r20457_3.

As you can see, IE8 menu looks broken but I don't know why. It may be related to graphics engine but I can see Youtube HD movies without problem.

Thanks for hard job, ports people!

FreeBSD 7.2 + Flash 10 + Firefox 3

Recenly I had some problems with my FreeBSD installation. I had to come back with 7.2 installation after upgrading to -current, it breaks my X windows.

BTW, I'd like to talk about FreeBSD 7.2 + Flash 10 (linux) + Firefox 3. It's very easy. You can find similar instruction for Flash9 in http://crnl.org/blog/2008/11/01/flash-9-for-freebsd-71

0. Config change

In /etc/make.conf, add

OVERRIDE_LINUX_BASE_PORT=f8

In /etc/rc.conf, add

linux_enable="YES"

In /etc/sysctl.conf, add

compat.linux.osrelease=2.6.16

In /etc/fstab, add

linproc /usr/compat/linux/proc linprocfs rw 0 0

Install this ports

emulators/linux_base-f8

Run these commands

# sh /etc/rc.d/abi start
# sh /etc/rc.d/sysctl start
# mount -a

1. Install ports

www/firefox3
www/nspluginwrapper
www/linux-f8-flashplugin10

2. nspluginwrapper configuration

# nspluginwrapper -a -v -i

3. Run firefox3

# firefox3

You should see "Shockwave Flash" section in about:plugins URL.

That's all!

2009년 6월 4일 목요일

gmail로 개인 스팸필터링하기

개인적으로 수십..은 뻥이고 gmail 계정을 몇개 갖고 있습니다만, gmail이 현존하는 무료로 사용할 수 있는 메일 중에서는 인터페이스와 스팸 필터링 기능에서 타의 추종을 불허하지요. 최근에 메일서버 관리가 너무 귀찮은 나머지 스팸 필터링을 gmail을 통해 보았습니다만 결과가 꽤 좋았습니다.

사전 준비
  • gmail 계정 (새로 가입하는게 좋지요) - testq@gmail.com 이라고 합시다.
  • 개인 계정 서버에 procmail과 fetchmail (저는 FreeBSD쓰니까요)
  • Unix기반의 개인 메일 서버가 있다고 가정합니다.


흐름

기본적인 흐름은 다음과 같습니다.

  • 외부 메일 -> 개인 메일 서버 [ procmail ] -> gmail -> (스팸필터링) -> [ fetchmail ] -> 개인메일서버


즉 필터링을 위해 gmail을 한번 돌아오도록 하는 것입니다. gmail에서 당길때에는 imap으로 당기지만 서버에 남기지 않고 받아오로록 합니다.

procmail셋업

$HOME/.procmailrc에 다음과 같이 추가합니다.
# gmail-filter
:0
* !^X-TEST-Quarantined: YES
| formail -A 'X-TEST-Quarantined: YES' | $SENDMAIL -oi testq@gmail.com

두번 필터링하지 않도록 헤더를 하나 추가해 둡니다. 이름은 맘대로.

fetchmail셋업

$HOME/.fetchmailrc에 다음과 같이 추가합니다.

poll imap.gmail.com proto IMAP:
user "testq" there with password "암호" is 로컬계정 here fetchall options pass8bits ssl

2009년 1월 26일 월요일

rsync + ssh 인데 ssh 포트 번호가 다른 경우

rsync over ssh를 하려고 하는데 포트번호가 22가 아닌 경우가 있죠. 이럴때...

rsync -vaz -e 'ssh -p 9999' id@server:/src dst

2008년 12월 24일 수요일

cups 프린터 설정하기와 PS파일 출력하기

까먹을까봐...

CUPSD설정

일단 이렇게 프린터가 있다고 합시다(자동으로 찾을 수도 있지만)

  • HP p1505
  • IP: 192.168.1.64
  • JetDirect지원

cupsd가 안떠있으면 띄웁니다.

/etc/rc.conf에

cupsd_enable="YES"

추가하고

# sh /usr/local/etc/rc.d/cupsd start

로컬 브라우저에서

http://localhost:631/

에 접속하면 CUPS인터페이스가 뜹니다. 여기서 Add Printer를 선택하면 됩니다.
레이저젯의 경우에는 그냥 HP PCL... 이런걸 고르면 됩니다.

다 되었으면 lpq (cups의 lpq가 /usr/local/bin/lpq에 따로 있습니다. /usr/bin/lpq를
쓰면 안됩니다)를 사용해 봅니다. 별 오류 없으면 OK.

PS/PDF파일 출력

PS파일을 출력하기 위해서는 print/cups-pstoraster 를 설치하고 cupsd를 재시작해 줍니다.
PDF파일을 출력하기 위해서는 print/cups-pdf 를 설치하고 cupsd를 재시작해 줍니다.

2008년 12월 17일 수요일

X11 마우스 감도 조절

딴데서 많이 찾을 수 있겠지만...

마우스마다 기본값이 차이가 있는지 감도 조절을 할 필요가 있습니다. X11 (xorg)의 경우에는

xset m 1/1 8

이런식으로 주면 되는데 1/1 부분이 감도 (1/1이 가장 낮고 8/1 정도 하면 날라다닙니다)와 뒷부분의 8은 임계치인데 픽셀입니다. 즉 임계치 픽셀 이상으로 마우스가 이동하게 되면 감도에서 지정한 만큼 빨라집니다. 8/1 16 이라고 하면 16픽셀 이상 이동하면 마우스 이동이 8배로 빨라진다고 보시면 됩니다.

1/1 8 정도 지정하면 저한테는 무난한것 같네요. .xinitrc에 넣어 두었습니다.