iDev/Raspberry Pi

라즈베리 파이로 타임 머신 서버 구성하기

KraZYeom 2013. 2. 11. 15:17
반응형

원문 : Raspberry Pi – Time Machine Server 


타임 머신을 사용하여 백업을 하고 있었긴 했지만, 유선으로 백업을 해야하는지라 항상 연결되지 않아서 듬성 듬성 백업을 했었다. 그래서 타임 캡슐을 살까하다가 어마어마한 가격(36~59만원)에 좌절하고, 에어포트 익스프레스는 HDD를 지원하지 않아서 에어포트 익스트림을 22만원이라는 저렴하지 않은 가격에 구입을 할 까 생각을 하고 있었다. 그러던 찰나 집에 뒹굴던 Raspberry Pi(라즈베리 파이)를 잘 사용하면 타임 머신 서버로 사용 가능하다는 것이 생각이 났다. 그래서 삽을 들었다. 역시나 삽질은 한번에 되지 않는 법. 이리저리 찾아 다니다가 괜찮은 블로그 포스팅을 발견하여 번역을 하기로 했다. (원문의 저자도 나와 똑같은 글 2개를 참조해서 작성을 했음.) 그리고 원문 포스팅 날짜가 2013년 1월 24일로 완전 최근에 작성되어서 별다른 어려움이 없었다. 




라즈베리 파이로 애플 타임 머신 서버를 구동하기 위해 잠시 삽질을 했다. 원래 ARM 용 Arch 리눅스에서 사용하길 원했지만, 운이 없었는지 몇 번의 삽질 끝에 Raspian 이미지를 사용해야겠다고 마음을 먹었다. 고정 아이피에서 동작하고 있는 라즈베리 파이가 있다고 가정하고 필요한 것은 다음과 같다.

고정 IP를 가진 라즈베리 파이(Raspberry Pi) (나는 512MB 램의 B 모델을 가지고 있다. 나는 256MB를 가지고 있는데...)

Raspbian를 담고 있는 메모리 카드(2012-12-16-wheezy-raspbian.img 이미지를 사용하였다. 나도...)

- 파워를 공급 받는 외장 HDD

- 네트워킹 디바이스와 케이블 (예: 라우터/스위치)

 

1. 외장 HDD 포맷 하기

처음으로, 맥에 사용하기 위해서 외장하드를 case sensitive Mac Journalled file system로 포맷을 한다. 이렇게 하기 위해서는 외장 HDD를 맥에 연결하고 OS X에서 Utilities > Disk Utility를 실행한다. 맥에 연결된 모든 드라이브를 포함하는 왼쪽 메뉴에서, 외장 HDD를 설택한다. 선택된 드라이브에 모든 데이터를 삭제할 예정이기 때문에 100% 확인하고 선택을 하라. 올바르게 선택된 드라이브에서 윈도우의 오른쪽 수평 메뉴에서 'erase option'을 선택한다. 


Mac OS Extended (Journaled) 선택해서 올바르게 드라이브를 포맷하기위해 이름을 원하는 데로 지어라. 나는 TimeMachine으로 정했다. Erase를 클릭한다!


드라이브의 포멧이 끝나면 메뉴에서 다음 옵션인 Partition으로 이동한다.

전체 드라이브를 하나의 파티션으로 만들기를 원한다 그래서 옵션을 아래와 같이 선택하고 Apply를 클릭한다.


Partition Layout: 1 Partition

Name: Time Machine

Format: Mac OS Extended (Journaled) – 가능 하다면 case sensitive 도 함께.

Size: 최대한 크게 

 

2. 맥 파일 시스템을 위한 라즈베리 파이 준비 

처음으로, 맥에서 HDD를 분리하고 라즈베리 파이에 꼽는다. 이렇게하면 라즈베리 파이의 베쉬 터미널에서 외장 HDD의 중요한 정보를 얻을 수 있다. 맥의 디스크 유틸리티를 사용하여 만든 파티션의 UUID가 필요하다. 그렇게하기 위해서 다음 명령어를 사용한다.

$ sudo blkid


$는 실제 명령어에 포함되지 않는 것을 확인하라. 이것은 단지 비-루트 배쉬 터미널을 사용을 의미한다. 명령어를 입력하고 나면 사용자 패스워드를 입력하는 프롬프트가 나타난다. 이후에 저장 장치가 포함된 모든 연결된 디바이스가 리스트로 나타난다. 하나의 HDD를 연결하였으면 하나의 파티션의 경우 대부분의 경우 /dev/sda1를 확인 할 수 있다. ( 나의 경우엔 /dev/sda2 ) "TimeMachine" 레이블의 파티션의 UUID를 다른곳에 적어놓는다. 나중에 파티션을 마운트 할 수 있도록 맥 파일 시스템 지원을 다운로드하고 설치해야한다. 그러나 먼저 모든 패키지가 최신인지 확인하기 위해서 업데이트를 실행한다. 

$ sudo apt-get update


그리고 파티션 지원을 설치하기 위해서는 다음 명령어를 실행한다.

$ sudo apt-get install hfsplus hfsutils hfsprogs

Y/n 답변 프롬프트가 한 번 또는 몇 번 나타난다. 각 프롬프트 마다 y를 입력한다. 라즈베리파이는 모든 필요한 패키지를 다운로드하고 그것들을 자동으로 설치한다. 완료되면 명령어 프롬프트로 돌아온다.

 

3. 타임머신 파티션을 마운트하기 위해 새로운 디렉토리 생성하기

타임머신 파티션을 마운트 할 디렉토리를 생성해야 한다. 

$ sudo mkdir /mnt/TimeMachine


이제 /etc/fstab 파일을 사용하여서 영구적인 마운팅 설정을 만들 것이다. fstab파일을 읽고 시스템이 부딩할 때 마다 자동적으로 나열된 디렉토리에 드라이브를 마운드한다. 단지 주어진 디렉토리에 미디어의 파티션을 마운트하기 위한 부트 스크립트 같은 것이다. 파일을 편집하기 위해서는 루트 사용자로 다음 명령어로 파일을 열어야 한다.

$ sudo nano /etc/fstab


화살표 키로 파일의 마지막으로 이동한 후 아래를 입력한다.

UUID="XXXX-XXXX-XXXX-XXXX" /mnt/TimeMachine hfsplus rw,force,exec,auto,users 0 3


XXXX부분은 이전 2번째 단계에서 적어놓은 UUID 이다. CTRL + O를 사용하여서 파일을 저장한다. 마지막 라인에 추가를 해야한다. 다른 데이터는 지우면 안된다. CTRL + X를 눌러서 종료한다. /etc/fstab 파일에 외장 HDD의 파티션이 있다. 그러므로 라즈베리 파이는 USB 포트에 HDD가 연결되지 않으면 부팅을 하지 않는다. 이것이 몇 가지 이슈 상황을 만들었다. ( 몇 번 삽질을 했다. UUID가 맞는지를 확인하라. )

라즈베리 파이를 리부팅한다. fstab 파일은 타임머신을  /mnt/TimeMachine 디렉토리로 자동 마운트 한다는 것을 기억하라. 

부팅이 완료되면 TimeMachine 파티션 디렉토리로 이동한다. 그리고 모든 것이 잘 동작하고 있는지 확인하기 위해 테스트 디렉토리를 생성한다.

$ cd /mnt/TimeMachine

$ sudo mkdir test


또한 mount 명령어를 사용하여 /dev/sda1( 나는 /dev/sda2 )가 /mnt/TimeMachine에 맵핑이 되었는지 확인한다.또한 rw 글자가 결과에 잇는지 확인한다. 읽기/쓰기 권한이 파티션에 있는지 확인해야 한다. 3단계의 마지막 파트는, 사용자 pi가 맥에서 share로 로그인하는 사용자이기 때문에 소유권을 부여한다. 다음 명령어를 입력한다.

$ sudo chown -R pi /mnt/TimeMachine

 

4. Netatalk와 Avahi 설치하기

마지막으로, 라즈베리 파이가 네트워크 상에서 맥과 통신을 하기 위해 사용하는 서비스의 설치가 필요하다. 이 작업을 수행하기 위해서는 몇 가지 패키지 설치를 해야하고 소스로 부터 Netatalk를 설치해야 한다. Netatalk는 타임머신 공유 드라이브를 알려주고 백업 데이터와 통신하는데 사용하는 팩키지이다. 이전에 언급한 패키지와 함께 설치한다.

$ sudo apt-get install avahi-daemon libavahi-client-dev libdb5.3-dev db-util db5.3-util libgcrypt11 libgcrypt11-dev

2번째 단계처럼 프롬프트가 나타나면, 각각 프롬프트에 Y를 선택한다.


sourceforge에서 Netatalk 3.0(3.0.1이 아니다!)을 얻는다. 소스를 컴파일 한다. 아래 글을 자세하게 따라하라.

$ cd

$ wget http://sourceforge.net/projects/netatalk/files/netatalk/3.0/netatalk-3.0.tar.bz2


Netatalk가 다운로드 완료되었으면 압축을 풀어야 한다.

$ tar xvfj netatalk-3.0.tar.bz2


tar-ball의 내용을 /home/pi/netatalk-3.0 디렉토리에 압축을 풀것이다. 그리고 디렉토리로 이동하여 컴파일을 해야한다. 라즈베리 파이에서 컴파일 작업은 시간이 꽤 걸린다는 것을 명심하라. (약 10분이상 걸린것 같다.)

$ cd netatalk-3.0

$ ./configure –with-init-style=debian –with-zeroconf

$ make

$ sudo make install


5. 타임 머신 공유를 위해 Netatalk 설정하기

이제 Netatalk와 기타 다른 패키지로 Netatalk설정을 할 수 있다. 삼바 설정에 익숙하다면, Netatalk 설정 파일은 매우 유사하다. Netatalk를 설정하기 위해서 다음 파일을 편집한다.

$ sudo nano /usr/local/etc/afp.conf


다음과 같이 파일을 작성한다. 물론 <<<를 포함한 뒷 부분은 작성하지 않는다. 

;

; Netatalk 3.x configuration file

;

[Global]

; Global server settings

hostname = TimeMachine RasPi

afp listen = 192.168.2.253   <<< 여기에 라즈베리 파이의 고정 아이피를 작성한다.

log file = /var/log/netatalk.log

log level = default:info

[Homes]

basedir regex = /home

cnid scheme = dbd

; Display each user home directory in this format

home name = Home: $u

[Time Machine]

; Our Time Machine volume

path = /mnt/TimeMachine

cnid scheme = dbd

file perm = 0660

directory perm = 0770

time machine = yes


CTRL + O를 눌러서 파일을 저장한다. CTRL + X를 사용해서 종료한다.

Netatalk와 Avahi 서비스를 다음 명령어로 실행한다. 

$ sudo /etc/init.d/netatalk start

$ sudo /etc/init.d/avahi-daemon start

이미 구동되어 있다고 나오면 start 대신에 restart를 넣어서 실행한다.

서비스 구동을 위해서 라즈베리 파이에 한가지 해야 할 일이 있다. 부팅할 때 저것들을 시작하게 설정한다. 

$ cd /etc/init.d/

$ sudo update-rc.d netatalk defaults

두 개 라인의 출력결과를 얻고, 두 번째는 에러 처럼 보이지만, 걱정마라 괜찮다.

 

5. Mac과 연결하기!!!

맥으로 돌아가서 백업을 시작할 수 있다. 파인더에서 Go > Connect to Server로 이동(단축키 : Cmd-G)하고 다음을 타이핑한다.

afp://XXX.XXX.XXX.XXX

XXX.XXX.XXX.XXX는 라즈베리파이의 아이피이다. 사용자 이름과 비밀번호를 위해서 팝업이 나타난다. 라즈베리 파이의 사용자 이름과 비밀번호를 사용하여 로그인한다.

파인더 윈도우에서 share를 볼 수 있다. 계속해서 Settings > Time Machine > Select Disk 에서 타임 머신을 설정할 수 있다.

꽤 느린것을 확인하였지만, 초기 백업이후에는 괜찮다. 

Tom


이 가이드는 다음 두 가이드를 조합해서 작성하였다.


Simon’s Guide

Iurii’s Guide

반응형