기본 환경 구성하기

This entry is part [part not set] of 48 in the series FreeNAS 서버 만들기

앞서 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 공유를 사용하는 법을 다루도록 하겠습니다.

시리즈 네비게이션

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다