NAS를 구축하려는 가장 큰 목적은 파일 서버로,
저장소 공유 환경을 만드는 것이다.
우선 NAS 저장공간을 로컬폴더처럼 간편하게 사용할 수 있는 '내부 네트워크 환경'을 만들어보자.
집에서 맥북과 윈도우 데스크탑을 사용하고 있기 때문에
OSX와 Windows 셋팅이 모두 필요하다.
내부 네트워크 환경에서 비교적 쉽게 사용할 수 있는 파일 공유 관련 프로토콜 3가지를 간단하게 알아보았다.
1. FTP (File Transfer Protocol)
FTP는 쉽게 말해 파일을 복사하는데 사용된다. 그렇기 때문에 복사 받는 쪽에 충분한 저장공간이 있어야하며, 결과적으로 서버와 클라이언트는 각각 독립적인 2개의 파일을 갖게 된다.
2. SMB (Server Message Block)
SMB는 서버에서 파일의 읽고 쓰기가 모두 가능하기 때문에 클라이언트의 저장공간은 상관이 없다. 기본적으로 공유를 목적으로 하며, 서버 파일의 수정사항은 다른 모든 사용자에게 즉시 반영된다.(사본이 아니기 때문에) 물론 클라이언트로 복사도 가능하다. 구글 스프레드 시트를 공유하는 것과 비슷하다. Microsoft에서 윈도우 기반으로 만들어졌다.
3. AFP (Apple Filing Protocol)
SMB와 비슷하다. 이름에서 알 수 있듯이 애플에서 Mac OS을 위해 만들었다. OSX에서는 AFP뿐만 아니라 SMB를 포함한 다른 프로토콜도 사용이 가능하다. 애플에서 만들고, 추천하는 만큼 맥의 기능을 지원하고, 파일 전송 속도 또한 빠른 수준이다.
FTP는 속도는 빠르지만 별도의 FTP 툴이 필요하고, 애초의 목적인 로컬 드라이브처럼 쓰기에는 사용성이 좋지 않다.
윈도우에는 SMB, 맥에는 AFP로 구성해보자.
Ubuntu Server 18.04 <-> Mac OS AFP (Netatalk 3.1.12)
AFP는 Netatalk라는 오픈소스 서비스를 이용한다. 안정화된 릴리즈된 버전 중 가장 최신 3.1.12로 진행한다.
아래 공식 메뉴얼을 따라했다.
http://netatalk.sourceforge.net/wiki/index.php/Install_Netatalk_3.1.12_on_Ubuntu_18.04_Bionic
1) 필수 패키지 설치
아래 패키지를 모두 설치한다.
$ sudo apt install -y build-essential \
libevent-dev \
libssl-dev \
libgcrypt-dev \
libkrb5-dev \
libpam0g-dev \
libwrap0-dev \
libdb-dev \
libtdb-dev \
libmysqlclient-dev \
avahi-daemon \
libavahi-client-dev \
libacl1-dev \
libldap2-dev \
libcrack2-dev \
systemtap-sdt-dev \
libdbus-1-dev \
libdbus-glib-1-dev \
libglib2.0-dev \
libio-socket-inet6-perl \
tracker \
libtracker-sparql-2.0-dev \
libtracker-miner-2.0-dev
2) 빌드
먼저 netatalk 3.1.12 버전을 다운로드
$ wget https://sourceforge.net/projects/netatalk/files/netatalk/3.1.12/netatalk-3.1.12.tar.bz2
$ ls 를 쳐서 다운로드가 잘 되었는지 확인하자
$ ls
01 libpam0g-dev netatalk-3.1.12.tar.bz2
$ tar 로 압축을 풀고, 해당 디렉토리로 이동한다.
$ tar xvf netatalk-3.1.12.tar.bz2
$ cd netatalk-3.1.12
$ ./configure --help 로 설정 옵션들을 확인하라는데 봐도 잘 모르겠다..
다음 설정을 진행한다.
configure에 자동으로 추가되지 않은 옵션들을 넣어준다.
$ ./configure --with-init-style=debian-systemd \
--without-libevent \
--without-tdb \
--with-cracklib \
--enable-krbV-uam \
--with-pam-confdir=/etc/pam.d \
--with-dbus-daemon=/usr/bin/dbus-daemon \
--with-dbus-sysconf-dir=/etc/dbus-1/system.d \
--with-tracker-pkgconfig-version=2.0
끝나면 아래와 같은 요약 정보를 보여준다.
Compilation summary:
CPPFLAGS = -I$(top_srcdir)/include -I$(top_builddir)/include -I$(top_srcdir)
CFLAGS = -D_U_="__attribute__((unused))" -g -O2
LIBS = -lcrack
PTHREADS:
LIBS =
CFLAGS = -pthread
TRACKER:
LIBS = -ltracker-sparql-2.0 -lgio-2.0 -lgobject-2.0 -Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0
CFLAGS = -pthread -I/usr/include/tracker-2.0 -I/usr/include/tracker-2.0/libtracker-sparql -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include
SSL:
LIBS = -L/usr/lib64 -lcrypto
CFLAGS = -I/usr/include/openssl
LIBGCRYPT:
LIBS = -lgcrypt
CFLAGS =
PAM:
LIBS = -lpam
CFLAGS =
WRAP:
LIBS = -lwrap
CFLAGS =
BDB:
LIBS = -L/usr/lib64 -ldb-5.3
CFLAGS =
GSSAPI:
LIBS = -L/usr/lib/x86_64-linux-gnu/mit-krb5 -Wl,-Bsymbolic-functions -Wl,-z,relro -lgssapi_krb5 -lkrb5 -lk5crypto -lcom_err
CFLAGS = -isystem /usr/include/mit-krb5
ZEROCONF:
LIBS = -lavahi-common -lavahi-client
CFLAGS = -D_REENTRANT
LDAP:
LIBS = -lldap
CFLAGS =
LIBEVENT:
LIBS =
CFLAGS =
TDB:
LIBS = -ltdb
CFLAGS =
MySQL:
LIBS = -L/usr/lib/x86_64-linux-gnu -lmysqlclient -lpthread -lz -lm -lrt -latomic -ldl
CFLAGS = -I/usr/include/mysql
Configure summary:
INIT STYLE:
debian-systemd
AFP:
Extended Attributes: ad | sys
ACL support: yes
Spotlight: yes
CNID:
backends: dbd last tdb mysql
UAMS:
DHX (PAM SHADOW)
DHX2 (PAM SHADOW)
RANDNUM (afppasswd)
Kerberos V
clrtxt (PAM SHADOW)
guest
Options:
Zeroconf support: yes
tcp wrapper support: yes
quota support: yes
valid shell check: yes
cracklib support: yes
ACL support: auto
Kerberos support: yes
LDAP support: yes
AFP stats via dbus: yes
dtrace probes: yes
Paths:
Netatalk lockfile: /var/lock/netatalk
init directory: /lib/systemd/system
dbus system directory: /etc/dbus-1/system.d
dbus daemon path: /usr/bin/dbus-daemon
tracker prefix: /usr
tracker install prefix: /usr
tracker manager: /usr/bin/tracker daemon
pam config directory: /etc/pam.d
Documentation:
Docbook: no
그런데 추가한 옵션값들 중 위와 다른 것들이 여러가지 보인다.
명령어 입력이 제대로 안된 것 같다.
다시 입력해보니 위와 똑같이 나온다.
만들고 설치한다. (뭘 만들고 뭘 설치하는거지..?)
$ make
$ sudo make install
이제 설치는 끝이 났다.
$ netatalk -V 명령어로 다운로드한 버전이 제대로 설치되었는지 다시 확인하자.
$ netatalk -V
netatalk 3.1.12 - Netatalk AFP server service controller daemon
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free Software
Foundation; either version 2 of the License, or (at your option) any later
version. Please see the file COPYING for further information and details.
netatalk has been compiled with support for these features:
Zeroconf support: Avahi
Spotlight support: Yes
afpd: /usr/local/sbin/afpd
cnid_metad: /usr/local/sbin/cnid_metad
tracker manager: /usr/bin/tracker daemon
dbus-daemon: /usr/bin/dbus-daemon
afp.conf: /usr/local/etc/afp.conf
dbus-session.conf: /usr/local/etc/dbus-session.conf
netatalk lock file: /var/lock/netatalk
3) 설정
afp 사용을 위한 서버 설정이 필요하다.
$ vim /usr/local/etc/afp.conf로 설정파일을 열어보자.
$ vim /usr/local/etc/afp.conf
;
; Netatalk 3.x configuration file
;
[Global]
; Global server settings
; [Homes]
; basedir regex = /xxxx
; [My AFP Volume]
; path = /path/to/volume
; [My Time Machine Volume]
; path = /path/to/backup
; time machine = yes
세미콜론 ; 은 주석처리 용도이다. (; or #)
중괄호 '[]' 안에 원하는 저장소 이름을 적고, path 옵션에 디렉토리 주소를 적으면 된다.
[COMMIT_NAS]
path = /home/commit_nas/NAS_HDD
기타 필요한 추가 옵션은 그때 그때 찾아서 넣어주면 될 것 같다.
netatalk 공식 도큐먼트에 모든 내용이 나와있다.
http://netatalk.sourceforge.net/3.0/htmldocs/afp.conf.5.html
afp.conf 파일을 저장하고 나온다. (vim의 경우 :w, :q)
만약 디렉토리를 아직 생성하지 않았다면, 동일한 위치에 동일한 이름으로 만들어준다.
$ mkdir /home/commit_nas/NAS_HDD
4) 실행
netatalk를 실행한다.
$ sudo systemctl enable avahi-daemon
$ sudo systemctl enable netatalk
$ sudo systemctl start avahi-daemon
$ sudo systemctl start netatalk
이것으로 OSX와 Ubuntu PC를 연결하기 위한 설정은 모두 끝났다.
맥에서 접속해보자.
finder를 열고 '이동' - '서버에 연결' (또는 Command + K)
연결 주소에 NAS PC의 내부 IP주소를 입력한다. (afp://192.168.0.xx)
이름과 암호에 Ubuntu 계정을 넣어주면 된다.
finder에서 path에 설정한 디렉토리가 제대로 잡힌다면 성공!
그런데 여기서 끝이 아니었다..
분명 500GB 하드디스크에 우분투를 깔았지만 위엔 가용용량이 901.7MB밖에 안잡힌다.
이어서..
'NAS' 카테고리의 다른 글
자작 NAS (5) - 우분투 논리볼륨 추가하기 (0) | 2020.01.26 |
---|---|
자작 NAS (3) - 우분투 WOL 기능 (0) | 2020.01.15 |
자작 NAS (2) - 외부에서 접속하기 (0) | 2020.01.15 |