iPad 가 나온 이후로 타블렛이 시대의 대새가 되었습니다. 몇 일전에 iPad2 가 발표가 되고, 모토롤라의 Xoom 이라는 안드로이드 기반의 타블렛도 나왔죠.
그동안 별 지하철에서 랩탑으로 작업하면서 타블렛의 필요를 별로 못 느끼다가 한번 보고 버릴 논문들을 출력하는 종이와 가방에 가득 들어있는 논문들을 보면서, e-book 을 사기로 결정하고, 인터넷을 찾던 중 e-book 모드와 일반 컬러 모드를 동시에 지원하는 Notino Ink 사에서 나올 Adam 이라는 제품을 알게 된 후, 2달의 시간을 기다리며 Pre-order 1차에 성공.. 그리고 다시 2달의 기다림 끝에 아담이 제 손에 들어왔습니다.
아담의 스펙은 다음과 같습니다.
CPU: NVIDIA Tegra 250 ( Dual Core A9 )
Memory: 1G DDR2 RAM / 8GB Flash
LCD: 10.1인치 Pixel Qi (해상도: 1024x600)
WLAN 802.11 b/g/n, 블루투스 2.1+EDR
USB 2.0 Host x2, Mini USB, HDMI
3-Axis 가속센터, GPS, 디지털 콤파스, MicroSD slot
대부분의 스펙은 3월달부터 대거 쏟아져 나올 안드로이드 타블렛들과 큰 차이가 없지만, 아주 큰 차이점 하나로 Pixel Qi LCD 를 가지고 있다는 점입니다. PixelQi (픽셀치) LCD 는 굉장히 특이한 액정인데요. 자세한 내용은 다음 링크를 읽어보시기 바랍니다.^^
간단히 저 처럼 논문을 많이 보이지만, 컬러가 꼭 필요한 사람들에게 정말 유용한 액정입니다.
이 글은 앞으로 제가 적을 많은(?) 아담에 관련된 글들 중에 첫 번째글 개봉기 입니다. PO1 이후 2달 반의 기다림이 끝나고 (참고로 PO2 는 지금도 열심히 기다리고 있답니다.) 제게 도착한 박스 입니다. 뭐.. 국제 배송하느라 각종 배송지와 서류들이 여기 저기 난무 하고 있고, ICN 이라는 인천공항을 거쳤다는 이야기가 턱! 하니 붙어있기도 합니다.
아담의 겉박스를 뜯으면, 실제 아담을 포장하고 있는 검고 깔끔한 박스 하나가 나옵니다.(참고로 위에 있는 여행용 콘센트는 NotionInk 사에서 늦은 배송을 사과하며 보내준다고 했던 이름도 거창한 Special Gift 입니다. 오픈 마켓에서 배송비까지 3900원에 팔던데.... ㅡㅡ;)
최근에 나오는 타블렛 들은 대새를 따라서 스마트폰을 넓게 늘려 놓은 듯한 모습을 가지고 있습니다. 그리고 누가 더 얆게 만들 수 있느냐를 서로 경쟁적으로 자랑하는데요. 아담은 이런 시대의 대세를 과감하게 무시하고 자신만의 독자적인 두께와 비대칭적인 모습을 가지고 있습니다. 사진에서 딱 보기에도 두께가 상당하죠? 그리고 위 쪾은 동그란 봉과 같은 모습을 하고 있습니다.
개인적으로 이런 디자인에 더 점수를 주고 싶은데요. 얆게 만드는 제품은 기술력을 자랑하기에는 좋겠지만, 실제로 손으로 들고 작업을 하기에는 상당히 불편합니다. 적당한 두께가 있는 편이 좋고, 아담의 위쪽 둥그런 부분은 아담을 손에 잡고 작업하기에 더 좋은 환경을 만들어 줍니다.
정면입니다. 화면이 상당히 길죽하게 생겼고, 옆의 배젤이 넓습니다. 화면이 길죽한 부분은 최근의 추세지만, 저는 이런 것보다 iPad 가 가지는 4:3 비율을 더 좋아합니다. 이런 비율은 영화를 볼 때는 좋지만, 저 처럼 문서를 많이 보는 사람들에게는 새로로 돌려서 문서를 열었을 때 위아래에 어정쩡한 빈 공간이 생기는 단점이 있습니다. 넓은 베젤은 좀 심하게 넓긴하지만, 아담을 안정적으로 잡고 작업을 할 수 있도록 만들어 주는 공간입니다. 그래서 넓은 배젤에는 (+) 점수를 주고 싶네요.
전면 왼쪽에 안드로이드 사용기기에서 흔히 보이는 4가지 버튼이 보입니다. 위에서 부터 Search, Home, Menu, Backward 이구요. 모두 터치 형식입니다. 모양을 보면 백라이트가 나올 것 같지만, 실제로는 백라이트가 나오지 않습니다. 좀 많이 아쉬운 부분인데, 어두운 곳에서 아담을 사용할 때 상당히 불편합니다. 이 버튼 중에 Search 버튼은 아담만의 특별한 기능이 하나 더 추가되어 있는데요. 바로 LCD 를 ebook 모드로 변신 시켜주는 기능을 가지고 있습니다. 아담을 켜 놓은 상태에서 Search 버튼을 오래 누르면 e-book 모드로 변신이 됩니다.
아담의 전면 오른쪽을 보면 카메라가 달려있습니다. 다른 타블렛과 다르게 회전형이어서 앞뒤로 돌리면서 원하는 용도로 사용할 수 있습니다. 3.2MP 이면, 스마트폰 처럼 들고다니면서 디카 대용으로 사용되는 기기가 아닌 이상 화상 통화나 일반적인 용도로는 사용하기에 부족함이 없어 보입니다. 화질은 특별히 좋은 편은 아닙지만, 간단히 쓰기에 나쁘지 않습니다.
위 사진은 왼쪽 사진 입니다. 위부터 스피커, 볼륨 버튼, USB 호스트 포트, Micro USB 포트 입니다. 밑에서 보겠지만, 아담은 USB 호스트 기능을 가지고 있습니다. 이게 뭐냐면 키보드나, 마우스, USB 메모리카드 등을 아담에 연결해서 사용할 수 있다는 거죠. USB 호스트 포트가 아담의 양쪽에 하나씩 존재해서 이 기능을 수행 합니다.
아담의 오른쪽입니다. 위에서 부터 "스피커, 홀드&전원 버튼, HDMI, USB 호스트 포트, 뒤로가기 버튼, 3.5파이 3극 이어폰 단자, 전원 어댑터 단자" 입니다.
아담은 앞서 리뷰했던 옵티머스 2X 와 같이 HDMI 미러링을 지원합니다. HDMI 단자에 TV 를 연결하면 똑같은 모양이 TV에 나옵니다. 옵2x 에서는 상당히 신기했는데, 한번 보고 나서 일까 그렇게 신기하진 않네요^^
3.5파이 이어폰은 3극입니다. 최근에는 대부분 아이폰에서 사용하는 4극 이어폰 단자를 달고 나오는데 상당히 아쉬운 부분이 아닐 수 없습니다. 거기다 4극 이어폰과 호환이 되지 않습니다. 음악을 들을때 보컬이 1km 밖에서 노래를 불러서 아담 불량인줄 알고 어떻게 해야 하나 했는데, 알고보니 4극 이어폰을 사용하는게 문제였습니다. 3극 이어폰은 정상적으로 음악이 들리더군요.
그 밑에는 전원 어댑터 연결 선이 있습니다. 이게 저를 충격과 공포로 몰아 넣었던 부분인데요. 저는당연히 USB 포트로 충전이 될꺼라고 생각을 했는데, 전원 어댑터가 별도로 존재해서 그것으로만 충전이 가능하더군요(iPad 의 경우 극히 제한적이지만 USB 로 충전이 가능합니다.). 타블렛을 구입한 것이 무게를 줄이기 위함이었는데, 전원어댑터가 있어야 한다면, 그것도 들고다녀야 되고, 그러면 하나도 안 가볍습니다. 이것때문에 몇 일 고민했었는데, 제품도 마음에 들고 모토롤라에서 나온 Xoom 역시 전용어댑터로만 충전이 된다는 것을 알고 그냥 사용하기로 했습니다. 하지만 역시 상당히 아쉬운 점입니다.
아담의 어댑터는 19V & 2.1A 의 프리볼트 어댑터 입니다. 아담이 미국시장을 타켓으로 처음 생산되서 그런가 미국식이네요. 돼지코 하나를 사용하기로 합니다. 어댑터의 단점이 전원 코드가 분리형이 아니라는 것인데요. 거 얼마나 한다고, 분리형으로 해주면 참 좋았을 텐데 하는 아쉬움이 있습니다.
두둥 충격과 공포의 880g 입니다(저울이 싸구려라서 조금 오차가 있을 수 있는 부분은 이해해 주시기 바랍니다.). 응? 스펙상으로는 750g 이어야 하는데, 제가 전체에 보호지를 붙이기는 했지만, 무게가 너무 많이 나가는군요. 흠.. 이거 문제 있습니다.
아담은 다른 타블렛에 비해서 상당히 무거운 무게를 가지고 있습니다. 특별히 뭣때문에 무거운지는 모르겠지만, 애플이나 삼성 모토롤라에 비하면 아주 작은 회사여서 최적화된 디자인을해서 대량 생산을 할 수 없기 때문이 아닐까 하는 상상만 해봅니다. 어쨌든 아담의 880g 이라는 무게는 참 고민을 많이 하게 만듭니다. 2주 이상 들고다니며 사용해본 결과 남자라면 나름 괜찮지만, 여자분들은 한손으로 사용하기에는 무리가 있지 않을가 생각이 들게 합니다.
그리고 부팅이 끝나면 아담이 자랑하는 Eden UI 가 나타나게 됩니다. Eden 은 NI 에서 만든 독자적인 프레임웍입니다. 안드로이드 위에서 동작하지만, 자신만의 독특한 체계를 가지고 있고, SDK 도 별도로 공개하고 있습니다. 화면을 1/3 정도 크기의 패널의 조합으로 만들고, 각 어플리케이션이 패널 형태와 전체 화면 형태로 돌 수 있도록 제작되어있습니다. 아래에서 좀 더 이야기 하겠습니다.
픽셀치 LCD 의 특징을 잠시 보겠습니다. 먼저 시야각을 살펴보겠습니다. 아담의 시야각은 픽셀치의 보편적인 특징인지 정확히는 모르지만, 상당히 특이 합니다. 밑에 사진을 보시면 알겠지만, 화면의 아래와 왼쪽은 시야각이 괜찮은 반면 위쪽과 오른쪽은 시각이 아주 아주 좋지 않습니다.
정말 특이하죠? 액정을 아래쪽과 왼쪽에서 보면서 사용하라는게 아닐까 하는 추측만 하면서, 그 방향으로 사용하고 있습니다. 액정에 대한 평가를 간단히 해보면, 컬러모드에서는 일반 액정에 비해서 색감이 조금 약하고(제가 사용하는 모니터들이 모두 성능이 좋다는 IPS 라는 점을 염두해 두고 들으시는게 좋을 것 같네요..) 밝기가 좀 떨어집니다. 그리고 밝기를 가장 낮게 낮추면 꼭 e-book 모드와 같은 색감이 나타나게 됩니다.
보통 모니터의 밝기를 따지는 건 주변이 밝을때 잘 안보이기때문인데, 아담의 픽셀치 LCD 는 밝은 곳에서 더 잘보입니다. 태양아래서도 아주 잘보이구요(나중에 LCD 리뷰할때 자세히 적겠습니다.). 그래서 밝기는 큰 단점이 되지 못 합니다. 색감은 그냥 좀 아쉬운 정도? 이구요.
이제 픽셀치의 하이라이트이며 제가 아담을 선택할 수 밖에 없었던, e-book 모드 비교를 간단히 보죠. 다음 두사진은 동일한 각에서 찍은 일반 모드와 e-book 모드 입니다.
특이하죠? 아담의 Pixel Qi LCD 는 다른 일반저인 LCD 와는 다르게 밝은 곳일 수록 더 잘 보이는 특성이 있습니다. 그래서 책을 볼 때 iPad 같은 일반 LCD 와는 달리 태양아래서도 선명하게 볼 수 있습니다. e-book 모두는 실제 e-book 과 같지는 않습니다. 오히려 밝은 곳에서도 아주 잘보이는 해상도 높은 흑백 LCD 액정 이라고 표현하는게 더 적합할 것 같네요.
e-book 모드가 좋은점이 e-book 처럼 보이기 때문이 아니라, 배터리가 아주 오래갑니다. 스펙상은 150 시간 간다고 하더군요. 단순히 책을 볼때가 아닌 웹서핑을 하거나 메일을 보거나, 간단한 발표자료를 볼 때도 e-book 모드가 유용하기 때문에 150시간이라는 긴 배터리 시간은 정말 큰 장점으로 다가옵니다.
다음은 USB 호스트 기능입니다. 보통 타자를 칠 일이 별로 없는 경우에 타블렛을 구입하는데요. 하지만, 실제로 구입해보면 키보드 없는게 좀 불편합니다. 화면에 터치식 자판이 나오지만, 스마트폰과는 그 크기를 전혀 달리 하기 때문에 쉽게 치기 힘듭니다. 그래서 시중에 그렇게 많은 타블렛용 블루투스 키보드가 판매되고 있는거죠.
아담은 USB 호스트를 지원합니다. 그래서 키보드와 마우스를 그냥 연결만 하면 바로 사용할 수 있습니다.
아담의 OS 가 아직 최적화 되지 못한 부분이 보이는데요. 키보드를 연결해도 위체처럼 가상 키보드가 화면에 나옵니다.(제 옵큐는 자판을 열면 저런 화면이 안나옵니다.) 키보드 스위치 어플을 설치하면 된다고 하지만, 좀 아쉬운 면입니다. 이 부분은 허니콤으로 업그레이드하면 없어지는 것으로 알고 있습니다.
몇 일 사용해본 결과 많은 버그가 있고, 속도가 많이 느리지만, UI 자체는 굉장히 편리하더군요. HTC의 센스 UI 를 처음 봤을때 정리를 잘해서 만들었다 하는 생각을 한 적이 있는데, 아담의 Eden 은 완전히 새로운 개념을 도입해서 만들어 졌고, 앞으로 안드로이드 타블렛이 이 방향으로 발전할 수 있지 않을가 하는 기대를가지게 했습니다. Eden UI 는 앞으로 패치가 되고 안드로이드 3.0 허이콤으로 버젼업이 되면 훨신 빨라 진다고 했기 때문에 더 기대 하고 있습니다. 아직은 버그가 정말 많고 많이 느립니다.
웹서핑을 조금해봤는데요. 처음에는 플래쉬가 깨지지만, 마켓에서 어플을 설치하고 나면 정상적으로 잘 보입니다. 기본 안드로이드 웹브라우져가 아닌 Eden 에 맞는 웹브라우져가 설치되어 있는데, 속도도 상당히 만족 스럽습니다.
이것으로 개봉기를 끝내야겠네요. 쓰다보니 개봉기가 아니라 사용기처럼 되었지만, LCD 나 Eden UI 에 대한 부분은 별도의 사용기로 올릴 예정입니다.
아이 도착하고 약 2주의 시간이 흘렀습니다. 초기에 전원어댑터 때문에 그리고 Eden UI 의 버그와 e-book 모드가 e-ink 패널만큼 훌륭하지 않다는 단점 때문에 그리고 아담의 무게 때문에 고민을 많이 했었는데요. 들고 다니면서 2주를 사용해본 결과 마음에 드는 제품이었습니다.
PixelQi LCD 의 경우 밝을 수록 잘 보인다는 장점이 사용할 수록 더 편리하게 다가 왔습니다. e-ink 정도의 성능이 아니지만, 흑백 모드 역시 상당히 괜찮았고, 동시에 컬러 모드를 사용할 수 있다는 것도 좋았습니다. 특히 밝은 전등 아래에서 e-book 모드로 논문을 볼때 마음 뿌듯 합니다. 어두운 곳에서는 백라이트를 키고, 밝은 곳에서는 끄고, 참 신기하죠?^^
Eden UI 의 경우 너무 느리고 버그도 많아서 처음 사용할 때는 짜증이 났는데요. 몇 일 사용하다보니 참 편리하더군요. 허니콤에서 속도개선이 많이 이루어 진다고 했는데, 그러면 진짜 편리하게 사용할 수 있을 것 같습니다.
아담의 큰 문제점 중 하나가 무게 인데요. iPad 가 670~750g 정도였던 것 같은데, 사람들이 말이 많아서 이번에 발표된 iPad2 는 600~613g 의 무게를 가지더군요. 그 만큼 민감한 문제인데, 너무 무겁습니다. 위에 적은 것처럼 여자가 한손으로 들고 사용하기 힘들 것 같더군요. 아담의 독특한 디자인이 이 부분을 상당히 커버해주기는 합니다. 저는 지하철과 버스에서 아담에 논문이나 책을 띄어 놓고, 한손으로 들고 잘 보고 다닙니다.
전원어댑터의 경우 19v 2.1A 인데요. 찾아보니 국내에 나오는 넷북용 어댑터와 사양이 거의 비슷하더군요. 그래서 넷북용 어댑터와 5.5파이-3.5파이 변환 젠더를 구입해서 여기 저기 놔두고 다니는 것으로 해결할 예정입니다.
이런 저런 불평을 많이 적었지만, 4달의 기다림 긑에 Adam 을 받아서 정말 뿌듯한 마음에 사용하고 있습니다. 뭐.. 베타테스터 처럼 너무 많은 버그를 가지고 있지만, 점점 발전하는 제품을 좋아하는 제 성격과 PixelQi 라는 앞으로도 타블렛에 장착되기 힘든 LCD 가 달린 제품을 사용한다는 자부심으로 충분히 극복하고 있구요. 사용하면서 더 많은 기능에 대한 소개를 하도록 하겠습니다.
아내가 휴대폰을 바꿔달라고 하는 찰라에 LG 에서 최초로 듀얼코어 스마트폰을 내놓았습니다. 가격도 괜찮고, 제품도 차세대 안드로이드의 표준으로 불리고 있는 Nvidia Tegra2 CPU 를 탑재하고, 컴퓨터용으로 가장 인기가 많은 IPS 화면을 장착하고 있어서 뒤도 안돌아보고 바로 번호이동을 했습니다.
LG의 사후지원이 항상 큰 문제지만, 당분간 SKT 의 갤스를 이어갈 주력상품이 될 것이라, 사후지원을 등안시 하지는 못하리라 생각이 들어서 크게 걱정을 하고 있진 않습니다.
그리고, 오늘 제품을 받아서 이거 저것 만져 보니 참 만족스럽네요.
박스와 구성품
이제 옵티머스 2x 를 개봉해서 하나씩 살펴 보겠습니다. 2x 의 상자 입니다. 앞에 다양한 인증 정보들이 있네요.
Full HD
Wi-fi
DLNA
DOLBY
NVIDIA TEGRA
DVIX HD
논란이 많은 Full HD 가 눈에 띄고, DLNA 가 눈이 가네요. DLNA 장비가 하나둘씩 늘어나는데, 이럴 줄 알았으면, TV 구입할때 DLNA 되는걸 구입할까 그랬나 봅니다.
옵티버스 2x 의 구성물은 다음과 같습니다. 전화기 본체, 1500mAh 배터리 2개, Micro USB 충전기, Micro USB 케이블, HDMI 연결 케이블, 배터리 충전기. 옵티머스 2x 에서 가장 자랑하던 기능인 HDMI Mirroring 위한 HDMI 케이블이 들어있다는 것을 제외하고는, 별로 특별한건 없네요.
옵티머스 2x 의 외양은 특별한 점은 없습니다. 버튼의 배치는 Galaxy S 와 같은 형태를 가지고 있는데요. 옆으로 살짝 보면, GalaxyS 처럼 보이기도 합니다. 아마 SKT 의 입김이 작용한게 아닌가 하는 생각이 듭니다.
옵티머스Q 와 비교해보면, 디자인이 굉장히 깔끔해졌습니다. 카메라 버튼 같은 것들은 없어지고, DMB 안테나는 안쪽에 내장되어 있기 때문에 별도의 안테나 연결단자가 존재하지 않습니다. 전면 버튼도 Search 는 없어지고, Home 버튼을 남겨둔 나머지는 Touch 형식으로 존재하고 있습니다.
제가 사용하고 있는 옵티머스Q 와 비교해 보겠습니다. 전면입니다. 옵티머스 액정 크기가 3.5인치 입니다. 생각보다 3.5와 4.0의 차이는 크게 보입니다. 옵Q 의 경우 크롬 테두리가 있지만, 옵2x 는 주변을 좀 더 얇게 만들어서 좀 더 세련되고 얆아보이는 느낌을 주고 있습니다.
두께 비교해보겠습니다. 옵Q 의 경우 쿼티 키보드를 탑제하고 있어서 상대적으로 두꺼운 편입니다. 옵2x 의 경우 옵Q에 비하면 얆은 편이지만, 요즘 나오는 스마트폰의 두께와 큰 차이는 나지는 않아 보입니다. 옵2x 부분이 좀 튀어나와있지만, 생각보다 두껍지 않죠? 실제로도 눈에 전혀 거슬리지 않습니다.
스마트폰의 가장 종요한 본격 액정 비교를 해보겠습니다. 옵2x 에서 가장 강조하는 것이 듀얼코어 CPU 와 함께 화사한 IPS 액정입니다. IPS 는 컴퓨터 모니터에서도 가장 선호되는 형식이고, 아이폰4에서도 사용되고 있는 방식이죠. 옵Q의 경우 S-LCD 를 이용하고 있습니다. 개인적으로는 갤스의 펜타일 방식의 아몰레드보다 더 S-LCD 를 더 선호하고 있습니다. 밑의 사진에서 옵2x 는 붙어이는 기본 필름을 제거 하지 않은 상태이고, 옵Q는 아무것도 붙어있지 않은 상태 입니다. 모두 최대 밝기 상태 입니다.
액정은 비교할 수 없을 정도로 IPS 가 선명하고 화사합니다. 뭐.. 한눈에 봐도 알 수 있습니다. 제 옵Q 의 액정이 이렇게 딸리다니.. 슬프군요. ㅠㅡㅠ
옵2x이 출시 되자 마자 동영상 재생 능력때문에 실패한 폰 처럼 취급하시는 분들이 좀 계시더군요. 테그라2가 어쩌내 저쩌내 하면서 이야기 들이 많이 나오는데요. 이게 좀 지나친 감이 있더군요.
먼저, 요즘 많이 사용되는 mkv 파일이 지원되지 않는 것이 문제인데요. 옵2x 내장되어있는 기본 비디오 플레이어는 MKV 파일이 지원되지 않습니다. 하지만, 이건 그냥 내장 플레이어 문제입니다. 옵2x 가 피쳐폰이 아닌 스마트폰이기 때문에 괜찮은 Player 하나 설치하면 끝나는 문제입니다. Vital Player 를 설치해서 재생해보았습니다. 밑에 첫 사진은 같은 MKV 파일을 기본 비디오재생과 Vital Player 를 설치해서 재생해본 겁니다. Vital Player 는 MKV 파일을 잘 재생합니다.
1080p 같은 고해상도 파일이나 일부 코덱에서 싱크가 맞지 않는 문제나 버벅이는 문제등이 노출되고 있는데요. 이는 시간이 지날 수록 수정되리라 생각합니다. 추가적인 수정으로 H.264 로 나온 1080p 같은 고해상도 파일들이 원활한 재생이 될지는 장담할 수 없지만(저는 어느 정도 기대하고 있습니다.), 시간이 지나면서 듀얼코어와 테그라2 에 최적화된 플레이어들이 나와서 대부분 파일은 문제없이 재생가능하리라 생각합니다. 벌써 VitalPlayer 홈페이지에는 옵2x 에 대한 최적화를 하겠다고 공지되어 있습니다.
LG 에서 초기 출시때와 지금 스펙을 바꿔서 기제하고 있다는 글이 보이는군요. 고의인지 아닌지는 모루겠지만, 사실인것 같구요. 1080P 에 대한 부분이 계속 문제가 되니까 스펙을 바꾼 것 같은데, 좀 한심하네요. 1080P는 정해진 스펙의 파일이 아니면, 앞으로도 재생이 어려울 것 같네요. 뭐.. 4G 이상파일을 핸드폰에 넣어서 동영상을 재생할일은 없는지라 저는 별 걱정은 안합니다.
마무리
옵티머스 2x 를 아내와 여기저기 다니면서 사용해 보았는데, 상당히 마음에 듭니다. 드디어 LG가 그동안의 부진을 털어버리고, 스마트폰 시장에 재대로된 제품을 내놓은게 아닌가 생각이 드네요.
선명한하고 넓직한 4.0인치 IPS 화면은 사용할 수록 정말 마음에 듭니다. 4.3인치 폰들이 나온다고 하지만, 4.0인치 폰도 타자를 칠때는 너무 넓어서 타자를 치기는 조금 힘들다는 생각이 들고, 여자들에게는 더 크게 느껴질 것이라 생각해보면, 4.0 에 더 무게를 두고 싶습니다. 그리고 IPS 화면은 화사함과 밝기가 아주 만족스럽네요. 차세대 디스플레이로 갤스2 용 Super AMOLED RGB 와 Optimus Black 의 Nova Display 가 기다리고 있지만, 이건 몇 달 후의 이야기입니다. 갤스2 나올때는 테그라2+Nova+3D 가 장착된 옵티머스가 나오지 않을까 생각이 드네요.
옵티머스2x 에 사용된 테그라2 칩셋은 차세대 안드로이드 타블렛과 스마트 폰에서 가장 많이 사용될 예정인 칩셋입니다. 안드로이드 듀얼코어 시스템의 레퍼런스가 되는 칩셋이죠. 이제 막나와서 많은 프로그램들이 테그라2에 최적화가 되있지 않은 상황에서 최초로 나온 스마트폰인 옵2x 는 앞으로 많은 발전이 있을 거라고 생각합니다. 이제 막 도입된 듀얼 코어 칩셋을 싱글 CPU에 맞춰 나온 벤치 마크 좀 돌리고, 싱글코어에 맞춰서 최적화된 어플들 조금 사용해보고 미리 평가하는 것은 잘 못된 게 아닐까 하네요.
테그라2가 차세대 표준인 만큼 앞으로 앱들도 최적화 되서 나오기 시작할 것이고 그러면, 옵2x 의 성능도 지금보다 더 좋아지리라 생각됩니다.
리뷰를 준비하면서 옆에 제 옵Q 와 옵2x 를 두고 글을 적고 옆에 다시 보니 옵2x 와 할부 18개월 남은 오징어가 한마리 놓여 있군요. 불에 구워서 먹어버리고 옵2x 하나 더 구입할까? 하는 고민을 잠깐.. 해봅니다.
이전 글에서 Perceus Server 에 대한 설치를 완료하고 정상작동 되는지 테스트를 하였습니다. 이제 Node 에서 하드디스크로 사용할 디스크 이미지를 만들어고 설치해 보겠습니다.
VNFS 만들기
처음에도 이야기했지만, 우리가 지금 만들고 있는 Diskless cluster 는 Node 가 사용할 하드디스크 이미지를 Master 에서 가지고 있습니다. 그리고 각 node 가 켜질때마다 Master 의 특정위치를 자신의 하드처럼 인식해서 작동하게 됩니다. Perceus 는 이런 Node 의 이미지를 vnfs 라는 형식으로 관리를 합니다. Perceus 에서 이 vnfs 이미지를 미리 만들어서 제공하기도 하지만, 최신버젼이 아니고 Customized VNFS 는 유료 서비스에 해당하는 내용이어서 직접 만들어 보도록 하겠습니다.
vnfs 이미지를 만들기 위해서 /usr/share/perceus/vnfs-scripts 에 있는 script를 이용하도록 하면 됩니다. 우리가 사용할 파일은 centos-5.1.genchroot.sh 파일 입니다.
먼저 centos-5.1-genchroot.sh 파일을 centos-5.5-genchroot.sh 이름으로 복사합니다.
# 17번째 줄
releasever=5.5 (17째줄)
# 110번째 줄
gpgkey=$MIRROR/$releasever/os/$ARCH/RPM-GPG-KEY-CentOS-5
다음은 node 에서 필요한 프로그램들을 이미지를 만드는과정에서 같이 설치되도록 수정해야 합니다. 이것은 이미지를 만든 이후에 해도 되지만, 기본으로 제공되는 RPM형식의 프로그램의 경우 초기에 같이 설치하는게 덜 번거롭기 때문에 같이 하도록 하겠습니다. 132번째 줄 쯤에 yum 이라는 명령어로 싲가하는 줄이 있습니다. yum 은 RHEL (RedHat Enterprise Linux) 계열의 리눅스에서 프로그램을 자동 설치해주는 프로그램입니다. CentOS 역기 이 계열의 리눅스 이므로, 이 줄에서 프로그램을 설치하게 됩니다. 이 yum 으로 시작하는줄 끝 부분에 (밑에서는 142번째 줄이었습니다.) 추가로 설치할 프로그램들을 다음과 같이 적어 줍니다. 프로그램 종류는 각자 사용하는 프로그램에 맞춰서 적으셔야 합니다.
수정이 끝났습니다. 위 파일을 실행합니다. 그러면, 한참.. 많은 일들을 진행하게 됩니다. 시간이 좀 걸리는데요. 너무 일찍 끝나면 메세지를 잘 보시고 혹시 에러나지 않았나 확인하시기 바랍니다. 저의 경우 가끔 GPG-KEY 때문에 에러가 나거나, 사용하고 있는 mirror 의 파일과 md5 key 가 가끔 맞지 않아서 에러가 나는 경우가 있었습니다.
위 파일의 실행이 끝나면, 다음 명령어로 나면 만들어진 파일을 vnfs 파일로 만들어야 합니다.
[root@n64m vnfs-scripts]# ./chroot2stateless.sh /var/tmp/vnfs/centos-5.5-1.x86_64 /root/centos-5.5-1.stateless.x86_64.vnfs
Creating VNFS capsule 'centos-5.5-1.stateless.x86_64.vnfs'
Setting default kernel to vmlinuz-2.6.18-194.el5
Kernel seems to be relocatable...
Building rootfs ...
Creating additional devices ...
Creating VNFS capsule scripts
Compressing capsule ...
WROTE: /root/centos-5.5-1.stateless.x86_64.vnfs
마지막의 빨간색으로 칠해진 파일 이름이 생성된 vnfs 파일의 이름 입니다. 저의 경우 만들어진 파일이 약 170M 정도 되네요.
VNFS 설치하기
만들어진 VNFS 파일을 Perceus 에 읽어들이고 node 의 기본 이미지 파일로 지정해 보겠습니다.
vnfs 를 import 합니다. import 를 시작하면 처음에 node 에서 사용할 root 의 암호를 물어봅니다. 그 이후에 여러가지 질문을 하는데, 기본값을 건드리지 않고 ENTER 만 치면, 끝나게 됩니다.
이전 글에서 Cluster 시스템에 대한 소개와 전체 시스템의 구성을 알아보았습니다. 이번 글부터 Perceus를 이용한 본격적인 Diskless 시스템 구성을 해보겠습니다. Perceus 는 Infiscale 에서 만든 Diskless 클러스터 구축용 프로그램 패키지 입니다. 이런 프로그램이 나오기 전에는 복잡하고 어려운 과정을 거쳐야 했지만, 이제는 쉽게 구축할 수 있습니다. Diskless Cluster 를 구축하는데 사용되는 tftp, dhcp 서버를 별도로 설치할 필요도 없고, node 구성부터 등록까지 자동으로 처리해 줍니다.
CentOS 의 설치에 대한 내용은 별도로 언급하지 않겠습니다. 여기서 사용한 시스템은 CentOS 5.5 이며, 2010년 8월 12일자로 "# yum update" 명령을 통해서 갱신된 버젼입니다. CentOS 설치시에 SELinux 와 방화벽 설정을 끄길 바랍니다. SELinux는 사용하지 않기를 권장하고, 방화벽은 Perceus 설치 끝내고 정상적으로 작동이 되는 것을 확인하고 다시 활성 시키는게 정신건강에 좋습니다.^^
Perceus 를 설치를 위한 네트웍설정
Perceus 설치하기 전에 몇 가지 설정을 먼저 합니다. 우리가 구성하는 시스템의 Master 는 랜카드를 3개 가지고 있습니다.
eth0 : 내부 네트웍에서 통신을 위해서 사용되며 10.0.0.XXX 주소를 가진다.
master : 10.0.0.1
nodeXX : 10.0.0.1XX
eth1 : 내부 네트웍에서 NFS를 위해서 사용되며 192.168.0.XXX 주소를 가진다.
master : 192.168.0.1
nodeXX : 192.168.0.1XX
eth2 : 외부 네트웍과 연결한다.
eth0 에 대한 설정을 해보겠습니다. CentOS 에서 eth0 카드에 대한 환경 설정 파일은 /etc/sysconfig/network-scripts/ifcfg-eth0 에 존재합니다. 이 파일을 열어서 다음과 같은 내용으로 바꿔 줍니다. 이때 HWADDR= 로 시작하는 라인이 있으면 그 라인을 다음 내용 뒤에 추가합니다(만약 HWADDR 라인을 지워버리면 시스템 재부팅시 eth0, eth1, eth2 장치가 바뀔 수 있으니 꼭 뒤에 추가하시기 바랍니다.).
사전 준비는 끝났습니다. Perceus 1.5.3 파일을 받아서 rpm 파일로 만들겠습니다. 혹시 기본 컴파일러(환경변수 CC)를 gcc 가 아닌 다른 것으로 설정해 놓으신 분은 gcc 로 돌리시기 바랍니다.
# cd /root/
# mkdir perceus
# cd perceus/
# wget http://altruistic.infiscale.org/src/perceus-1.5.3.tar.gz
# export TAR_OPTIONS=--wildcards
# rpmbuild -ta perceus-1.5.3.tar.gz
이제 이런 저런 메세지를 내뿜으면서 perceus 의 rpm 패키지가 만들어 집니다. 만들어진 패키지는 "/usr/src/redhat/RPMS/x86_64" 에 존재합니다. rpm 파일은 총 4개가 생성됩니다. 이중에서 우리가 필요한 파일은 perceus-1.5.3.rpm 파일입니다. 이 파일을 설치합니다. rpm 파일이므로 쉽게 설치할 수 있습니다.
Perceus RPM 파일의 설치를 했습니다. 이제 설정을 해야할 차례인데요. perceus 의 기본 설정 파일은 /etc/perceus 에 존재합니다. 먼저 설정해야 할 파일은 /etc/perceus/perceus.conf 파일입니다. 이 파일에서 다음 두 줄을 수정해 줍니다.
master network device = eth0
vnfs transfer master = 10.0.0.1
이 두 줄은 master 의 eth0 을 이용해서 각 node 들과 연결하도록 하고, vnfs 파일을 가지고 있는 컴퓨터가 10.0.0.101 이라는 IP 를 사용한다는 의미입니다. master 가 vnfs 를 가지고 있기 때문에 master 의 eth0 의 IP 를 적어주었습니다.
이 다음 /etc/perceus/defaults.conf 파일을 수정합니다. 이 파일은 node 가 새롭게 추가될때 어떤 이름을 가질 것인지를 정하는 일을 하고 있습니다.
Node Name = n###
......
First Node = 1
......
Total Nodes = 999
이렇게 수정하면, node 가 새롭게 추가될 때 이름이 n001, n002, ..... , n999 순으로 들어가게 됩니다. (응용해서 자유롭게 바꾸시면 됩니다.)
Perceus 초기화 하기
perceus 를 처음실행하면 몇 가지 설정을 해야 합니다. 저는 다음과 같이 했습니다.
Do you wish to have Perceus do a complete system initialization (yes/no)? yes
What IP address should the node boot address range start at?
(192.168.10.192)> 10.0.0.151
What IP address should the node boot address range end at?
(192.168.10.254)> 10.0.0.200
What domain name should be appended to the DNS records for each entry in DNS?
This won't require you to specify the domain for DNS lookups, but it prevents
conflicts from other non-local hostnames.
(compbio.net)>
What device should the booting node direct its console output to? Typically
this would be set to 'tty0' unless you are monitoring your nodes over the
serial port. A typical serial port option might be 'ttyS0,115200'.
note: This is a global option which will affect all booting nodes.
(tty0)>
Perceus ssh keys are already present at /root/.ssh/perceus
Created Perceus ssh host keys
Created Perceus ssh rsa host keys
Created Perceus ssh dsa host keys
No local NFS server required for Perceus (as defined by perceus.conf)
Perceus is now ready to begin provisioning your cluster!
이렇게 설정하면 node 가 처음 추가될 때는 10.0.0.151 ~ 10.0.0.200 사이의 IP를 할당 받게 됩니다. (이후에 처음 목적한대로 10.0.0.[NODE NO] 형식의 IP로 변경되게 됩니다.). 이제 Perceus 를 구동시켜 봅니다.
# /etc/init.d/perceus start
Starting perceus vnfs daemon (xget): [ OK ]
Starting perceus network manager: [ OK ]
Starting perceusd: [ OK ]
위처럼 OK 메세지가 나오면 정상적으로 구동된 것입니다.
작동 시험
위에서 OK 가 나오면 perceus 설치와 작동이 정상적으로 이루어 진것입니다. 하지만 그렇다고 클러스터가 정상적으로 잘 작동한다는 것은 아닙니다. node 가 정상적으로 연결이 되나 시험을 해봐야합니다.
node 중에 1번으로 사용할 컴퓨터가 네트웍이 잘 연결되있나 확인한 뒤에 켜봅니다. 당연한 이야기지만, CMOS 상에서 네트웍 부팅을 지원하도록 설정되 있어야 합니다. node 를 키면, 처음에 네트웍을 찾으면서 master 를 찾는 메세지가 나옵니다. 그리고 다음과 같은 perceus 초기 화면이 나옵니다.
perceus 는 새로운 node 가 발견되면 defaults.conf 에 설정에 따라 이름을 자동으로 할당하고 등록을 하게 됩니다. 위 화면의 경우 밑에 n64002 가 node 의 이름입니다. 저는 n64### 형식의 이름을 사용하고 2번째 노트를 테스트 하던 화면 이어서 그렇습니다.
마지막 줄에 보면 VNFS 파일이 없다고 에러를 냈는데요. 아직 설치하지 않았으니 당연히 에러가 나는 겁니다. 큰 걱적은 안해도 되는 부분입니다.
앞서 말씀 드렸지만, perceus 는 새로운 node 가 나타나면 이름을 할당하고 자동으로 등록을 하게 됩니다. 그래서 다음에 이루어질 VNFS 설정을 위해서 테스트때 등록된 node 를 모두 제거해 하도록 하겠습니다. 다음 명령어로 나타나는 모든 node 를 제거해 주시면 됩니다.(1대만 테스트 했으면 예제와 동일할 겁니다.)
# perceus node list
n001
# perceus node delete n001
마무리
이번 글에서는 Perceus 를 설치했습니다. 조금 어려울 수도 있는 부분이지만, 2-3년 전에 나온 리눅스 클러스터링 시스템 만들기 책을 10분만 읽어 보면, 얼마나 쉬워졌는지 알 수 있습니다. 다음 글에서는 본격적인 Node 이미지 만드는 작업을 하겠습니다.
이전 글에서 클러스터 시스템의 개요와 하드웨어 선택 방법에 대해서 말씀 드렸습니다. 이번에는 본격적인 클러스터 구성의 시작인 시스템 구성 계획을 짜도록 하겠습니다.
클러스터 시스템의 최소 구성
클러스터 시스템의 구성에 대해서 생각해보겠습니다. 먼저 클러스터를 구성하는 최소한의 구성을 그려봤습니다. 이전까지 구축되어있는 대부분의 소규모 클러스터 시스템이 이런 모습을 가지고 있지 않을까 생각이 드네요.
최소한으로 구성한 클러스터 시스템
구성은 아주 간단합니다. Master 1대와 Node 10 대, Switching Hub 1 개 가 전체 구성품입니다. Master 는 2개의 Lan 카드를 가지고 있습니다. 이전 글에도 적었지만, Harddisk 는 Master 에만 존재합니다. 그리고 모든 Node 는 Master 에 있는 OS 이미지를 읽어와서 자신의 메모리에 올려두고 하드디스크 처럼 사용합니다.
만약 지금 이런 시스템을 만든다면 어떤 문제가 발생할 수 있을까요? 가장 큰 문제는 네트웍 입니다. 지금 클러스터 시스템을 만든다면 아마 Quad Core CPU 를 사용해서 만들게 될 겁니다. 결국 1개의 랜선에 4대의 컴퓨터가 물려있는 것과 동일한 상황이 되는 거죠. 그래서 네트웍에 심한 부하가 걸리게 되고, 결국 CPU는 놀고 있지만, 클러스터는 성능을 발위하지 못하는 상황이 발생하게 됩니다. 제 경험상 네트웍 부하 문제는 클러스터 성능을 가장 크게 좌우 하는 문제입니다.
추천하는 소규모 클러스터 구성도
다음은 최근에 제가 구성해서 사용하던 클러스터의 구성도 입니다. 이 글에서 앞으로 설정할 시스템의 가상 구성도 이기도 합니다.
추천하는 클러스터 구성도. 2개의 Network 이 존재한다.
위의 구성도와 차이점은 Network 을 하나 더 추가한 것입니다. 각 Node 는 하드디스크 I/O 는 eth1 로 하게 되고, MPI 나 기타 통신은 eth0 로 하게 됩니다. 하나의 네트웍으로 전송되던 정보를 두 곳으로 분산해서 처리함으로써 클러스터가 더 효율적으로 작동하도록 했습니다.
사실이 정도 구성에서도 네트웍이 Quad Core 10대의 Node 를 완전하게 가동 시킬 수 있는지는 확실치 않습니다. 아마 사용하는 환경에 달려있을 것 같은데요. 클러스터 구성후 자신이 생각했던 것 만큼의 속도가 나오지 않으면 클러스터 구성에 생각지 못한 점이 있나 살펴봐야 합니다.
제가 있는 연구실의 클러스터는 위의 예보다 조금 더 규모가 큽니다. 모든 컴퓨터가 Quad Core CPU Dual (즉 컴퓨터당 8개의 Core 입니다.). Node 는 12대 입니다. 그래서 연구실 클러스터의 구성은 다음과 같이 되어있습니다.
제가 있는 연구실의 클러스터 시스템 구성도
2번째 그림과 다른 점은 Node Image 를 관장하는 NodeMaster 를 별도로 두고, Storage 를 Master 에서 분리해서 따로 두었다는 것입니다. 여기서 Master 가 하는 역할은 사용자가 접속을 해서 작업하는 용도와 각 Node 에서 작동시키는 프로그램(OS가 아닙니다.)을 설치하는 것입니다. 사실 현재 대수에 비해서 조금 크게 구성한 감이 있지만, 앞으로 추가될 Node 들을 고려해서 이런 구성을 하였습니다. (참고로 위의 추천 구성으로도 별문제 없이 사용하였습니다.)
클러스터를 구성할 때 위의 그림을 백지 한장에 위의 그림을 그리고 IP 까지 적어서 기록해 두는 것이 설정하는데 많이 편합니다. 클러스터 구성작업이 단순 반복 작업이라 헷갈리기 시작하면 대책 없습니다.
이제 하드웨어 선택도 다했고, 구성도 다했습니다. 이제 다음 글부터 본격적인 클러스터 시스템 구성을 해보겠습니다.
클러스터 시스템을 만드는 글에서 이런 주제를 다루는 것이 조금 이상한 것 같지만, 꼭 생각해봐야 할 문제입니다. 클러스터가 필요하니까 여기서 이 글을 읽고 있는것 아닙니까! 라고 말씀하실 분들이 계실 지 모르지만, 여러분에게 필요한게 사실은 Queueing 시스템을 설치한 Multi Core 서버 일수도 있습니다.
과거에는 Single Core
CPU 여서 여러개의 CPU 를 묶어서 Cluster 를 구성하는 것이 당연한 작업이었습니다. 하지만 지금은 Quad Core
CPU 가 대중화되어있습니다. 그래서 Quad Core CPU DUAL 인 서버급 컴퓨터를 250~300만원 정도면 구입할 수
있습니다. 이 시스템과 Quad Core 를 3대~4대 붙인 컴퓨터가 있다면, 어느 것이 빠를까요? 가격대 성능은?
다나와에서 비슷한 가격대의 두 시스템 견적을 뽑아봤습니다.
인텔제온 E5420*2 / Super miccro MB / RAM 2G*4 / ODD / HDD 1TB*2 / Power + CASE = 약 250만원
(인텔 콜어2쿼드 Q9400 / G31 MB / Ram 2*2 / ODD / HDD 1TB*2 / Lan 2개 / Power+CASE) * 3대 + 스위치허브 *2개 = 약 230만원
이 두개의 시스템을 비교해 보겠습니다. 클러스터에서 가장 중요하다고 흔히 생각되는 CPU Core 갯수로 따지면, 위는 8개,
아래는 12개 입니다. 그러면 아래 제품이 1.5배더 빠를까요? 절대 그렇지 않습니다. 위에 시스템이 더 빠를 수도 있습니다. 이유가 뭘까요?
그건 어떤 자료를 컴퓨터 내부에서 다루는 것과 네트웍을 통해서 다루는 것의 속도 차이가 아주 크기 때문입니다. 병렬계산을 하는
한 프로그램이 있습니다. MPI 를 이용하고 있구요. 이 프로그램을 위에서 8개의 CPU 를 이용해서 돌린 것과 아래에서
12개를 이용해서 돌린 것을 비교하면, 아래의 시스템이 빠를 것 같지만, Disk I/O 문제만 없다면, 위에 8개를 이용한
것이 훨씬 빠릅 수 있습니다. 네트웍과 컴퓨터 내부의 속도차이는 하늘과 땅차이기 때문입니다. 그리고 계산화학에서 사용하는 많은
계산 프로그램들이 이런 MPI 방식을 이용해서 작동합니다.
그러면 MPI 보다는 하나의 프로그램을 여러번 돌리는 것을 주로하는 생물정보학 쪽에서는 어떨까요? 제 생각에는 아래 시스템이
아주 조금 앞서거나 비슷할 것 같습니다. 그 이유는 Disk I/O 에 있습니다. Disk I/O 의 경우도 NFS 를 통해서
공유하는 것과 Native 로 사용하는 것의 속도가 아주 크게 나타납니다. 생물정보학 쪽의 대부분의 프로그램들이 Disk I/O
가 많습니다. 만약 Disk I/O 가 없이 하나의 CPU로 조금 긴 시간의 계산이 필요한 프로그램을 여러번 돌려야 한다면,
아래 시스템이 당연히 빠릅니다.
두 시스템에는 큰 차이가 더 있는데요. 바로 관리의 문제입니다. 관리가 시스템의 성능과 직접적으로 관련이 없지만, 그게
그렇지 않습니다. 클러스터 설정하고 최적화 하는게 일이니까요(그게 쉬웠다면 이글을 읽고 계시지도 않겠죠?^^).
한가지 더 생각해봐야 할 문제는 앞으로의 상황입니다. 아마 클러스터를 만들게 되면, 당장은 몇개 안되더라도 컴퓨터를 더 추가할
수 있는 상황이 됩니다. 하지만 이때도 밑에서 이야기 하겠지만, Master 컴퓨터가 좋아야 더해지는 Node 의 부하를 해결할
수 있습니다.
결국 MPI 프로그램을 돌려야 하고 예산이 300만원 정도 있다면, Quad Core Dual 인 시스템으로 가는 것이 더 좋다는 결론이 나게 됩니다. 그리고 예산이 더 생긴다면 Node 를 붙이는 방식을 따르는 것이 좋습니다.
클러스터 시스템을 위한 하드웨어의 선택
위의 글을 읽고도 클러스터를 구성하기로 결정을 내리셨다면, 이제 어떤 구성을 할 것인지를 고민해 봐야합니다. 클러스터는 전체 시스템이 용도에 맞도록 적절한 균형을 유지하는 것이 중요합니다.
하드웨어를 선택할때 가장 크게 고려해야할 점은 이 클러스터에서 작동시킬 프로그램이 무엇인가 입니다. 계산화학분야에서 사용되는
Amber 같은 프로그램은 Disk I/O 가 거의 없으므로 좋은 CPU에 비중을 두게 될 것이고, 생물정보학의 경우 Blast
같은 프로그램들을 많이 사용하게 되면 Disk I/O 가 아주 많아서 Master 의 Disk 쪽에 중점을 두어야 합니다.
저는 클러스터 시스템을 구성할때 우선 Master 를 아주 좋은 사양으로 구입하도록 추천합니다. 위에 적은 것처럼 300만원 정도의 예산이라면 Master 만 구입하시는 것을 추천드립니다. Master 는 모든 Node 를 관리하고, 데이터를 주고, 기록을 하는 곳입니다. 따라서 Master 의 성능이 떨어지면, 클러스터가 정상적으로 작동하기 힘듭니다. Master 를 구성할 때, Disk 에 대해서 고민하게 되는데, 앞으로 확장 가능성이 1%라도 있으면, RAID 시스템을 도입하길 바랍니다.
RAID 시스템은 하드디스크 여러개를 하나의 하드처럼 묵어주는 방식을 지칭하는 말입니다. 위키피디아에 잘 설명이 되어 있네요. 하드디스크를 묶어 줌으로써 속도를 향상 시켜주고 안전성을 높여주죠. RAID 카드는 종류가 많은데요. 보통 10만원 이하인 제품들은 전부 Soft RAID 입니다. 이런건 제가 말씀드린 RAID 시스템이 아닙니다. 제가 주로 사용해본 제품은 AMCC 제품인데요(과거 3ware). 이 제품은 4포트(하드디스크 4개 장착가능) 한것이 지금 55만원 정도 하네요(Amazon 같은 곳에서 구입하면 40만원 정도면 구입할 수 있을겁니다.). 저는 8개, 12개 인 RAID 시스템을 사용했었지만, 요즘은 하드가 Tera Byte 단위로 나오니 4 port 만 되도 충분하지 않을까 생각합니다. 만일 예산이 충분치 않다면, Quad Core CPU 를 2개 장착할 수 있는 메인 보드들중에 괜찮은 Hybrid 방식의 RAID 가 기본으로 달려나오는 것들이 있습니다. 이런 제품으로 우선 사용하다가 다음에 AMCC 같은 곳의 제품을 구입해서 장착해서 이용하셔도 괜찮습니다.
Disk I/O 다음으로 중요한 것이 Network 입니다. 다음글인 클러스터 시스템 구성을 보시면 아시겠지만, 네트웍 부하 때문에 클러스터가 느려지는 것을 막기 위해서 시스템 1대 당 2개의 Lan 카드를 가지기를 추천합니다. . 네트웍 장비는 infinite-band 나 미리넷, 10G ethernet 등 좋은 것이 많지만, 저같은 학생에게는 그림의 떡이고, 1G ethernet 정도면 괜찮은 것 같습니다. Lan card 를 구입한다면, intel 같은 곳의 3~4 만원 대 1G Lan 카드를 구입해야 합니다. 1만원 내외 하는 Realtek 등등에서 나온 제품들은 안전성이 떨어져서 클러스터에 좋지 않습니다(PC급 메인보드에 내장되는 Lan 카드도 이 정도 수준이니 그럴 경우 별도로 장착하셔야 합니다.). 또 저가의 Lan 카드는 네트워크 부팅을 지원하지 않아서 클러스터 구성에 사용할 수 없습니다.
클러스터를 구성하는데 성능에 중요한 CPU 나 RAM 용량 등에 대한 이야기는 안하고, 다른 이야기만 했죠? 그건 CPU 나 RAM 은 굳이 언급하지 않아도 그 중요성을 대부분 알고 있기 때문입니다. 하지만, Disk 와 Network 은 대부분 쉽게 생각하시더군요. 클러스터의 성능은 Disk I/O 와 Network 이 좌우 하는 경우가 많습니다. 이 두 부분에서 문제가 생기면 정말 대책없습니다.
한가지 팁이라면, 구입하실때 VGA 같은 것들은 모두 내장된 걸로 사세요. 그게 마음 편합니다. 그리고 하드웨어를 구입할때 최신 제품은 피하는게 좋습니다. 최신 제품은 대부분 드라이버들이 불안정 해서 클러스터가 이유없이 죽는 경우가 있습니다. 이런 경우도 정말 대책없습니다.
이번 글의 내용은 이전의 글에 있지 않은 것입니다. 생각보다 중요한 부분인데, 많이 고민하지 않고, 구축을 하시더군요. 그래서 이번에 적습니다. 혹시 지나가시던 고수님이 보셨을때 위의 내용에서 잘못된 점이 있으면, 알려주세요. 바로 고치겠습니다.
자연과학이나 공학 분야에서 공부를하고 연구를 하시는 사람들이 가장 많이 접하는 것이 클러스터 시스템일 겁니다. 어느 연구실에서는 돈을 주고 학교 전산원이나 KISTI 같은 곳의 슈퍼컴퓨터에 계정을 사서 사용하기도 하고, 각자 연구실에서 컴퓨터를 묶어서 클러스터 시스템을 직접 만들어 사용하기도 하죠. 제가 전공하고 있는 생물정보학 분야역시 클러스터 시스템이 없으면 연구가 불가능합니다.
저는 전산원의 슈퍼 컴퓨터보다 연구실의 클러스터 시스템을 사용하는 것을 선호합니다. 항상 그렇듯 관리자가 내 맘같지 않고, 하드디스크 용량에 제한이 있으니까요. 생물정보학 연구하는데 용량이 1~2G 필요한 것도 아니고 연구를 하다보면 쌓이는 자료가 1TB를 넘길때도 있는데 항상 용량 체크하고, 자료 백업한다는게 쉬운일이 아니니까요.
먼저 첫번째 글의 제목은 클러스터 시스템의 소개와 이해 입니다. 의외로 클러스터 시스템을 구성하거나 사용하시는 분 중에서도 기본 개념을 잘 모르고 시작하시는 분들이 있습니다. 이러면 구성하기 정말 어렵습니다. 여기서는 클러스터 시스템이 어떤 것인지 부터 다루겠습니다.
먼저 용어 몇가지를 정의 하고 넘어가겠습니다.(이 용어는 제가 이글에서 사용할 용어지 표준 용어는 아닙니다.) 클러스터 시스템은 크게 3부분으로 나눌 수 있습니다.
Cluster Master : 클러스터의 중심이 되는 컴퓨터 입니다. 클러스터가 구동되는 모든 프로그램이 설치되고, Node 컴퓨터들을 작동시키는데 사용되는 Node 의 OS 이미지를 가지고 있습니다. 그리고 사용자는 이 컴퓨터에 접속해서 모든 작업을 합니다. 소규모모의 클러스터 시스템이라면 Master는 보통 1대 입니다.
Cluster Node : 클러스터에서 계산을 담당 하는 컴퓨터입니다. 보통 디스크를 가지고 있지 않고, 부팅시에 Master 에서 OS 이미지를 가져와서 램에 로딩한 뒤에 작동하게 됩니다. Node 의 댓수 제한은 없지만, Master 와 Network 에 걸리는 부하를 고려해서 댓수를 한정해야 합니다.
Network : Cluster 와 Node 를 연결시켜 주는 시스템입니다. 랜선과 랜카드, 스위칭 허브 등으로 이루어져 있습니다. 클러스터 전체의 성능을 결정하는 아주 중요한 장비 입니다.
흔히 클러스터를 구성한다고 하면 크게 2가지 일을 해야 합니다. Master 와 Node 에 OS를 설치하고 설정하는게 첫번째고, 계산 프로그램을 각 Node 에 분산시켜줄 Queueing 시스템 구성이 두번째 입니다. 사실 Queueing 시스템의 구축은 클러스터 시스템과 분리해서 이야기 해야 하지만, 클러스터중에 Queueing 시스템 없는 경우는 없기 때문에 하나의 시스템이라고 생각해도 될 것 같습니다. 여기서 만들 시스템을 의 경우 다음과 같은 구성을 가집니다.
OS : CentOS (RedHat Enterprise Linux Clone) 5.3
Node 구성
Perceus 를 이용한 Diskless 방식
OS : CentOS 5.3
Queueing System : Sun Microsystems N1 Grid Engine
Perceus를 이용한 Diskless 시스템
입니다. OS 와 Node 를 운영할 시스템, Queueing 시스템의 선택은 당연히 구축하는 목적과 편리성에 맞도록 선택해야 합니다. 하지만, 제 생각에는 소규모 클러스터링 시스템에서 대부분 위의 구성이 가장 편리하다고 생각됩니다.
위의 구성중에 Diskless 라는 말이 있습니다. 이것은 Master에만 하드디스크를 두고 Node는 하드디스크 없이 Network File System (NFS) 를 이용해서 Master의 특정 디렉토리를 자신의 하드디스크 처럼 이용하는 방식입니다. 모든 Node 가 하나의 이미지를 사용하므로 시스템의 수정이나 Update 가 편리하다는 장점이 있습니다.
OS는 CentOS로 결정하였습니다. Gentoo, Ubuntu, SuSE, RedHat Enterprise Linux(RHEL), Fedora Core 등 정말 많은 배포본이 있습니다. 하지만 현재 대부분의 계산용 프로그램들이 RHEL을 기준만들어지고, 안전성 면에서도 뛰어나기 때문에 여기서는 RHEL의 Clone 인 CentOS를 선택했습니다.
Queueing System 으로는 Mosix, OpenPBS, Torque, SunGrid Engine 등이 있는데, 관리하기에 가장 편하다고 생각되는 Sun Microsystems Grid Engine 을 사용하겠습니다.
현재 CentOS 5.3, Perceus 1.5.2, SunGridEngine 6.2 update 3 가 가장 최신 버젼입니다. 여기서 문제가 되는것이 Perceus 1.5.2 입니다. 제가 두 곳의 시스템을 구축했을때 한 곳에서는 1.5.0 이 정상적으로 작동하지 않았습니다. 문제가 되었던 시스템이 Dell 이라는 세계에서 가장 많은 컴퓨터를 파는 밴더 제품이었습니다. 그래서 저는 아직 1.4.4 버젼을 이용하고 있습니다.
리눅스 클러스터를 만드는 방법은 정말 많습니다. 이 중에서 제가 주변 사람들에게 배우고 판단하기기에 가장 편리하고 빠르게 구축할 수 있는 방법을 선택했습니다. 실제 구축 이야기는 다음 글에 계속 됩니다.
Perceus 활용 2번째 시간입니다. 이번에는 Module 기능을 이용해서 passwd 와 group 설정을 해보겠습니다.
cluster 를 구축하면 가장 귀찮은 일이 사용자와 그룹을 동기화 하는 것입니다. NIS 같은 것들도 쓰고, 저 같은 경우 Perceus 를 처음 사용할 때는 passwd 파일과 group 파일을 노드 이미지에 넣어서 사용했었습니다.
하지만, 이 작업을 Perceus 에 있는 passwdfile, groupfile module 을 이용하면 간단하게 할 수 있습니다. 우선 이 두 모듈은 처음 활성화 할 때, master 의 /etc/passwd, /etc/group 파일을 이용합니다. 그래서 모듈 활성화 하기 전에 시스템의 설정을 해야 합니다.
앞서 말씀 드린 것 처럼 이 파일은 /etc/passwd 와 /etc/group 파일을 복사해 놓은 것입니다. 이제 node 들을 다시 시작하면 group 과 passwd 가 적용됩니다. 생성된 디렉토리의 구조를 보신 분들은 눈치채셨겠지만, node 그룹별 vnfs 파일별 로 설정하는 것도 가능합니다. 더 자세한 내용은 perceus 메뉴얼을 보세요.
Perceus 를 사용하다 보면, 참 편리하다. 라는 생각을 하게 됩니다. 하지만, 역시 어딜 가나 있는 2% 부족한 부분이 존재하는데요. 이런 부분들을 보충하기 위해서 Perceus 에서는 Module 이라는 기능이 존재합니다. 이런 Module 을 하나씩 활용해 봅시다.
이번에 활용해볼 Module 은 ipaddr 입니다. ipaddr 은 Perceus 작동과정에서 각 Node 에 자동으로 부여되는 IP 를 특정 정적 IP 로 설정하기 위해서 사용됩니다. 또한 기본 장치인 eth0 외에 eth1 과 같은 장치역시 추가할 수 있습니다.
Perceus 에서 ipaddr 모듈을 활성화하기 위해서 다음 명령어를 실행합니다.
# perceus module activate ipaddr
명령어를 실행하면, /etc/perceus/modules/ipaddr 파일이 만들어 집니다. 이 파일에서 각 Node 에 대한 설정을 하게 됩니다. 설정 방식은 단순합니다. 다음과 같은 형식으로 파일에 추가하시면 됩니다.
저는 intel compiler 를 사용하기 때문에 ifort 를 사용하기로 했습니다. 그런데 다음 명령을 실행하기 앞서서 configure_amber 파일을 일부 수정해야 합니다. ifort 를 사용하는 옵션에서 icc 가 아닌 gcc 를 사용하도록 설정되어 있습니다. 저의 경우 이것 때문에 에러를 내면서 설치가 중단되더군요. configure_amber 파일을 열어서 gcc 를 icc 로 고쳐 줍니다. 이제 다음 명령을 내립니다.
# ./configure_amber ifort
config_amber.h 파일이 생성됩니다.
# make serial
을 하시면 설치가 됩니다.
Multi CPU 이용을 위한 Amber10 설치
여기서는 mpich2를 이용해서 설치합니다.
# ./configure_amber -mpich2 ifort
# make parallel
Test 하기
amber 는 설치후 정상적으로 작동하는지 확인할 수 있는 test 방법을 제공합니다.
앞서 설정한 컬러스터링 시스템에 Sun Grid Engine 를 Queueing 시스템으로 사용하였습니다. 이제 Queueing System 에서 MPI 방식의 프로그램을 돌리기 위해서 MPICH2 를 설치하고 둘을 연동시켜 보겠습니다.
MPICH2 를 설치하는 방식은 2개지가 있습니다. 첫번재는 네트웍을 통하지 않고 여러개의 Core를 가지는 한대의 컴퓨터에서 돌아가게 하는 방식과 smpd 를 이용해서 네트웍으로 다른 컴퓨터와 연결하는 방법이 있습니다. 각각의 장단 점이 있으므로, 자신에게 맞는 방법으로 설치하시면 됩니다.
여기서는 2가지 종류의 컴파일러를 사용해서 각 컴파일당 2개의 종류를 가지게 되어서 총 4가지 경우로 설치가 이루어집니다. 설치하실 분들은 자신에게 알맞는 것을 사용하시면 됩니다.
Intel compiler + MPICH (gforker)
export CC=icc
export CXX=icpc
export FC=ifort
export F90=ifort
export F77=ifort
make distclean
./configure --prefix=/opt/mpich2/gforker.intel --with-pm=gforker
make && make install
Intel compiler + MPICH (smpd)
export CC=icc
export CXX=icpc
export FC=ifort
export F90=ifort
export F77=ifort
make distclean
./configure --prefix=/opt/mpich2/smpd.intel --with-pm=smpd --with-pmi=smpd
make && make install
GCC + MPICH (gforker)
export CC=gcc
export CXX=g++
export FC=gfortran
export F90=gfortran
export F77=gfortran
make distclean
./configure --prefix=/opt/mpich2/gforker.gcc --with-pm=gforker
make && make install
GCC + MPICH (smpd)
export CC=gcc
export CXX=g++
export FC=gfortran
export F90=gfortran
export F77=gfortran
make distclean
./configure --prefix=/opt/mpich2/smpd.gcc --with-pm=smpd --with-pmi=smpd
make && make install
이번에는 Queueing System 을 설치할 차례입니다. Queueing
System 은 사용자가 돌리려는 프로그램을 현재 아무런 일도 하고 있지 않는 Node를 찾아서 자동으로 실행시켜 주는 프로그램을 말합니다. Cluster 에 가장 중요한 프로그램이라고 할 수 있는데요. 다양한 Queueing System 이 존재합니다. OpenPBS, Torque, Sun Grid Engine 중 우리는 Sun Grid Engine 를 설치할 것입니다.
알림 : 앞으로 할 모든 내용은 root 권한에서 이루어 진다는 가정을 하고 있습니다.
SGE 의 구성
SGE 는 전체 시스템을 몇가지 host 로 나눠서 관리하고 있습니다. 기본적으로 알아야 할 몇 가지를 알아보면
Administrator Host : 전체 시스템을 구성하는 여러가지 설정들을 할 수 있는 Host. Cluster 를 구성하는 모든 컴퓨터들은 이 admin host 로 지정하게 된다.
Submit Host : Queueing 시스템에 Job 을 넣는데 사용되는 컴퓨터. 여기서는 Cluster Master 가 이 역할을 하므로 Cluster Master 를 Submit Host 로 지정한다.
Executive
Host : Queue 에서 job 을 가져와서 실행하는 컴퓨터. Cluster Node 들이 이 것에 해당한다. Cluster
Master 에서도 Job 을 실행하고 싶으면, Cluster master 도 이것으로 등록하면 된다.
SGE 를 실행하는데 사용할 계정 설정
SGE를 root 계정으로 작동시키는 것 보다 별도의 계정으로 동작시키는게 좋습니다. 여기서 SGE가 사용할 계정은 sge 로 정합니다. 그리고 sge 가 사용할 uid 는 20202 로 하겠습니다.
# useradd -u 20202 sge
파일 받기 및 압축 풀기 SGE 공식 홈페이지 에서 왼쪽 메뉴중 Get GE Binaries 에서 안정 버젼인 GE 6.2 Binaries 을 선택합니다. 6.2 버젼은 이전 버젼과는 달리 common 과 platform-specific binary 가 한 파일에 묶여 있습니다. 여기서는 62 Bit 를 기준으로 하므로 ge62_lx24-amd64.tar.gz 파일을 받습니다.
받은 파일의 압축을 풀면 다음의 2가지 파일이 나옵니다.
ge6.2/ge-6.2-bin-lx24-amd64.tar.gz
ge6.2/ge-6.2-common.tar.gz
이 파일은 특별한 과정 필요없이 압축만 풀면 사용할 수 있도록 되어있습니다. 받은 파일을 설치경로로 이동한 뒤에 압축을 풀도록 합니다. 여기서는 "/home/sge" 에 설치하도록 합니다.
# mkdir /home/sge
# cp /root/ge6.2/ge-6.2-bin-lx24-amd64.tar.gz /home/sge
# cp /root/ge6.2/ge-6.2-common.tar.gz /home/sge
# cd /home/sge
# tar xfz ge-6.2-bin-lx24-amd64.tar.gz
# tar xfz ge-6.2-common.tar.gz
/etc/service 수정
SGE 이 작동하기 위해서는 어떤 Port 를 이용해서 Daemon 들 사이에 통신을 할 것인가를 알려주어야 합니다. SGE 는 이 내용을 사용자가 /etc/service 파일에서 지정하게 되어있습니다.다음 내용을 /etc/service 파일에 넣어 줍니다.
sge_qmaster 536/tcp
sge_execd 537/tcp
/etc/hosts 수정
CentOS 를 설치하게 되면 hostname 이 127.0.0.1 과 같이 묶여 있습니다. 이 경우 SGE 설치과정에서 에러가 납니다. 그래서 /etc/hosts 파일을 열어서 이를 수정해 줍니다. hostname 을 127.0.0.1 이 아닌 다른 IP (eth0 의 IP 등)와 맞춰주면 됩니다. 저는 다음과 같이 설정했습니다.
SGE_ROOT 지정
환경설정 변수에 SGE_ROOT 를 지정해야 합니다. RedHat 계열의 시스템(RHEL, CentOS)의 경우 다음 내용을 가진 파일을 /etc/profile.d/sge.sh 에 추가합니다.
SGE_ROOT=/home/sge
export SGE_ROOT
환경 설정을 반영하기 위해서 다음 명령을 수행 합니다.
# source /root/.bashrc
SGE Que Master 설정
설치는 "/home/sge/install_qmaster" 를 실행하면 됩니다.
# cd /home/sge
# ./install_qmaster
첫 화면에서 License 가 나오고 이 내용에 동의하면, 다음부터 설정 창으로 넘어가게 됩니다. 설정과정은 특별한 이유가 없다면 기본 값을 따라 가면 됩니다. 입력 중에 Choosing a Grid Engine admin user name 항목 입력이 있습니다. 여기에는 앞에서 설정한 sge 계정을 지정해 줍니다.
Choosing a Grid Engine admin user name
--------------------------------------
Please enter a valid user name >> sge
Installing Grid Engine as admin user >sge<
Hit <RETURN> to continue >>
그리고 중간에 잘못 입력한 것이 있으면 Ctrl+C 를 눌러서 중단시키고 ./install_qmaster 를 다시 실행시키면 됩니다.
Adding admin and submit hosts 항목에서 사용할 node 들의 정보를 추가해도 되고, 이후에 추가 하셔도 됩니다. 여기서는 나중에 하겠습니다. Queue Master 의 기본 설정이 끝난 것입니다.
설정파일 등록
기본 설정이 끝나면 생성된 설정파일이 사용자가 로그인 할때 항상 실행되게 해야 합니다. 여기서는 profile.d 에 sge 설정을 직접 등록하겠습니다.
perceus vnfs image 에 sge 설정 추가 및 /etc/service 수정
이제 각 Node 를 sge의 queue 에 추가해야 합니다. 우선 해야 할 일은 앞서 설정한 파일의 결과로 나온 sgeexecd 파일을 node가 처음 켜질때 자동으로 실행하도록 하는 것입니다.
가끔 편리성을 위해서 간단한 웹페이지들을 만들다 보면, 허용된 사람들만 볼 수 있도록 제한을 걸어야 할 경우가 생깁니다. 이 때 간단히 아파치에 설정을 더해서 쉽게 수정할 수 있는 방법이 있습니다.
.htaccess 파일을 이용
.htaccess 파일은 특정 디렉토리와 그 하위에 있는 디렉토리들을 간단하게 설정할 수 있게 해주는 파일 입니다. 따라서 특별한 설정이 필요한 디렉토리에 .htaccess 파일을 만들고 그 안에 인증 관련된 설정을 해주면 손쉽게 적용할 수 있습니다.
특정 IP 나 Domain 에서의 접속만을 허용하기
apache 는 간단한 형식으로 특정 IP 대역 이나 domain 에서 오는 접속만을 차단하거나 허용할 수 있도록 설정할 수 있습니다. 간단한 예제를 보면
Order Deny,Allow
Allow from 192.168.1 10.0.4
Allow from neosgen.net
Deny from all
이와 같은 형식입니다. 위의 내용을 .htaccess 파일에 넣고 이 파일을 웹서버의 특정 위치에 넣으면, 그 디렉토리 이하는 192.168.1.* , 10.0.4.* 의 IP 를 가진 컴퓨터들과 neosgen.net 이라는 도메인 네임을 가진 컴퓨터 만이 접속할 수 있게 됩니다.
간단한 ID 와 암호 설정 - ID/암호 파일 만들기
특정 컴퓨터가 아닌 ID 와 암호를 이용해서 설정하는 방법도 있습니다. 먼저 ID 와 암호 파일을 만들어야 합니다. 이것은 apache 에 기본으로 들어있는 htpasswd 라는 프로그램을 이용합니다. 첫번 째 사용자를 만들기 위해서는 다음과 같이 합니다.
$ htpasswd -cm /home/hong/security [ID]
New password: *****
Re-type new password: *****
Adding password for user [ID]
$
이 명령을 내리면 자신의 홈디렉토리에 security 라는 파일이 생성됩니다. 이 파일에는 ID 와 이 ID 에 해당하는 암호가 저장됩니다. 사용자를 추가하는 것도 가능합니다. 사용자를 추가할 때는 'c' 옵션을 빼고 사용합니다.
$ htpasswd -m /home/hong/security [ID]
New password: *****
Re-type new password: *****
Adding password for user [ID]
$
암호파일을 이용한 인증
위에서 생성한 암호파일을 이용해서 인증을 하려면 다음 내용을 .htaccess 에 추가하면 됩니다.