Linux

[사설 클라우드 구축] 기본 조건 및 아이디어

Posted 2013. 05. 26 Updated 2014. 04. 20 Views 13519 Replies 0
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

현재 드롭박스(DropBox), N드라이브, UCloud, 구글 드라이브(Google Drive)와 같은 무료 클라우드 서비스가 많이 나와 있습니다.

저는 학업에 있어 강의자료나 과제 등의 파일들을 관리함에 있어 여러 가지 상용 클라우드 서비스를 사용했었습니다. 주로 사용한 서비스는 KT에서 제공하는 UCloud 였는데, 이 글을 쓰고 있는 시점을 기준으로 KT 회원에게는 50GB 무료 공간을 할당해 주고 있습니다.

이런 클라우드 서비스가 없던 시절에는 USB메모리나 외장하드를 들고 다니면서도 아무 문제 없이 잘 지냈었지만, 실시간 동기화의 편리함을 맛본 이후에는 아무리 작은 외장하드나 USB 메모리도 거추장스럽게 느껴지곤 합니다. - 클라우드 서비스가 편리하다는 것은 부정할 수 없는 진리인 셈입니다.ㅎㅎ

클라우드 서비스들은 인터페이스나 사용 방법에 약간씩 차이는 있으나, ① 언제 어디서나 접근이 가능한 웹 폴더를 제공한다는 점과 ② 여러 단말기의 파일을 실시간으로 동기화해주는 '실시간 동기화 폴더' 서비스를 제공한다는 공통점이 있습니다.

서로 장단점이 있고, 또한 여러 서비스를 함께 사용하거나 추가 요금을 지불하면 더 향상된 기능을 사용할 수 있지만, 항상 2% 부족하다는 느낌을 받아 왔습니다. 그 대표적인 문제점들을 나열해 보면 다음과 같습니다.


1. 우선, 가장 큰 문제였던 용량의 한계

이 포스트를 작성하고 있는 2013년 5월 25일 기준으로 무료 회원가입시 DropBox는 2GB, N드라이브는 30GB, 구글 드라이브는 5GB의 용량을 제공하고 있습니다.

사용하던 UCloud는 50GB의 상당히 큰 용량을 제공했지만, 우선적으로 사용할 수 있는 용량에 상한이 있다는 게 영 거슬리지 않을 수가 없었습니다. 드롭박스의 경우 2GB 밖에 제공하지 않았으므로, 예초에 고려 대상에서 제외했습니다.

게다가 수십GB 정도의 용량으로는 문서파일이나 음악 파일 정도만 관리할 수 있을 뿐, CD/DVD 이미지나 영화 파일 등을 관리하기에는 다소 버거울 수밖에 없습니다. (요즘 통상적으로 사용하는 백업용 외장하드 용량이 적어도 500GB는 된다는 점을 감안하면 이 말이 허구가 아님을 알 수 있습니다..)

결국 UCloud로는 문서파일 정도만 관리하는 용도로 사용했고, 이 방식에서는 용량이 부족함을 느끼지는 않았지만, 유클라우드는 또 다른 문제점을 안고 있었습니다.


2. 동기화 속도의 한계

상용 클라우드 서비스의 경우 서버 한대를 수 많은 사람들이 나눠서 사용하는 구조이므로 업/다운로드 및 동기화 속도가 느릴 수밖에 없습니다.

국내 서비스의 경우 그나마 양호한 편이었으나, 구글 드라이브의 경우 중계 서버가 해외에 있는 관계로 파일이 태평양을 건너다녀야 하기 때문에 속도가 도저히 사용할 수 없을 정도로 느리게 느껴졌습니다. (다른 곳에 중계 서버를 확충했는지 여부는 확인해 보지 않았다.)

UCloud의 경우 클라이언트가 무겁고 답답했으며, 동기화 속도가 파일 저장 속도를 따라가지 못해 File-Lock과 관계된 충돌이 자주 발생하였습니다.. 특히, 동기화중인 파일을 삭제하거나 수정할 수 없는 점도 답답함을 증가시키는 한 가지 원인으로 작용했습니다.


3. 개인 자료를 다른 서버/회사에 맡기는 찝찝함

다른 이유들은 '약간 불편한' 사항일 뿐이므로 제껴 놓더라도, 저에게 있어 가장 큰 문제는 이 점이었습니다.

보통 실시간 동기화를 하는 자료들은 대학생인 본인의 경우 과제나 레포트부터 시작하여 개인/팀 프로젝트 자료, 이력서나 제안서, 또한 하루에도 수십장씩 생산되는 스마트폰으로 찍은 사진들이 대부분입니다.

이런 '지극히' 개인적인 자료들을 단지 실시간으로 동기화 하는 편리함을 누리기 위해 제 3자에게 보관하도록 한다는 점이 아주 찝찝하고 별로 상쾌하지 않았습니다.

그리고, 유클라우드를 불신하게 된 결정적인 계기가 된 일이 있었는데, 바로 휴대폰 요금이 연체됬다고 클라우드 접속을 일시정지 시켜버린 사건입니다. -_-;;

미납요금을 내고 클라우드 서비스가 정상화 된 뒤, 저장되어 있던 자료를 모두 다운로드하고 바로 계정을 닫아버렸음은 물론립니다

집에 서버를 직접 차리고 손수 웹서버를 운영하는 데에도 다분히 다음과 같은 저의 철학 (..이라 쓰고 '고집'이라 읽는다..-_-)이 녹아 있습니다.

"내 자료는 내가 직접 소유하고, 내가 직접 관리한다."

이런 생각이 자리잡게 된 데는 과거 국내 호스팅 서비스를 이용하면서 겪었던 여러 차례의 자료 소실이나 관리 소홀 등에서 비롯되었다고 할 수 있을것입니다. (이 점에 대해서 늘어놓자면 이건 또 다른 연재 포스팅 소재가 될 것이니, 이쯤에서 줄이도록 하겠습니다.)

또 의도치 않게 서두가 길어졌는데.. 이제(서야) 본론으로 들어가도록 하겠습니다. =.=


'공유' vs '동기'

공유와 동기는 한 단말기에서 작성한 파일을 복수의 다른 단말기에서도 사용할 수 있도록 한다는 점에서 유사한 개념이지만, 결정적인 차이점이 있습니다.

▶ 공유(Share) : 한 곳에서 작성한 파일을 다른 곳에서도 접근할 수 있도록 하는 개념입니다. 파일은 한 곳에만 위치하며, 접근하는 단말기로 복사되지 않는다.

▶ 동기(Synchronize) : 한 곳에서 작성한 파일을 다른 곳에도 똑같이 위치하도록 하는 개념입니다. 파일은 연결된 하나 혹은 다수의 단말기에 똑같이 복사되며, 중앙 관리 시스템(서버)에 의해 한 단말기에서 발생한 수정이 연결된 모든 단말기에도 동시에 반영됩니다.

말은 거창하지만, 공유와 동기는 단말기가 네트워크에서 분리되었을 때 파일에 접근이 가능하냐 여부로 그 차이를 쉽게 이해할 수 있습니다.

공유된 파일이나 폴더의 경우 단말기가 네트워크에서 분리되면 공유 호스트 단말기가 아닌 이상, 접근이 불가능해집니다. 파일이 한 곳에만 위치하므로 당연한 결과입니다.

반면, 동기화 파일이나 폴더의 경우 단말기가 네트워크에서 분리되더라도 단절 직전까지 동기화된 모든 파일이나 폴더에 접근할 수 있습니다. 단, 당연히 이후 발생하는 수정 사항은 바로 다른 단말기에 반영되지는 못하겠죠. 하지만 단말기가 이후 네트워크에 연결되면 중앙 관리 시스템에 의해 다시 동기화를 수행하게 됩니다.


어떻게 동기화 폴더를 구현할 것인가?

공유와 동기의 개념을 자세히 들여다 보면, 동기가 공유의 확장임을 알 수 있습니다.

즉, 공유된 파일을 로컬 디스크에 복사해두고, 주기적으로 원본 파일과 사본 파일의 차이를 비교하여 업데이트가 발생한 파일을 다른 쪽에 덮어씌우는 동작을 반복하면 그게 바로 동기화가 되는 것입니다.

네트워크에 연결된 서로 다른 PC간의 동기화 폴더를 구현하기 위해서는 다음과 같은 두 단계를 거쳐야 합니다.

1. 원격에 있는 대상 폴더를 로컬 파일 시스템에 마운트 (공유 폴더, 웹 폴더, 네트워크 드라이브 등)
2. 마운트된 폴더와 지정된 로컬 동기화 폴더를 실시간 비교하며 상호 업데이트

즉, 원격 폴더를 내 컴퓨터로 가져 온 다음 내 컴퓨터에 있는 자료와 계속 비교하면서 서로 복사를 수행하도록 하는 것입니다.

이런 개념을 직접 구현하려면 다소 버겁겠지만, 다행이도 잘 만들어진 솔루션이 나와 있습니다. 우리는 그것을 가져다가 잘 사용해 주기만 하면 되는 것이죠.. ^-^


실시간 동기화 폴더 구현

※ 여기서 다룰 내용은 Ubuntu 서버Windows7 클라이언트로 접속해서 동기화 폴더를 구현하는 방법입니다. (구현에 사용한  우분투 버전은 12.04 LTS이며, 다른 버전에서도 같은 방법으로 실시간 동기화 폴더를 구현할 수 있습니다.)


원격 폴더 마운트

- 공유 폴더 (SAMBA 서버 활용) : LAN 영역

- 네트워크 드라이브 (FTP 서버 활용) : LAN 및 WAN 영역


상호 업데이트

- FreeFileSync


* 다음 포스트에서 본격적으로 구체적인 구현 방법에 대해 다루도록 하겠습니다. *