사용자 도구

사이트 도구


nas_설치

NAS 구성 및 설치

NAS 는 주로 데이터를 담아두는 용도로 많이 쓰인다. 네트웍 속도가 빨라지면서 대용량 자료들을 다른 곳에 두더라도 별로 불편함이 없고,또한 HDD 에서 SSD 를 많이 쓰면서 아무래도 상대적으로 저렴한 HDD 에 자료를 넣어두고 노트북이나 데스크탑 등에서는 그것을 불러와서 사용하고 … 이런 식으로 많이 쓰이게 된다.

구글에서 NAS 라고 검색만 해도 수도 없이 많은 자료가 나오니, 그것을 찾아 보면 자신에게 적당한 것이 무엇인지 알 수 있다.

하지만, 굳이 상용서버가 아니더라도 기존 구형 데스크탑에 HDD 만 몇개 붙이고, 적당히 설정하면 충분히 쓸 수 있다. 실제로도 상용으로 판매되고 있는 NAS 의 CPU, 메모리 사양을 보면 어라 ? 이런 거였어 ? 할 정도이다. CPU 는 보통 Intel Atom 1GHz 정도 성능을 보이는 게 대부분이고 (ARM 칩을 쓰는 것도 있고 MIPS 를 쓰는 경우도 있다.), 메모리는 많아야 2GB 이고, 보통 512MB 에서 1GB 정도이다.

내 경우는 HP Proliant Microserver N54L 과 N40L 을 사용하고 있다. 둘의 하드웨어적인 사양은 다음의 표와 같다.

구분 사양
CPU N54L : AMD Turion II Neo 2.2 GHz, Dual Core
CPU N40L : AMD Turion II Neo 1.5 GHz, Dual Core
Chipset AMD RS785E / SB820M
Memory DDR3 PC3-10600E unbuffered DDR3 ECC, 최대 8GB
Storage Controller Integrated SATA Controller with embedded RAID 0 or 1
Internal Storage Devices Non-hot plug SATA 3.5“ x 4EA, ODD bay
Network Controller Embedded NC 107i PCI Express Gigabit Ethernet
Expansion slots PCIe x16 x 1EA, PCIe x1 x 1EA (LP profile)
Interfaces D-sub, USB 2.0 port x 7EA, eSATA II x 1EA
Power Supply 150 Watt
Dimension 26.7 x 21 x 26 cm
Weights ~ 10 kg

HP Microserver N54L, N40L 등을 사용하는 이유는 첫째는 조용하기 때문이고, 두번째는 전력 사용량이 적기 때문이다. 몇달 써서 먼지가 끼면 조금 소리가 늘고, 열심히 데이터를 넣고 빼고 하면 당연히 HDD 돌아가는 소리가 들리지만, 일단 조용하다. 그렇다고 해서 침실에 넣고 쓸 정도로 조용하진 않다. 그러니 웬만하면 다른 방에 넣어두자. 그리고 일반 PC 급에 비해서 전력사용량도 낮은 편에 속한다. 물론, NAS 전용 장비에 비해서는 높다.

메모리는 DDR3 일반 PC 용 램과 unbuffered ECC DDR3 메모리를 같이 쓸 수 있다. 그리고 개조된 바이오스를 설치하거나 RAID 카드를 추가로 설치하면 ODD 베이에 최대 8개의 HDD (크기 제한 때문에 2.5” SSD 나 HDD 를 써야 한다.) 를 넣을 수 있는 공간을 확보하여 사용할 수 있지만, 파워서플라이가 최대 150 Watt 이므로 그렇게까지 넣지는 않는다. 그리고 개조 바이오스를 설치하면 Not-hot plug HDD bay 가 Hot plug 가 된다. 하지만 … 굳이 Hot plug 를 쓸 필요는 없다.

개조 바이오스 설치방법은 구글에서 N54L mod bios 정도로 검색하면 꽤 많이 찾을 수 있다. 다만 바이오스 버전이 계속 올라가고 있으므로, 너무 오래된 것은 곤란하다. 방법은 대부분 같다. 도스 부팅 가능한 USB 메모리를 만든 다음에 거기에 바이오스 파일 올려서 USB 로 부팅한 다음에 도스 명령어로 바이오스를 수동으로 올리면 된다. http://terfmop.co.uk/blog/2013/07/31/hp-proliant-n54l-bios-modification-guide-allow-hot-plug-sata-and-5th-sata-port/ 참조.

내가 설치한 시스템 구성은 다음과 같다.

구분 내용
서버 HP Proliant Microserver N54L
Memory unbuffered DDR3 4GB (2GB x 2)
Storage Intel X-25 80GB SSD x 1EA (for OS), Toshiba 3TB x 2EA + Seagate 3TB x 2EA (for storage)
OS CentOS 6.5

굳이 NAS4Free 같은 NAS 전용 OS 를 사용하지 않고, 리눅스 배포판중 하나인 CentOS 를 선택한 건, 이미 NAS4Free 로 돌아가는 N40L 시스템이 하나 돌리고 있기 때문이다. (정확히는 N40L 2대에서 NAS4Free 를 돌리다가 N54L 을 한대 더 사면서 N40L 에서 한대에서 돌리던 것을 CentOS 를 설치하고 자료를 N54L 로 옮겼다. 그래서 지금은 남아 있는 N40L 활용방안을 찾고 있다.)

일단, 하드웨어구성은 끝났고, CentOS 를 설치했다. CentOS 는 Desktop 모드로 설치하였고, /etc/inittab 에서 runlevel 3으로 설정했다.

id:3:initdefault:

설치한 곳은 80GB 짜리 SSD 이며, SSD 이므로, 수명 때문에 몇가지 설정을 했다. /etc/fstab 에 몇줄 넣으면 된다. 그리고 SSD 의 파티션은 3곳으로 나누었다.

파티션 용도
/boot 부팅용 커널 위치, 500MB
/ 시스템 설치
swap 스왑 파티션, 1.5GB

아래는 /etc/fstab 의 일부이다. /boot, /, /tmp 부분을 참조하자. discard, noatime, nodiration 등의 옵션이 붙어 있음을 볼 수 있다. 이 내용을 참조하여 /etc/fstab 을 수정하면 된다. UUID 부분을 잘못 건드리면 부팅이 안될 수도 있으니 주의하자.

tmpfs 는 쉽게 말하면 램드라이브다. 시스템의 메모리에 일정공간을 잡아 놓고 그곳을 파일 시스템으로 잡고 쓰는 것인데, 아무래도 읽고 쓰기가 빈번해지는 /var/log, /tmp 두곳을 tmpfs 로 지정했다. 만약에 시스템 로그를 지속적으로 관리하고 싶다면 /var/log 가 있는 줄은 삭제하면 된다. 물론 /tmp 역시 마찬가지다.

UUID=00c10849-6c91-4961-a477-f0fb9c88c417 /boot   ext4    discard,noatime,nodiration,errors=remount-ro  0 1
UUID=1abc2139-0cac-43d3-a284-b1b3d5e0ddf3 /       ext4    discard,noatime,nodiration,errors=remount-ro  0 1
UUID=04af2e9f-037e-4f35-a1f0-5702ebb97568 swap    swap    defaults        0 0

tmpfs                   /var/log                tmpfs   defaults,noatime,mode=1777 0 0
tmpfs                   /tmp                    tmpfs   defaults,noatime,mode=1777 0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0


devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

여기에 빠져 있는 것은 3TB HDD 4개에 대한 내용이다. 모두 ext4 로 각각 포맷했고, home, media, backup, timemachine 용 파티션으로 사용하고 있다.

그리고, /etc/rc.d/rc.local 파일에 아래 줄을 추가하면 스왑을 안하게 된다. 대신 나중에 미디어 기능이 추가되거나 할 경우에는 메모리 부족으로 인하여 오류가 발생할 소지가 있다. 물론, 메모리를 많이 끼워주면 그런 문제는 없다.

만약, 스왑을 전혀 안하게 하는 것은 문제가 있다고 생각하면 echo 0 대신에 1이나 10 정도를 넣어주면 된다.

echo 0 > /proc/sys/vm/swappiness

어떻게 할지는 사용해보고 결정하면 된다. 이 외에도 스케줄러를 바꾸어준다든가 하는 방법으로 SSD 를 튜닝하는 방법이 있고, 커널 소스에서 파라미터를 몇개 바꾸어준다든가 하는 방법도 있지만, 이 글의 범위를 넘어가므로 여기까지만 하자.

그리고, NAS 에서는 필요없는 패키지들을 몇개 지우고, 필요한 패키지 설치를 위해서 repository 등록한다. 아래와 같다.

CentOS CR 등록 : http://wiki.centos.org/AdditionalResources/Repositories/CR

ELEP 등록 : http://fedoraproject.org/wiki/EPEL/FAQ#howtouse

RPM Fusion 등록 : http://rpmfusion.org/Configuration

ELRepo 등록 : http://elrepo.org/tiki/tiki-index.php

yum erase libreoffice-core
yum install centos-release-cr
yum update
rpm -Uvh http://ftp.riken.jp/Linux/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
yum localinstall --nogpgcheck http://download1.rpmfusion.org/free/el/updates/6/x86_64/rpmfusion-free-release-6-1.noarch.rpm
yum localinstall --nogpgcheck http://download1.rpmfusion.org/nonfree/el/updates/6/x86_64/rpmfusion-nonfree-release-6-1.noarch.rpm
yum update
yum groupinstall “Development Tools”
yum groupupdate “Development Tools”
yum install kernel-devel rpm-build rpm-libs 
yum install vsftpd samba samba-common munin munin-node
yum update

munin 대신 rrdtool 이나 mrtg 도 괜찮다. 난 munin 을 선호하기 때문에 munin 을 설치했다.

이 정도면 일단 준비작업은 끝났다.

NAS 의 원래 목적으로 되돌아가보자. NAS 는 데이터를 저장하고 그것을 필요할 때 꺼내오는 게 주목적이다. 여기에다가 부가적으로 미디어 스트리밍 서버 등의 미디어센터 기능을 추가하는 게 대부분이다.

일단 데이터를 주고 받는 데에는 클라이언트가 무엇이냐에 따라서 많은 방법이 있지만, 일반적으로 많이 쓰이는 방법은 smb (삼바, samba), afp, nfs, ftp 정도다. afp 는 맥용_time_machine_만들기 에서 설명될 것이므로, 여기서는 samba 만 설명하자.

samba 에서 해줄 것은 사용자 등록하는 것과 디렉터리 공유만 설정해주면 된다. 사용자 등록은 2단계가 필요하다. USER-ID 부분에다가 계정명을 써주면 된다. root 계정으로 해야 한다.

1단계 : 리눅스 계정 사용자 등록
     -. adduser USER-ID
     -. passwd USER-ID

2단계 : 삼바 계정 등록
     -. smbpasswd -a USER-ID
     -. 패쓰워드 입력

/etc/samba/smb.conf 파일 수정하기

일단, 만일의 사태를 대비해서 원본 파일을 복사해두자.

cp /etc/samba/smb.conf /etc/samba/smb.conf.ORIGINAL

smb.conf 파일에서 몇개만 고치면 된다. NAS 이름을 server 로 하기로 했다고 가정하고,

[global] 세션에서 아래부분 수정 내지는 추가

netbios name = server
server string = file server
workgroup = home
comment = server
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=65535 SO_RCVBUF=65535

정도만 해주면 된다. samba 버전마다 조금씩 설정이 다르기 때문에 이런 게 정답이다.. 라고 하긴 어려우니 참고만 하자.

아참, 혹시 모르니 부팅할 때 자동으로 실행하게 하자. 보통은 yum 으로 설치하면서 자동으로 설정되지만, 가끔 빠지기도 한다.

chkconfig smb on
chkconfig nmb on

그리고, 하나 더 쓰자면, SELINUX 에 익숙하지 않다면 끄자. NAS 가 결국엔 데이터 공유 (그걸 남과 하든지, 내 노트북과 NAS 만 하든지 간에..) 인데, SELINUX 가 설정되어 있다면 서비스 하나 추가할 때마다 설정하고, 풀어주고 … 귀찮다. 다만, 보안성은 아무래도 조금 떨어지니, 보안에 민감하거나 공개된 장소에서 NAS 를 써야 한다면 SELINUX 사용법 정도는 공부해두자. 여기서는 SELINUX 를 안 쓰는 걸로 하겠다.

/etc/selinux/config 파일

SELINUX=disabled
#SELINUX=enforcing

로 저장하고 리부팅하면 된다.

이 정도 했으면 기본적인 NAS 구성은 된 것이다. 각종 미디어 서버 (iTunes 서버, 스트리밍 서버 등등) 는 차츰차츰 추가하자. 일단 서버만 구축해서 무엇을 할 것인가 ? 데이터가 있어야 미디어 서버를 돌려도 돌아가겠지.


근데, 써놓고 보니, N54L 에 SSD 달고 CentOS 설치한 얘기네 ? 뭔가 빠진 듯 한데…


2014/04/11 akpil

nas_설치.txt · 마지막으로 수정됨: 2014/04/18 14:04 저자 akpil

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki