NAS & ODROID/NAS, ODROID

오드로이드 XU4Q와 CloudShell2로 NAS 구축하기 - 개요

awesometic 2017. 6. 21. 20:53
반응형

제 NAS 시스템을 XU4QCloudShell2로 이사할겁니다 :)

새로운 장비로 갈아타면서, CloudShell2에 관심이 있으신 초보자분들을 위해 하나씩 포스팅하겠습니다.


기존 XU4는 제 (언젠가) 안드로이드 개발 장난감으로 쓸 수도 있지만..

하둡으로 쓰기엔 2대밖에 없어서 너무 부족하고.. 더 생각해봐야겠네요 :) 2대로도 가능한가?


이번 포스팅에선, XU4Q, CloudShell2 소개와 간단한 설명을 하려고 합니다.



 

오드로이드 시리즈 중 XU4에서 쿨러 없이 방열판으로만 구성된 XU4Q가 있습니다.

사진 출처는 하드커널

 

얘가 XU4고,


얘가 XU4Q 입니다. 사진만 봐도 하나는 선풍기가 달려있고 하난 없죠.

Q는 아마 Quiet 일까요, 조용하단 뜻에서? XU4의 쿨러 소음이 나름 신경쓰일 수 있다는 점에서, XU4Q는 좋은 선택이 될 수 있어요.

하지만 조용한 대신 XU4Q는 XU4보다 최종 성능이 낮게 나타날 수 있습니다. 실제로 하드커널에서 제공해주는 데이터 시트를 보면 커널 빌드 시 XU4 대비 20% 더 오래 걸린다고 하네요.

혹시 궁금하실까봐 여담으로 쓰자면, 발열 때문에 더 오래 걸리는 겁니다.

CPU는 기본적으로 TDP란 게 잡혀있습니다. 열 설계 전력(Thermal Design Power)의 준말이에요. 전력의 단위인 W로 표현할 수 있는데, CPU가 최대로 작동할 때 만약 TDP가 20W라면 20W치 열을 잡아줄 쿨링 시스템이 구축되어야 합니다.

예를 들어, 노트북의 경우 최신 아키텍쳐인 카비레이크 i7-7500U의 TDP는 15W입니다. 노트북 케이스(껍데기) 설계가 TDP 15W의 CPU를 식혀줄 수 있어야 CPU가 마음껏 모든 성능을 발휘할 수 있어요.

만약 안 그렇다면? CPU가 버틸 수 있는 최대 온도를 넘어가고, 뻗어버립니다. 터진다고도 해요. 중요한 작업 중 이런 일이 발생하면 굉장히 곤란하겠죠. CPU가 뻗지 않게끔 하는 모든 기능이 작동합니다. 보통 CPU를 살리기 위해 강제로 전원을 내리거나 재부팅하지만, 요새는 개발자가 살기 위해서 최대한 안 뻗게 만들어요. 

안 뻗게 하는 그 기능때문에 성능이 살짝 낮아진 겁니다. XU4Q는 방열판만을 사용하기 때문에 TDP가 감당이 안 되는 거에요. CPU가 최대 온도에 자꾸 도달하려 하니 특정 온도에서 CPU 성능을 낮춰(Throttle-down) 발열을 줄이는 겁니다. 쓰로틀링이라고도 해요. 제대로된 쿨링이 될리 없는 스마트폰에서 자주 보이는 현상인데, 몇몇 스마트폰은 이런 쓰로틀링 현상 때문에 특별히 욕을 많이 먹고 있다고도 합니다.

하지만 크게 상관 없습니다. NAS 용도로는 커널 빌드 등의 엄청난 작업을 할리가 없으니 자주 쓰로틀링에 걸리진 않을 거에요. 오히려 그런 용도로는 XU4Q가 조용하니까 더 좋다고 생각합니다.

참고로 CPU Governor 튜닝을 통해서도 간접적으로 죽지 않게끔 조절이 가능합니다. 최대 주파수를 낮추고, 상황에 따라 적절한 스케일링 주파수를 설정하는 방법으로요. 하지만 위험하기 때문에 보통 CPU Governor론 배터리를 챙기는 목적 등등에 초점을 두고, 아주 밑단에서 설정된 쓰로틀링 온도는 신경쓰지 않는 것 같습니다.


아무튼 이런 XU4Q와 함께 사용할 CloudShell2은

이런 모습입니다.

외부의 LCD 모니터를 통해 실시간으로 NAS의 상태를 모니터링 할 수 있습니다. 이 점이 매우 마음에 들어요.

CPU 사용량, 온도 뿐 아니라 하드디스크 온도와 I/O 작업 정도, 저장소 사용량도 알 수 있습니다. 심지어 가끔 초시계도 볼 수 있습니다. 능력이 된다면 직접 설정해도 재밌을 것 같구요.

사실 가장 중요한 건, 이 케이스만 있다면 RAID0와 RAID1을 구성하실 수 있고, UASP도 지원됩니다!


이 글은 초보자들을 위한 글이니까 RAID와 UASP도 간단하게 설명드리고 싶네요. 특히 RAID는 자작 NAS에 있어서 정말 중요한 기능입니다.

RAID는 Redundant Array of Independent Disks 혹은 Redundant Array of Inexpensive Disks의 준말이랍니다. 복수 배열 독립 디스크, 디스크 어레이(Disk Array)라고도 하네요. 사실 저도 이쪽 계열이 아니라 잘 안 와닿지만 간단하게 같은 종류와 용량인 둘 이상의 저장 장소를 부르는 겁니다.

그리고 RAID는 레벨이 있습니다. 표준 레벨로 0 ~ 5가 있는데, 여기서 0과 1을 지원한다는 거에요.

그림 출처는 위키피디아

RAID0은 최소 2개의 디스크로 이루어집니다. 그림과 같이 데이터를 넣을 때 하나의 데이터 덩어리를 조각내 동시에 두 개의 디스크로 나눠 담습니다. 그리고 읽을 때도 두 곳에서 연관된 데이터를 동시에 읽어 들입니다. 동시에라는 말이 중요한데, 결국 속도가 2배정도가 된다는 말이죠. 속도를 얻는 대신 둘 중 하나라도 손상되면 그 데이터를 찾는 것이 어려워지는 게 단점입니다. 하이 리스크 하이 리턴이네요.

RAID1도 최소 2개의 디스크로 이루어집니다. 얘는 같은 데이터를 모든 디스크에 똑같이 담습니다. 하드디스크가 3갠데 RAID1로 묶여있으면, 영화를 하나 담아도 같은 영화 파일이 하드디스크 3개에 똑같이 들어가는 거에요. 굉장히 비효율적이라고 생각할 수 있는데, 하드디스크 3개중 2개가 운명적으로 동시에 손상이 되더라도 하나는 살아 남았기 때문에 데이터(내 영화)를 보존할 수 있습니다. 이런 안정성때문에 각자의 소중한 데이터를 담는 NAS엔 꼭 필요하죠.

RAID는 공통적으로 운영체제에선 하나의 디스크로 보입니다. 3TB 2개를 사서 RAID로 묶었는데 내 컴퓨터에 하드디스크 하나만 나와요! 사기당한듯! 이런 경우 RAID로 매우 잘 묶으신 겁니다.

이런 RAID를 하드웨어적으로 지원한다는 거에요. 자작 NAS에 굳이 속도를 위한 RAID0가 필요없으니 RAID1로 데이터를 보존하면 딱 좋겠죠.


나머지 하나인 UASP는 UAS라고도 하는 USB Attached SCSI를 의미합니다. 여기서 SCSI는 스카시라고도 하는 주변기기 직렬 연결 규격 표준이랍니다. 스카시 디스크 하면 SCSI 인터페이스를 따르는 디스크라고 보시면 되고, 요새 접할 만한 저장 장치는 거의 SCSI입니다. 따라서 UASP는 SCSI 주변기기의 USB 사용을 위한 프로토콜이 되겠죠.

근데 UASP가 왜 필요하냐면, 간단하게 기존의 방법으로 SCSI 장치를 USB를 이용해 사용하면 많은 병목 현상과 대기 시간이 발생합니다. 보통 USB 외장 하드디스크에서 이런 현상을 찾을 수 있어요. 외장 하드에서 컴퓨터로 데이터를 주고받을 때, 외장 하드 용도로만 쓰니 그냥 주고받으면 되는데 USB의 특성상 해야만 하는 작업들을 함으로써 오버헤드가 길어진다고 생각하시면 됩니다.

그래서 USB로 SCSI 장치를 연결할 때를 위한 새로운 규칙을 만들자 해서 만든 게 UAS(UASP)입니다. 불필요한 작업들도 없애고, 최적화시킨 새로운 규칙입니다. 따라서 성능 향상이 있어요. 최소 3, 40%의 성능 향상을 보장한다고 하네요. 새로운 규칙이니 외장 하드에서도 지원해야 하고, 외장 하드를 꼽는 컴퓨터에서도 지원해야 합니다.

사실 이건 IOPS가 높은 SSD같은 저장장치에서 더 효과를 볼 수 있는데, HDD라도 없는 것보다 있는 것이 모든 측면에서 훨씬 낫습니다. 체감되는 성능 향상이 있어요.

참고로 오드로이드 XU4(XU3, XU4Q)는 4.9 커널부터 정식 지원됐습니다. CloudShell2에선 CloudShell2 에 포함된 보드에 SATA 규격으로 하드디스크를 연결하고, 그 보드와 오드로이드를 USB로 연결합니다. UASP를 CloudShell2 보드에서도 지원하기 때문에 USB로 연결되더라도 높은 성능을 기대할 수 있다는 겁니다.


RAID와 UASP 설명이 너무 길어졌네요.. 하지만 자작 NAS 관리자라면 알아둬야 한다 생각해서 길게, 찾아보면서 써봤습니다.

다음 포스팅부터는 얘네를 조립하고, 설정해보도록 하겠습니다 :)

반응형