해당 메뉴얼은 TrueNAS CORE 12.0-U7을 기반으로 하고 있음을 알립니다.
저는 해당 메뉴얼을 구성하기 위해 다음과 같은 사양을 가지는 컴퓨터를 이용하였습니다.
- I3-4160
- 8GB ECC
- 250GB SSD 1개, 1TB HDD 1개, 500GB HDD 1개
WebUI에 로그인하기
http://서버의_IP_주소에 접속하면 TrueNAS WebUI에 접속할 수 있습니다.
Username에는 root, 비밀번호는 서버 설치 시에 설정하였던 비밀번호로 로그인해 주세요.
WebUI에 처음 로그인 하면 대시보드로 이동합니다. 대시보드에는 TrueNAS에 관한 기본적인 정보들이 표시되어 있고, CPU, 인더넷 트래픽, 각 디스크(pool)의 상태를 한눈에 볼 수 있습니다.
NTP 서버 설정
NTP 서버는 Network Time Protocol 서버를 의미합니다. 쉽게 말하자면, 시간을 알려주는 서버라고 할 수 있습니다. 서버에 요청을 보내면, 정확한 시간을 알려주는 역할을 합니다.
TrueNAS에도 기본적으로 NTP 서버가 설정되어 있습니다. 하지만, 이러한 서버들은 외국에 있어서 정확한 시간이 설정되지 않습니다.(몇 분 정도의 차이가 있습니다.)
그래서 이러한 NTP 서버들을 국내의 NTP 서버로 바꿔줄 것입니다.
System – NTP Servers로 이동해 주세요.
기존에 있는 NTP 서버들을 delete 해줍니다. 그리고 Add를 눌러서 새로운 NTP 서버를 추가합니다.
NTP 서버의 주소는 다음과 같은 주소들을 입력해 주세요.
- 1.kr.pool.ntp.org – pool.ntp.org에서 제공하는 NTP 서버입니다.
- time.bora.net – LG유플러스에서 제공하는 NTP 서버입니다.
- time2.kriss.re.kr – 한국표준과학연구원(KRISS)에서 제공하는 NTP 서버입니다.
다른 설정들은 IBurst만 체크를 해 주시고, Min Poll은 6, Max Poll은 10으로 설정해 주세요. 그리고 SUBMIT을 눌러 완료합니다.
시간대 설정
서버가 사용할 시간대를 설정할 것입니다.
System – General로 이동해 주세요.
Localization 메뉴에서 Timezone을 Asia/Seoul로 변경해 주세요. SAVE를 눌러 저장해 설정을 저장합니다.
부팅 디스크 미러링하기 (선택)
설치하는 과정에서 1개만 선택해서 설치하셨다면 부팅 디스크 미러링 설정을 하여야 합니다. 해당 과정은 선택이지만, 만약 USB를 부팅 디스크로 사용하신다면 미러링 하시는 것을 정말로 권장드립니다.
System – Boot로 이동해 주세요.
오른쪽 상단의 파란색 ACTIONS 버튼을 누른 후, Boot Pool Status를 클릭해 주세요.
그러면 현재 부팅 디스크가 설치되어 있는 파티션이 뜨게 됩니다. 오른쪽에 있는 메뉴 버튼을 클릭하고 Attach를 눌러주세요. 서버에 설치되어있는 디스크 중에 부팅 디스크로 사용할 다른 USB를 선택하시고, Use all disk space는 선택 해제해 주세요. (Swap 파티션을 위해서 입니다.) 그리고 SUBMIT을 눌러서 미러링을 완료하시면 됩니다.
메뉴 버튼은 위와 같이 생긴 버튼을 말합니다.
Pool 만들기
데이터가 저장될 pool을 만들어야 합니다. 기본적으로 pool은 다음과 같이 3개를 만들도록 하겠습니다.
- System
Jail 등이 설치될 pool 입니다. 해당 pool은 미러링 된 250GB 이상의 SSD를 권장합니다.
- Data
데이터가 저장될 곳입니다. 해당 pool은 사람마다 구성이 다르겠으나, 그래도 미러링 또는 raidz2된 다수의 하드 디스크를 권장합니다.
- Temp
서비스를 돌리는 중에 처리되는 임시 파일들을 임시로 저장할 디스크입니다. 해당 디스크는 막 쓰는 용도이므로 아무 하드 디스크 하나를 사용하시면 됩니다.
Storage – Pools로 이동해 주세요. Add를 눌러서 pool을 만드는 메뉴로 들어갑니다.
Create new pool을 선택하고, pool의 이름으로는 위에서 말한 3개를 입력해 주세요. Encryption은 특별한 경우가 아니면 체크 해제해 줍니다. (Pool에 암호화를 걸면 cpu와 램 소모량이 늘어납니다. 딱히 권장하지는 않습니다.)
Available Disks에서 해당 pool에 사용할 디스크를 선택하고, 오른쪽 화살표를 누릅니다.
그러면 Data VDevs 메뉴로 선택한 디스크들이 이동합니다. 해당 메뉴 밑에서 디스크들의 raid 구성을 선택합니다. (stripe, mirror, raid-z2, 등…)
CREATE를 눌러서 pool을 생성합니다.
Temp pool 압축 해제
기본적으로 모든 pool들은 lz4 압축이 기본으로 설정되어 있습니다. 하지만 Temp pool의 경우에는 임시 파일들을 저장할 것이므로 압축을 설정하는 것은 별로 의미가 없고, cpu 자원 낭비만 발생합니다. 그러니 Temp의 압축을 끄도록 하겠습니다.
Temp pool의 오른쪽에 있는 메뉴 버튼을 클릭하고, Edit Options를 눌러줍니다. 여러 메뉴 중에서 Compression level을 OFF로 설정하고, SAVE를 눌러 완료합니다.
기본 Dataset 만들기
각 pool의 오른쪽에 있는 메뉴 버튼을 클릭하고, Add Dataset을 눌러줍니다.
- Name은 dataset의 이름을,
- Compression level에서 압축 설정을(기본적으로는 부모 dataset의 압축을 따라갑니다.) 하시면 됩니다. 특별한 이유가 없으면 default인 LZ4로 설정해 주세요.
- 다른 옵션들은 그냥 기본으로 두시고, SUBMIT을 눌러 만들어 주세요.
- 부모 dataset/자식 dataset의 형식으로 디렉토리가 만들어 지게 됩니다. 예를 들어, System 아래에 Logs라는 dataset을 만들면 System/Logs인 식이지요.
아래와 같은 dataset들을 만들어 주세요.
System/Logs
압축 설정을 gzip-9로 해 주세요. 로그는 대부분 텍스트 파일이라 압축이 굉장히 잘 됩니다.
Data/Personal
서버 사용자들의 개인 데이터가 저장될 구역입니다. 아래와 같이 각각의 사용자 dataset을 만들어 주세요. 저는 loguser와 Bongtae라는 유저가 사용할 개인 dataset을 만들었습니다.
Data/Personal/loguser
Data/Personal/Bongtae
Data/Download
토렌트 등의 프로그램으로 다운로드한 파일들이 저장될 dataset을 만들었습니다.
Data/Media
미디어가 저장될 dataset을 만들었습니다.
Temp/tmp_download
다운로드 과정에서 생기는 임시 파일들을 저장할 dataset을 만들었습니다.
S.M.A.R.T. 테스트 설정
S.M.A.R.T.는 Self-Monitoring, Analysis and Reporting Technology의 약자로, 서버의 하드 디스크의 상태를 자동으로 검사하여 상태를 알려주는 시스템이라고 할 수 있습니다. 서버의 하드 디스크를 주기적으로 S.M.A.R.T. 검사 하는 것을 권장합니다. 그래서 서버의 하드 디스크를 주기적으로 S.M.A.R.T. 검사하도록 설정할 것입니다.
Tasks – S.M.A.R.T. Tests로 이동해 주세요.
ADD를 눌러서 S.M.A.R.T. 검사를 추가할 수 있습니다. S.M.A.R.T. 검사는 아래와 같이 검사 타입이 다른 두 가지를 추가할 것입니다.
- Short 타입 – 간단한 S.M.A.R.T. 검사입니다. 시간도 많이 걸리지 않고, 디스크에 걸리는 부하도 적습니다. Type에서 SHORT를 선택하고, Schedule은 매일 0시에 검사를 하도록 설정해 주세요.
- Long 타입 – 정밀 S.M.A.R.T. 검사입니다. 시간이 상당히 걸리고, 디스크에 걸리는 부하도 큰 검사입니다. 하지만 디스크의 상태를 정확히 알 수 있는 검사입니다. 디스크에 걸리는 부하가 크므로 한 달에 2번 검사를 진행하도록 하겠습니다. Type에서 LONG을 선택하고, Schedule은 Custom을 선택하여 Presets에서 Monthly, Hours에 0, Days에 1,15를 입력해 주세요.(‘1,15’를 중간에 뛰어쓰기 없이 입력해주시면 됩니다.) Months나 Days of Week 중 아무것도 체크되지 않도록 하시고, DONE을 눌러 저장합니다.
- Disks를 선택할 때, 부팅 디스크인 USB는 선택되지 않도록 해주세요. 애초에 USB는 S.M.A.R.T. 검사가 지원되지 않습니다.
S.M.A.R.T. 검사 설정을 완료하였으면 Services로 이동해 주세요. S.M.A.R.T. 서비스가 실행 중인지 확인하고, 실행 중이지 않다면 흰색 버튼을 클릭하여 서비스를 실행해 줍니다.
시스템 pool 설정
이제 Jails로 이동하시면 Choose Pool for Plugin and Jail Storage라는 창이 뜰 것입니다. 만약에 안 뜨면, 오른쪽 상단에 있는 톱니바퀴를 클릭해 주세요.
System pool을 선택하시고 CHOOSE를 누릅니다.
시스템 dataset 설정
System – System Dataset으로 이동해 주세요.
System Dataset Pool을 System으로 설정해 주시고, log를 위해 Syslog를 체크해 주세요.
아마도 위와 같이 자동적으로 설정되어 있을 테지만, 혹시 모르니 확인해 주세요.
사용자 그룹 만들기
사용자가 포함될 그룹을 만들도록 하겠습니다. Accounts – Groups로 이동해 주세요. Add를 눌러 그룹을 만들 수 있습니다.
그룹은 다음과 같이 2개를 만들어 주세요.
- User
사용자들이 포함될 그룹입니다. 그룹 이름은 꼭 User가 아니여도 됩니다.(Family 등 원하는 것을 선택하시면 됩니다.)
GID는 1000으로 설정해 주시고, Permit Sudo는 체크 해제해 주세요. Samba Authentication은 체크 해 주시고, Allow Duplicate GIDs는 체크 해제해 주세요.
- downloader
다운로더 프로그램(토렌트 등)이 속할 그룹입니다.
GID는 3000으로 설정해 주시고, Permit Sudo, Samba Authentication, Allow Duplicate GIDs 모두 체크 해제해 주세요.
사용자 만들기
Bongtae
- 여러분들이 사용할 일반적인 유저입니다.
- 이름도 자신이 원하는 이름을 사용하면 됩니다. 가족의 이름으로 설정할 수도 있겠지요.
- Full Name에는 해당 유저의 풀 네임을 적으면 됩니다. Username과 똑같이 설정해도 됩니다. 빈 공간을 사용할 수도 있습니다.
- Username에는 해당 유저가 사용할 이름을 적으면 됩니다. 이 이름이 서버 내에서 사용할 이름입니다. 이름은 16자리까지 사용할 수 있지만, 다른 프로그램과의 호환성을 위해 8자리 이내로 사용하는 것을 권장합니다.
- Email은 필수 사항은 아니지만, 나중에 서버의 상태 같은 reporting을 메일로 받기를 원한다면 자신의 이메일 주소를 쓰면 됩니다.(이것 외에도 추가적인 설정을 해야 합니다. 이것은 나중에 다루겠습니다.)
- Password에는 해당 유저가 사용할 비밀번호를 적으면 됩니다.
- User ID는 1000
- New Primary Group 체크 해제
- Primary Group은 User, Auxiliary Groups는 media와 downloader를 선택해 주세요.
- Home Directory는 /mnt/Data/Personal/Bongtae로 설정해 주세요.
- Home Directory Permissions에서 Group과 Other의 권한은 모두 체크 해제해 주세요.
- Shell은 nologin으로 설정해 주세요.
- 해당 계정으로는 SSH에 접속하지 않는 것을 권장하나, 만약 접속할 것이라면은 Shell을 bash 등 자기가 선호하는 쉘로 선택해 주세요. 만약 SSH에 접속할 것이라면 Permit Sudo를 체크해 주셔야 sudo 명령어를 사용할 수 있습니다.
- Permit Sudo는 체크 해제되어 있는지 확인해 주시고, Samba Authentication은 체크 되어 있는지 확인합니다. SUBMIT을 눌러 완료해 주세요.
loguser
- SSH 접속 전용 사용자 계정 입니다.
- 이름은 꼭 loguser가 아니여도 됩니다. loginuser 등 원하는 것으로 설정해 주셔도 됩니다.
- Full Name과 Username은 위에서 설명했으니 알아서 잘 적어 주세요.
- Password는 SSH 접속에 사용할 계정이므로 충분히 복잡하게 설정해 주세요.
- User ID는 2000
- New Primary Group 체크해 주세요.
- Home Directory는 /mnt/Data/Personal/loguser로 설정해 주세요.
- Home Directory Permissions에서 Other의 권한을 모두 체크 해제해 주세요.
- Shell은 자신이 선호하는 쉘로 설정해 주세요. 기본은 sh 쉘 입니다.
- Permit Sudo는 체크 되어 있는지 확인해 주시고, Samba Authentication은 체크 해제 되어 있는지 확인합니다. SUBMIT을 눌러 완료해 주세요.
downloader
- Full Name과 Username에 downloader를 입력해 주세요. 이름이 8글자가 넘어간다는 경고가 뜰 수 있는데 무시하시면 됩니다.
- Password를 사용하지 않을 것이므로 비활성화 할 것입니다. 오른쪽 아래의 Authentication에서 Disable Password를 Yes로 바꿔줍니다.
- User ID는 3000
- New Primary Group 체크 해제
- Primary Group은 downloader로 해 주세요. Auxiliary Groups는 설정하지 않습니다.
- Home Directory Permissions는 /nonexistent로 설정해 주세요.
- Shell은 nologin으로 설정해 주세요.
- Samba Authentication을 체크 해제해 주시고, SUBMIT을 눌러 설정을 완료합니다.
SSH 서비스 시작하기
Services로 이동해 주세요. SSH 서비스에서 연필 모양 아이콘을 눌러서 General Options 메뉴로 들어가 주세요.
TCP Port가 22인지 확인해 주시고, Allow Password Authentication이 체크되어 있는지 확인합니다.
그 후 SAVE를 눌러서 나와주시고, SSH 서비스의 흰색 버튼을 눌러서 서비스를 시작해 주세요. Start Automatically도 체크해 줍니다.
SSH 접속하기
SSH에 한번 접속해 보도록 하겠습니다. SSH 클라이언트로 유명한 Putty를 사용하겠습니다.
아래 링크에서 Putty를 다운로드할 수 있습니다.
Putty를 실행하면 위와 같은 화면을 볼 수 있습니다. Host Name에 TrueNAS 서버의 IP 주소를, Port는 22(기본)으로 설정하시고 Open을 눌러 SSH에 접속합니다.
처음 SSH 접속을 하게 되면 위와 같은 경고창이 뜰 수 있습니다. Yes를 눌러 쉘에 접속합니다.
위와 같이 로그인 화면이 뜹니다.
loguser를 입력하고 비밀번호에 loguser의 비밀번호를 입력하면 쉘에 접속할 수 있습니다.
Root 권한 사용하기
기본적으로 로그인하면 root로 로그인하지 않습니다. 그래서 어떠한 명령을 입력하면 권한이 부족하다는 오류가 뜰 수도 있습니다.
그럴 때에는 명령 앞에 sudo를 붙이면 됩니다. sudo는 root가 아닌 사용자에게 root 사용자의 권한에 버금가는 권한을 줄 때 사용합니다. 또한, sudo를 명령 앞에 붙여서 사용하면 비밀번호를 입력하라고 뜹니다. 이때 비밀번호는 쉘에 로그인한 유저의 비밀번호(이 경우에는 loguser의 비밀번호)를 입력하면 됩니다.
만약 root로 로그인 하고 싶다면, sudo su를 입력하면 됩니다.
디렉토리 ACL 권한 설정
SMB 공유 등을 사용할 때 권한 문제를 막기 위해서 디렉토리에 ACL로 권한을 설정하겠습니다.
아래의 코드들을 Putty에서 실행해 주세요. (자신이 정한 사용자의 이름과 디렉터리 이름에 따라 코드를 수정하여 실행하여야 합니다.)
setfacl -m u:Bongtae:rwxpDdaARWcCos:fdI:allow /mnt/Data/Personal/Bongtae
Bongtae의 개인 폴더는 Bongtae 사용자에게만 권한을 주었습니다.
setfacl -m g:downloader:rwxpDdaARWcCos:fdI:allow /mnt/Data/Download
downloader 그룹에게 Data/Download 폴더의 권한을 주었습니다.
setfacl -m g:downloader:rwxpDdaARWcCos:fdI:allow /mnt/Temp/tmp_download
downloader 그룹에게 Temp/tmp_download 폴더의 권한을 주었습니다.
setfacl -m g:media:rwxpDdaARWcCos:fdI:allow /mnt/Data/Media
media 그룹에게 Data/Media 폴더의 권한을 주었습니다.
ACL에 관한 추가적인 정보는 아래 링크에서 얻을 수 있습니다.
https://www.freebsd.org/cgi/man.cgi?query=setfacl&sektion=1
이렇게 TrueNAS WebUI에서 기본적인 설정을 완료하였습니다. 다음에는 NAS의 기본인 SMB 공유를 해보도록 하겠습니다.