본문 바로가기

기술 분석/동향/Android

안드로이드 개발시스템 구성 - NFS 를 이용한 빌드서버 소스코드 편집

안드로이드 소스코드를 편집하고 검색하기 위해서 Eclipse 를 많이 씁니다.

그런데, 안드로이드 빌드는 우분투에서 이루어지기 때문에 개인PC가 우분투를 쓰지 않는다면 작업용 개인PC 와 빌드용 우분투서버를 따로 구성해야 합니다.

빌드서버를 개인이 독점해서 사용한다면 개인PC 에 X서버를 설치하고 우분투에서의 Eclipse 를 띄워서 사용하면 되지만 빌드서버를 공유해서 써야 한다면 소스코드를 개인PC 에서 볼 수 있는 방법이 필요합니다.

이때 쓸 수 있는 것이 NFS 입니다. (삼바도 사용가능하지만 작은 파일들이 많으면 속도가 너무 느려져서 사용하기가 곤란합니다.)

(이하 새로 업데이트된 내용입니다.)

이전 글에서는 Windows Enterprise 버전 이상에서 지원하는 자체 NFS 클라이언트 기능을 사용하였지만, 속도문제도 있고 Unicode 를 지원하지 않는 문제가 있었습니다.

지금 소개할 내용은 무료로 쓸 수 있는 별도 NFS 라이브러리와 NFS 클라이언트를 이용하는 방법입니다.
속도도 빠르고 Unicode 도 쓸 수 있고, Windows 의 버전도 가리지 않네요.

(제가 참고한 사이트는 http://www.multigesture.net/articles/how-to-mount-nfs-on-windows-7-and-mac-os-x/ 입니다.)

먼저 다음 URL 에서 NFS 라이브러리인 doksan 라이브러리를 설치합니다. (이 글을 쓰는 시점에서는 0.6.0 버
전이 최신입니다.



닷넷 프레임웍 4 버전 이상이 설치되지 않은 경우에는 설치가 필요합니다.



다음 URL 에서 NFS 클라이언트인 NekoDrive 를 설치합니다. (이 글을 쓰는 시점에서는 0.9.0 버전이 최신입니다.)



NekoDrive 를 실행하면 다음과 같은 창이 뜹니다.

NFS 서버의 IP 를 입력하고, NFS 버전은 V3 로 맞춰주고, UserId 와 GroupId 를 맞춰주고, Unicode 옵션을 선택해줍니다. (실행시마다 자동으로 연결하고자 한다면 Auto 옵션을 선택해주세요.)

그리고, 폴더생성시 권한을 조정해줍니다.

이제 Connect 버튼을 누르면 NFS 서버에 접속하면서 다음과 같은 화면으로 바뀝니다.



화면에서 보듯이 NFS 마운트를 할 수 있는 NFS 디렉토리가 나오는데, 마운트하고자 하는 NFS 디렉토리를 선택하고, 마운트할 드라이브를 선택하고, 그 드라이브의 볼륨이름을 기재해줍니다. 그리고, Auto 와 No Cache 를 선택해준 다음 Mount 버튼을 누릅니다.

그러면 NFS 마운트 드라이브를 볼 수 있게 됩니다.

(No Cache 를 하지 않게 되면 Clear Cache 버튼을 누르기 전까지 파일이나 폴더에 대한 변경사항이 잘 동기화되지 않습니다.)

이제 앞으로 NekoDrive 를 실행해서 Unicode 만 체크해주고 Connect 버튼을 누르면 바로 접속이 됩니다.

(제 시스템을 기준으로 NFS 마운트 드라이브에서 로컬 하드디스크로 용량이 큰 파일을 복사해오니 대략 11~12MB/s 가 나오네요. (작은 파일들이 많다면 속도는 더 느려지겠죠.)

NekoDrive 프로그램을 종료하면 자동으로 언마운트되는 것을 잊지 마세요.




===========================================================
(아래 내용은 이전 내용으로 참고용으로만 남겨둡니다.)

개인PC 에서 윈도우를 쓰고 있다면 별도로 NFS 클라이언트용 서비스를 설치해야 합니다.

이 글에서는 사용자가 Windows 7 Ultimate 을 이용하고 있다고 가정합니다.

Windows 7 Ultimate 에 다음 서비스를 설치합니다.
  • Windows Update - 설치된 업데이트 - Windows 기능 사용/사용 안 함 - NFS용 클라이언트와 관리도구
  • Windows Update - 설치된 업데이트 - Windows 기능 사용/사용 안 함 - UNIX 기반 응용 프로그램용 하위 시스템
빌드서버에 접속해서 자신의 계정의 UID 와 GID 가 무엇인지 확인합니다.

regedit 를 실행해서 다음 경로의 DWORD 32bit 키를 만들고 10진수 값으로 UID 와 GID 를 설정합니다.
  • HKEY_LOCAL_MACHNINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default
    • AnonymousGid
    • AnonymousUid
이제 커맨드 라인에서 다음과 같이 NFS 공유디렉토리를 드라이브로 마운트합니다. (여기에서는 m: 드라이브로 합니다.)
  • mount -o nolock -o casesensitive=yes -o fileaccess=766 \\192.168.0.x\{NFS 공유디렉토리} m:
    • nolock 은 파일을 오픈할 때 락을 걸지 말라는 뜻으로 파일접근속도를 높이기 위함입니다.
    • casesensitive=yes 는 대소문자 구분을 하라는 뜻입니다.
    • fileaccess=766 은 파일생성시 권한을 뜻합니다.
mount 라고 쳐보면 현재 마운트된 상황이 나오므로 확인이 가능합니다.

한글로 된 파일명을 만들 때에는 문제가 발생하는데 윈도우의 NFS Client 서비스가 아직 UTF-8 을 지원하지 않기 때문입니다.
기본으로 마운트할 경우 KSC5601 을 쓰게 되니 한글로 된 파일명은 쓰지 않는 것이 좋습니다.

참고로, 다음과 같은 내용으로 .cmd 파일을 만들어두고  탐색기나 시작메뉴에 링크만들어
시작메뉴에서 클릭하면 자동으로 NFS 드라이브를 마운트합니다.
  • cmd /s /k "umount m: & mount -o nolock -o casesensitive=yes -o fileaccess=766 \\192.168.0.x\{NFS 공유디렉토리} m: & mount"
[내용추가]
윈도우에서 언마운트를 하지 않는 채 시스템종료를 하게 되면 나중에 부팅했을 때 마운트된 드라이브가 사용할 수도 없고 언마운트도 되지 않는 상황이 되네요.

윈도우 메뉴에서 gpedit.msc 를 실행한 다음 첨부된 그림처럼 로그오프 스크립트를 등록하면 해결됩니다.
로그오프시에 umount 시키면 되는 것인데요.
그림에 나와있는 umount_m.cmd 의 내용은 다음과 같습니다.
umount m:



  • gaead 2011.02.07 10:33

    글 잘읽었습니다~~ 그런데 windows 7 pro 64bit 버전에는 nfs 클라이언트 관련 모듈이 없더군요... 어떤 방법이 있을까요..?

  • mindwing 2011.02.11 11:16 신고

    NFS 마운트는 Enterprise 와 Ultimate 버전에서만 지원합니다.
    Professional 버전이라면 다른 업체에서 만든 NFS 마운트지원 프로그램을 쓰셔야 겠죠.
    검색해보면 몇 개 나올텐데 저도 써본적이 없어서 추천드리기는 어렵겠습니다.

  • heeya 2011.02.15 11:29

    참 유용한 글이네요..알려 주신 방식대로 하였는데도 mount시에 오류 메세지가 발생하네요..에러메세지 번호는 53번 , 네트워크 경로를 찾을 수 없다고 나옵니다. 경로를 틀리게 적은 것도 아닌데 혹시 다른 이유가 있는지 알 수 없을까요? 해결방법이 필요합니다,

  • mindwing 2012.08.17 13:50 신고

    NekoDrive 를 이용한 NFS 마운팅 방법을 쓰면 더 안정적으로 사용가능합니다.