[NAS 구축] 2. CentOS7, HDD Mount, Samba

서버는 아무래도 CentOS가 검증되어있기 때문에 그걸로 가기로 했습니다.
필요한 기능이라면 ftp, samba, 미디어서버, WOL, 자동백업 정도 되려나요
토렌트도 상당히 사용하니 토렌트서버도 하나 두면 좋을것같네요
그러고보니 집 IP가 유동IP기 때문에 DDNS도 설정해야합니다.
마침 iptime 공유기를 사용하고있죠

1. CentOS7 설치 및 기본 설정

우선은 OS를 설치합니다.
현재 SSD 하나에 HDD가 세 개인데, SSD에 리눅스를, HDD는 마운트 형식으로 사용하려고 합니다.
실수로 HDD를 SSD와 같이 LVM으로 묶어버려서 새로 포맷하는 불상사가 일어나긴 했네요
설치하려는 드라이브에서 SSD만을 선택하고 파티션을 자동으로 잡아주면 인스톨러가 적절히 파티션을 나눠줍니다.
(보통 부트 1MB, 스왑을 메모리 크기정도로 잡는 것 같네요)

저는 CentOS 7 minimal을 설치했습니다.
Everything(DVD) 버전도 상관없습니다.
minimal은 말 그대로 minimal이기 때문에 설치 후 아무것도 되는게 없습니다.
nmtui로 네트워크를 잡아준 다음 네트워크를 재시작합니다.
DHCP를 쓰고싶은 경우에는 nmtui로 어댑터를 활성화시키기만 하면 됩니다.
더 복잡한 설정은 sysconfig 디렉토리에서 스크립트를 조금만 손보면 됩니다.

nmtui (어댑터 활성 / 설정)
systectl network restart
ip addr (net-tools가 없어 ifconfig를 못할 때 유용)

그리고 필요한 패키지들을 이것저것 설치해줍니다.
당장은 net-tools, APM(apache, php, mysql), vsftpd 등등

2. HDD 파티션 설정

요새 핫한 파일 시스템들이 많이 있습니다만 그냥 적당한 걸 쓰기로 했습니다.
zfs를 좀 써보고싶었는데, 그거 할 시간은 없겠다싶어 패스했습니다.
ext4와 btrfs가 후보인데, 친구가 회사에서 btrfs로 스토리지 서버 운영을 하면서 욕을 좀 많이 하더라구요 (지금은 zfs를 쓴다고 하네요)
그냥 맘고생 하지 말고 ext4로 밀기로 했습니다.

우선은 fdisk -l로 연결된 스토리지를 탐색합니다. (/dev를 건드리기 때문에 sudo로 실행해야 합니다.)
이것으로 스토리지 정보를 알 수 있습니다.
이런 형식적인 확인 절차는 HDD 날리려다 SSD 보내버리는 사태를 막아줍니다.

Disk /dev/sda: 128.0 GB, 128035676160 bytes, 250069680 sectors
Disk /dev/sdb: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Disk /dev/sdc: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors
Disk /dev/sdd: 2000.4 GB, 2000398934016 bytes, 3907029168 sectors

그 후에는 fdisk /dev/[storage] (e.g. /dev/sda)로 해당 스토리지를 주무를 수 있도록 합니다.
저는 sdb, sdc, sdd를 포맷해야 합니다.
일단 fdisk로 들어가면 다음과 같은 명령어들을 사용할 수 있습니다.

Command (m for help): m
Command action
   d   delete a partition
   g   create a new empty GPT partition table
   G   create an IRIX (SGI) partition table
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

뭐… 적절히 사용해줍니다.
d 연타해서 파티션 있는걸 싹 지우고
g 눌러서 리눅스용으로 파티션 테이블 새로 만들어주고
n 눌러서 파티션을 새로 추가해줍니다.
저는 파티션을 굳이 나눌 필요가 없어서 디폴트로 진행했습니다. (엔터만 연타)
w 눌러서 저장하고 나오면 되구요
더 필요한 설정이 있다면 하고 나오면 됩니다

[hooni@localhost ~]$ sudo fdisk /dev/sdd
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Command (m for help): d
Selected partition 1
Partition 1 is deleted

Command (m for help): d
No partition is defined yet!

Command (m for help): g
Building a new GPT disklabel (GUID: 8C398EF8-BABB-404C-96B0-F0630FE04D97)

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-3907029134, default 2048): 
Last sector, +sectors or +size{K,M,G,T,P} (2048-3907029134, default 3907029134): 
Created partition 1

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

3. HDD 포맷 및 마운트

2번은 파티션을 잡는게 다였으니, 이제 포맷을 해주어야 합니다.
저는 ext4로 포맷을 할거구요, 경우에 따라서 다음과 같은 형식으로 포맷할 수 있습니다. (OS 기본제공 형식)

[hooni@localhost ~]$ mkfs.
mkfs.btrfs   mkfs.ext2    mkfs.ext4    mkfs.minix   mkfs.vfat    
mkfs.cramfs  mkfs.ext3    mkfs.fat     mkfs.msdos   mkfs.xfs

mkfs.ext4 /dev/sdb1로 포맷을 진행합니다.
sdb1은 sdb의 파티션 1을 의미합니다.
다 끝나고 blkid로 확인해보면 포맷이 잘 돼있는걸 확인할 수 있습니다.

[hooni@localhost ~]$ sudo blkid
...
/dev/sdb1: UUID="f363d944-b8ca-4e72-aca3-d7131d4b285b" TYPE="ext4" PARTUUID="5d205855-b09d-432b-81f5-9506aa8dfae2" 
/dev/sdc1: UUID="c5383490-6d48-4644-822b-1b5c12044432" TYPE="ext4" PARTUUID="b022ef2d-eea4-4825-a12e-3b47598eb7bc" 
/dev/sdd1: UUID="cd5ab246-9ce0-47e7-ae01-a68c2ab616c8" TYPE="ext4" PARTUUID="1b248742-2ed5-4b17-ac05-24f0f63eef33" 
...

이제 mount 명령어로 마운트하거나, fstab에 등록해 자동 마운트를 설정하면 됩니다.
저는 /etc/fstab을 다음과 같이 수정했습니다.

...
# HDD Storage
UUID=f363d944-b8ca-4e72-aca3-d7131d4b285b /storage/hdd1 ext4    defaults        0 0
UUID=c5383490-6d48-4644-822b-1b5c12044432 /storage/hdd2 ext4    defaults        0 0
UUID=cd5ab246-9ce0-47e7-ae01-a68c2ab616c8 /storage/hdd3 ext4    defaults        0 0

몰랐는데, 마운트과정에서 디렉터리를 자동으로 생성해주진 않더라구요
디렉터리를 먼저 만드신 후 마운트해야합니다.
안그러면 다음과 같은 오류를 보시게 되실겁니다.

[hooni@localhost /]$ sudo mount -a
mount: mount point /storage/hdd1 does not exist
mount: mount point /storage/hdd2 does not exist
mount: mount point /storage/hdd3 does not exist

4. Samba 설치

당장 데이터를 좀 옮기고싶은데 ftp쓰기는 좀 그래서
samba로 윈도우에서 마운트해서 쓰게끔 설정했습니다.
이후 OwnCloud같은 걸로 연동이 되도록 해볼 생각입니다.
저같은 경우 DDNS를 사용하는데다 공유기에서 포트포워딩까지 하니
외부에서 NAS samba로 접근을 못하더군요
(윈도우의 경우 네트워크 스토리지를 마운트할 땐 무조건 samba 디폴트 포트:139, 445를 사용하게 되어 있습니다.)
ftp로 I/O할게 아니라면 웹 인터페이스가 절실합니다.

일단 전 hdd1, hdd2, hdd3 세 디렉터리를 개방할거고,
hdd1은 guest에게 read only로, hdd2, hdd3는 user에게만 허용하도록 구성할 생각입니다.

우선은 samba 설치가 필요합니다.

yum -y install samba samba-client

물론 /etc/samba/smb.conf에서 설정도 적절히 해줍니다. (아래는 예시입니다)

[samba]
        comment = samba Share Directories
        path = /home/samba
        read only = no
        valid users = [유저] [게스트]
        public = yes
        writable = yes
        write list = [유저]
        create mask = 0777
        directory mask = 0777

다 끝나면 방화벽을 뚫고 리붓하고 즐기면 됩니다.

sudo firewall-cmd --permanent --add-port=139/tcp
sudo firewall-cmd --permanent --add-port=445/tcp
sudo firewall-cmd --reload
sudo systemctl enable smb
sudo systemctl start smb

samba를 즐기기 위해서는 samba에 계정을 등록해야 합니다.
OS 계정이 아니라 samba 계정입니다.

sudo smbpasswd -a username

위의 명령어를 통해서 유저를 등록해주면 됩니다.

CentOS7의 경우 SELinux가 Samba 연결을 막습니다.
chcon 커맨드를 통해 Samba 접근용 디렉터리의 보안속성을 samba로 바꾸어주어야 합니다.

[hooni@localhost /]$ sudo chcon -t samba_share_t /storage/hdd*
...
[hooni@localhost /]$ ls -Zal /storage/
합계 12
drwxrwxrwx.  5 unconfined_u:object_r:samba_share_t:s0 root root   42  1월  9 05:00 .
dr-xr-xr-x. 18 system_u:object_r:root_t:s0      root root  257  1월  9 09:33 ..
drwxrwxrwx.  3 system_u:object_r:samba_share_t:s0 root root 4096  1월  9 04:45 hdd1
drwxrwxrwx.  3 system_u:object_r:samba_share_t:s0 root root 4096  1월  9 04:45 hdd2
drwxrwxrwx.  3 system_u:object_r:samba_share_t:s0 root root 4096  1월  9 04:46 hdd3

samba_share_t로 보안 속성을 바꾸고 나니 samba 접속이 잘 됩니다.

Series Navigation<< [NAS 구축] 1. H/W 구성[NAS 구축] 3. ownCloud 설치 (작성중) >>

Hits: 4207

댓글 남기기