기본 환경 구성하기

앞서 FreeNAS 설치하기를 보고 FreeNAS 를 설치하였고, 앞선 몇 개의 포스팅과 FreeNAS User Guidebook을 통해 FreeNAS 를 다루는 방법에 대해 대강 알고 있을 것이라 생각합니다. 이제 실제로 서버를 만들어 보겠습니다.

서버를 만들 때 가장 먼저 해야 하는 기본 환경을 구성하겠습니다.

필자는 이 강좌를 쓰기 위해 저사양 서버를 구성하였습니다. 여러분은 이 사양으로 서버 돌리지 마세요.

  • Asrock j4105m 보드
  • 16Gb Ram
  • 1Tb HDD 하나
  • 500Gb HDD 하나
  • 128Gb SSD 하나
  • 1개의 1Gbps 이더넷 포트

다른 건 그렇다 쳐도 128Gb SSD는 사용해서는 안됩니다.


타임존 설정하기

TimeZone 은 서버의 시간대를 의미합니다. 서버는 NTP 서버 (시간 서버) 에서 현재 시간을 받아 와서 동기화합니다. TimeZone 은 어떤 국가의 시간대에 맞출 것인지 설정하는 것입니다. System – General 에서 설정할 수 있습니다.

여기는 한국이니 Asia/Soul 으로 설정하면 됩니다.

참고로 언어 설정의 경우, 구 WebUI 만 한국어로 번역되어 있습니다. 즉 설정해 주지 않아도 무방합니다.

NTP 서버 설정하기

FreeNAS 의 기본 시간 서버는 0.freebsd.pool.ntp.org, 1.freebsd.pool.ntp.org, 2.freebsd.pool.ntp.org 입니다. 그런데 이 시간 서버들이 거리가 있어서 그런 것인지 안 맞습니다. 대략 10분정도 느린데, 이는 서버에서는 큰 문제입니다. 그러니 시간 서버를 바꿔 주도록 하겠습니다. System – NTP Servers 에서 수정할 수 있습니다.

원래 있던 시간 서버 3개를 모두 제거한 후, 아래 3개를 추가합니다.

  • 1.kr.pool.ntp.org
  • ntp.kornet.net
  • time.kriss.re.kr

추가할 때 IBurst 만 체크하고, 나머지는 기본값으로 둡니다.

한국 NTP 서버를 사용하게 됨으로 좀더 정확한 시간을 받아 오게 됩니다.

Pool 만들기

먼저 기본적인 Pool과 dataset 부터 만들도록 하겠습니다.

권장하는 pool의 구성은 아래와 같습니다.

  • 첫 번째 pool 인 Data각종 데이터가 저장될 메인 pool 입니다.
    미러링이나 Raid-z2 설정이 권장됩니다.
  • 두 번째 pool 인 Systemjail과 VM 이 저장될 pool 입니다.
    미러링된 256Gb 이상의 SSD를 권장합니다.
  • 세 번째 pool 인 Temp 는 토렌트 다운로드나 plex 트랜스코딩 등을 할 때 임시 파일이 저장될 pool 입니다.
    500Gb 이상의 아무 HDD 를 사용하시면 됩니다. 일명 ‘막 쓰는’ pool 입니다.
    최상위 dataset 에서 압축 설정을 해제해 주시는게 좋습니다.

기본 Dataset 만들기

기본적인 Dataset 을 미리 만들어두도록 하겠습니다.

Data/Media

Data/Media/Movie

Data/Media/Drama

이 외에 자신이 추가하고 싶은 미디어가 있다면 추가해 주면 됩니다.

예를 들어 애니매이션을 따로 분리한다면 Data/Media/ANI 를 추가하면 되겠지요.

그리고 Data/Media 데이터셋은 압축 설정을 Off 로 합니다. 이유는 미디어는 압축이 안되거나 오히려 용량이 늘어나기 때문입니다. 압축이 켜져 있다면 CPU 에 부하는 걸리지만 압축은 안되는 기묘한 광경을 보게 될 겁니다.

나머지 설정은 기본값으로 놔 두면 됩니다.

Data/Persnal

서버를 사용하는 사용자들의 개인 자료가 저장될 개인 dataset 입니다. 이 아래에 사용자의 홈 디렉토리를 만들 것입니다.

Data/persnal/admion

Data/persnal/loginU

admion 과 login_user 계정이 사용할 개인 폴더를 만들었습니다.

Data/Downloads

서버에서 다운로드 작업을 한 것들을 저장할 dataset 입니다.

System/Logs

몇가지 서비스의 로그가 저장될 dataset 입니다. 압축은 gzip-9 으로 설정해 주세요. 로그파일은 텍스트 파일이라서 압축이 굉장히 잘 되기 때문입니다. 20배까지도 압축되더군요.

Temp/tmp_download

토렌트 등을 다운로드 할 때 임시 파일들이 저장될 dataset입니다. 압축 설정을 Off로 해 주시는 것이 좋습니다.

Smart Test 설정

s.m.a.r.t 테스트는 디스크의 상태를 확인하는 테스트입니다. s.m.a.r.t 테스트를 적절하게 구성해 놓으면 디스크의 상태를 미리 확인하고 장애가 발생할 것을 미리 예측할 수 있습니다.

Task – S.M.A.R.T Test 에서 구성할 수 있습니다.

ADD를 눌러 작업을 추가할 수 있습니다.

s.m.a.r.t 테스트는 크게 Long Self-Test, 즉 긴 시간이 걸리는 정밀검사와 Short Self-Test, 즉 짧은 시간이 걸리는 간단한 검사가 있습니다.

Long Self-Test 는 15일마다, Short Self-Test는 하루~2일 마다 해 주면 되겠습니다. 과유불급이라고, Long Self-Test 를 너무 자주 하면 디스크의 퍼포먼스가 떨어지고 수명이 짧아지기 때문에 15일마다 하는 것입니다.

각 검사 작업을 만들 때 모든 디스크를 선택하되, FreeNAS 가 설치된 USB는 빼는 것이 좋습니다. USB 에서는 S.M.A.R.T 테스트가 안 되거든요.

부팅용 USB는 앞서 말했듯이 S.M.A.R.T 를 돌리는 것 보다는 USB 2개 미러링으로 묶는 것이 더 효과적입니다.

S.M.A.R.T 테스트에서 무언가 문제가 확인되었다면 알람에 ‘어떠한 디스크에 문제가 있습니다.’ 하고 표시됩니다.

ARC 크기 제한

앞서 ZFS 다루기에서 ARC 크기를 제한하는 방법을 배웠습니다. 실제로 적용해 보겠습니다. System – Tunables 에서 설정할 수 있습니다.

vfs.zfs.arc_max 의 값은 4294967296 에 타입은 sysctl

vfs.zfs.arc_min 의 값은 3221225472 에 타입은 sysctl

ARC의 크기가 3G~4G 로 제한되었습니다.

Jail 이 설치될 Pool 설정

위에서 말한 대로 System 에다 Jail을 설치할 것입니다.

System 을 jail이 설치될 pool 로 설정해 주시면 됩니다.

System Dataset 설정

필자는 System 을 System Dataset 으로 설정하는 것을 선호합니다만, Data 를 System Dataset으로 설정해도 됩니다. Temp 를 System Dataset 으로 설정하진 마세요.

그리고 SyslogReporting Database 는 체크하는게 좋습니다. 그래야 서버가 갑자기 종료되거나 하는 경우에도 Log가 남기 때문입니다.

그룹 만들기

그룹을 먼저 만들겠습니다.

Users

  • 이 그룹은 일반 유저들의 그룹을 의미합니다.
  • 이름은 다른 것으로 바꾸어도 관계 없습니다. Family 같은거 말입니다.
  • gid1000

downloader

  • 이 그룹은 다운로더 (예를 들어, 토렌트 클라이언트) 의 그룹입니다.
  • gid3000

유저 만들기

유저의 이름은 16자까지 허용됩니다. 8자 이상의 이름을 지원하지 않는 프로그램과의 호환성을 위해선 8자 이하의 이름을 사용하시길 바랍니다.

loginU

  • 이 유저는 ssh 로그인 전용 유저입니다.
  • 이름은 원하는 대로 설정하셔도 됩니다.
  • sudo 권한을 줄 것이기 때문에 비밀번호를 충분히 복잡한 것으로 해 주세요.
  • uid2000
  • New Primary Group (새 주 그룹 생성) 체크
  • 홈 디렉토리는 앞서 생성한 /mnt/Data/persnal/login_user
  • 홈 디렉토리 권한 중 Other 권한은 제거해 줍니다.
  • 쉘은 bashtcsh, zsh 등 선호하는 쉘로 해 주세요.
  • Permit Sudo (sudo 허용) 체크

admion

  • 이 유저는 일반 유저입니다.
  • 이름은 여러분이 추가하고 싶은 유저로 설정하시면 됩니다. Family_1 같은거 말입니다.
  • uid1000
  • New Primary Group (새 주 그룹 생성) 체크 해제
  • 주 그룹은 Users
  • 보조 그룹은 downloadermedia
  • 홈 디렉토리는 /mnt/Data/persnal/admion 으로 설정합니다.
  • 홈 디렉토리의 Group와 Other 권한은 제거해 줍니다.
  • ssh 에 로그인 할 것이라면 tcshbash 를, 로그인 하지 않을 것이라면 nologin 으로 설정합니다.
    특별한 이유가 없다면 nologin 으로 설정해 주세요.

downloader

  • 이 유저는 다운로더 (예를 들어 토렌트 클라이언트) 와 같은 프로그램이 사용할 유저입니다.
  • uid3000
  • New Primary Group (새 주 그룹 생성) 체크 해제
  • 주 그룹은 downloader
  • 홈 디렉토리는 /nonexistent
  • 쉘은 nologin

서비스 설정

Services 로 이동해 S.M.A.R.TSSH 를 켜고 Start Automatically 를 체크해 부팅시 자동으로 시작되게 설정합니다.

SSH 접속

ssh 클라이언트인 Putty 를 받아 IP에는 FreeNAS 서버 주소를, port 는 설정한 포트 번호를 (기본값 22) 를 입력한 후 연결을 누르면 아래와 같은 경고창이 뜹니다.

예를 누르면 쉘에 접근할수 있습니다.

loginU 를 입력하고 loginU 의 비밀번호를 입력하여 로그인 할 수 있습니다.

Root 권한 사용법

sudo 는 root 권한으로 명령어를 실행하게 해 주는 명령어입니다.

sudo 명령어를 실행 시 비밀번호를 입력하라고 나오는데, 이때 비밀번호는 loginU (sudo 실행 권한이 있는 현재 쉘의 유저) 의 비밀번호입니다.

예를 들어 sudo mkdir test_dir 을 입력하면 root 권한으로 test_dir 을 생성한다는 의미입니다.

만약 root 로 로그인 하고 싶다면? sudo su 를 입력하면 됩니다.

ACL 로 권한 설정

sudo su로 root 로 로그인 하여 아래 명령어를 실행하거나, 명령어 앞에 sudo 를 붙여 root 권한으로 명령어를 실행해 주어야 합니다.

setfacl -m g:media:rwxpDdaRWcs:fdI:allow /mnt/Data/Media/Movie/ /mnt/Data/Media/Drama/

setfacl 명령어로 media 그룹에게 MoviceDrama 디렉토리의 rwxpDdaRWcs:fdI:allow 권한을 주었습니다. ACL 권한은 여기 에서 확인할수 있습니다.

setfacl -m g:downloader:rwxpDdaRWcs:fdI:allow /mnt/Data/Downloads/

같은 방법으로 downloader 그룹에게 Downloads 디렉토리의 권한을 주었습니다.

setfacl -m u:admion:rwxpDdaRWcs:fdI:allow /mnt/Data/Persnal/admion/

admion 의 개인 디렉토리는 admion 에게만 권한을 주었습니다.

같은 방식으로 downloader 그룹에게 tmp_download 디렉토리의 권한을 주세요.

ACL로 권한을 주는 이유는

  1. SMB 공유 시 권한 문제를 막기 위해
  2. 여러 개의 프로그램들이 하나의 디렉토리에 접근할 때 권한을 고정시켜 권한 문제를 막기 위해

기본 유닉스 권한으로 SMB 공유를 할 경우 몇 가지 문제가 생깁니다. 예를 들어 파일 읽기 쓰기는 되는데, 삭제가 안된다거나, 덮어쓰기가 안된다거나 하는 문제입니다. ACL 을 걸어 주게 되면 그런 문제를 해결할 수 있습니다.

여러 가지 프로그램과 유저가 디렉토리나 파일을 만들때, 그러한 디렉토리나 파일에 부여하는 권한이 다 다르기 때문에 권한 문제가 발생합니다. ACL 을 설정해 놓으면 권한이 고정되기 때문에 그러한 권한 문제를 예방하는데 큰 도움을 줍니다.

https://docs.oracle.com/cd/E26925_01/html/E25935/securedata-1.html

https://docs.huihoo.com/solaris/11.1/korean/html/E36657/gbchf.html

https://docs.oracle.com/cd/E24846_01/html/E23284/gbacb.html#gbbht

ZFS 의 ACL 에 관한 오라클 솔라리스 문서입니다. FreeNAS 의 OpenZFS 와 크게 차이가 없으니 참고하시면 좋을 것입니다.

앞으로도 종종 설정을 할 때 ACL 을 사용하니 참고하시면 좋을 것입니다.

마치면서

이것으로 FreeNAS 서버를 구축하기 위한 기본 구성을 완료하였습니다. 다음 포스팅에서는 SMB 공유를 사용하는 법을 다루도록 하겠습니다.

시리즈 네비게이션<< FreeNAS 업데이트SMB 공유 사용하기 >>

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다