2016. 12. 5. 11:24

CentOS 7 파일서버 작업로그 (Samba, ZFS)


0. 설치옵션 : 파일서버 (모두체크)


1. 네트워크 IP 설정


1.1 이더넷 장치 확인

ls -la /etc/sysconfig/network-scripts/ifcfg*


1.2 고정IP 설정

vim /etc/sysconfig/network-scripts/ifcfg-enp0s3

BOOTPROTO="none"

ONBOOT="yes"


# IP Address

IPADDR = "192.168.0.5"

# Subnet Mask

NETMASK = "255.255.255.0"

# Default Gateway

GATEWAY = "192.168.0.1"

# DNS Server

DNS1 = "192.168.0.1"


2. ZFS 설치

https://github.com/zfsonlinux/zfs/wiki/RHEL-%26-CentOS


2.1 ZFS 저장소 설치파일 내려받기

wget http://download.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm


2.2 ZFS 저장소 설치

sudo yum install http://download.zfsonlinux.org/epel/zfs-release$(rpm -E %dist).noarch.rpm


2.3 ZFS 저장소 지문 등록

gpg --quiet --with-fingerprint /etc/pki/rpm-gpg/RPM-GPG-KEY-zfsonlinux


2.4 ZFS 저장소 커널모듈 옵션 사용으로 설정

sudo /etc/yum.repos.d/zfs.repo

dkms enabled=1

kmod enabled=1 

2.5 ZFS 설치

sudo yum install zfs


2.6 커널모듈 설치 (DKMS)

sudo yum install kernel-devel zfs


2.7 모듈 로드

sudo /sbin/modprobe zfs


2.8 ZFS 풀 생성

sudo zpool create haebinas /dev/sda3

[주의] 풀 생성 후 다시 이 명령어 입력하면 기존 풀이 다 날아가므로 주의! 주의!!


2.9 ZFS의 풀에 파일시스템을 생성

zfs create haebinas/data



3. Samba 설정


3.1 Samba공유를 위한 폴더 생성

cd /haebinas/data

mkdir haebi


3.2 권한 설정

chown -R haebi:haebi haebi/


3.3 Samba 환경설정

기존파일 백업

sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak


설정파일 에 경로 설정

sudo vim /etc/samba/smb.conf

workgroup = WORKGROUP

dos charset = CP949

display charset = UTF8

unix charset = UTF8


[haebinas]

path = /haebinas/data

writable = yes

valid users = haebi 


3.4 Samba 사용자 등록

sudo smbpasswd -a haebi


3.5 서비스 허용

sudo systemctl enable smb

sudo systemctl enable nmb


3.6 서비스 재시작

sudo systemctl restart smb

sudo systemctl restart nmb


3.7 방화벽 설정

sudo firewall-cmd --permanent --zone=public --add-service=samba

sudo firewall-cmd --reload


3.8 SELinux Samba 허용

chcon -t samba_share_t /haebinas/data

chcon -t samba_share_t /haebinas/data/haebi



4. 부팅시 자동으로 서비스 올라오도록 설정


4.1 자동실행을 위한 rc.local 활성화

sudo chmod +x /etc/rc.d/rc.local


4.2 ZFS 커널모듈 로드 및 생성한 풀 등록 (create 대신 import 사용을 눈여겨 본다!)

sudo vim /etc/rc.local

/sbin/modprobe zfs

zpool import haebinas


참고1 - Samba 방화벽 설정 예

Chain IN_public_allow (1 references)

 pkts bytes target     prot opt in     out     source               destination         

   35  3234 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:137 ctstate NEW

   13  2971 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0            udp dpt:138 ctstate NEW

    0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:139 ctstate NEW

    1    52 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:445 ctstate NEW 





Posted by 해비
2016. 4. 4. 22:31


NAS에 파일시스템을 ZFS로 사용하면서 정리한 것들 입니다.


이 한페이지로 모든 상황에 다 써먹을순 없겠지만... 제가 사용중인 명령어들만 간단하게 한번 정리 해봤습니다.


누군가에겐 도움이 되겠지요~?


일부 틀린 내용 있을수도 있으니 참고 하셔서 조심조심 사용 바랍니다.




ZFS 사용을 위해서는 크게 2단계를 작업해야 합니다.

1. 풀 생성

2. 파일시스템 생성


linux에 ZFS 설치 할때 필히 커널에 모듈로 설치되는 Native ZFS 설치하시기 바랍니다.

유저레벨에서 돌아가는 Fuse는 성능 이슈가 있습니다.




 zpool

 import

 poolname

 

 - 기존에 존재하던 풀을 등록.
   (운영체제 재설치 후 기존에 쓰던 풀을 재등록 가능)

 zpool

 create

 poolname

 /dev/sdx /dev/sdy ...

 - 새로운 풀을 생성.
 - 뒤에 나열되는 저장장치들을 모두 묶어 하나의 스토리지 풀 구성.

 - 기존에 풀이 존재하는 경우 제거되고, 새 풀이 생성.

   (기존에 존재하던 풀을 사용하고자 할 경우 이 명령어 금지!!)

 zpool

 add 

 poolname

 /dev/sdx

 - 기존 풀에 새 저장 장치를 추가.

  (기존 풀에서 사용중인 장치 제거는 아직 몰라용 ㅠㅠ)

 zpool

 add

 poolname

 cache /dev/sdx

 - 캐시(L2ARC)로 사용할 장치를 추가

 zpool

 remove

 poolname cache /dev/sdx

 - 캐시(L2ARC)로 사용중인 장치 제거

 ARC(캐쉬)상태 확인

 # cat /proc/spl/kstat/zfs/arcstats


* ARC는 캐쉬 입니다. 총 2단계로 존재.

- L1 ARC : 시스템 메모리를 캐쉬로 사용하는데 권장 용량은 저장소 1TB 당 1GB의 메모리 캐쉬를 권장

- L2 ARC : 블록디바이스(저장장치)를 캐쉬로 사용하는데 고속 액세스 가능한 SSD를 풀의 캐쉬로 구성 가능




파일시스템

 파일시스템 - 가장 기본적인 사항!! 

 zfs

 list

 

 

 - ZFS 파일시스템의 리스트 출력

 zfs

 create

 

 poolname/data

 - data 라는 파일시스템 생성

 zfs

 create

 -V 50G

 poolname/anime

 - 50GB 용량의 볼륨 생성

 - 볼륨은 그 /dev/sdx 와 같은 방식으로, 장치가 생긴다고 보면된다.

 zfs

 destroy

 

 poolname/anime

 - 파일시스템 삭제

  (주의!! - 추가확인 없이 그냥 지워버림 주의 또 주의 !!)

 스냅샷 - ZFS를 사용하는 이유! ZFS의 꽃! 바로 스냅샷 기능입니다. ★★★★★

 zfs  snapshot poolname/data@original - poolname/data 파일시스템에 original 스냅샷 생성
 zfs

 list -t

 snapshot -r 

 poolname/data - 스냅샷 목록 확인
 zfs list -o space -r poolname/data - 스냅샷이 차지하는 공간 사용을 확인
 zfs rollback  poolname/data@original

 - original 시점으로 롤백

 - original 스냅샷 생성 이후에 발생한 모든 변경사항을 취소.

 zfs destroy  poolname/data@original - original 스냅샷 삭제

 쿼터 - 디스크 공간 할당을 자유 자재로!! 

 zfs set

 quota=10G

 poolname/data

 - 쿼터(할당공간) 설정.

 - 사용 중에 자유롭게 공간 사이즈를 재지정 할 수 있다.

  (당연하겠지만, 실제로 데이터가 차지하는 공간보다 작게는 설정불가)

 zfs get quota poolname/data

 - 현재 쿼터 설정정보 확인

 압축 - 풀에 압축 사용여부 설정 

 zfs

 set

 compression=lz4 poolname

 - 풀에 저장되는 데이터에 lz4 압축 사용

 zfs set compression=off poolname

 - 풀에 저장되는 데이터에 압축 사용 안함

 zfs get

 compression

 poolname - 현재 풀의 압축정보 확인


* 압축 관련

- 압축 지정 후 들어오는 데이터에 한해서 압축이 적용.

- 마찬가지로 압축을 꺼도 기존 들어온 데이터는 이미 기존 설정대로 저장된 상태로 진행.

- 압축종류가 몇가지 있는데 lz4를 추천하는 이유는 가장 빠른 속도 때문. 거의 제로타임 압축이라 불려질 정도로 빠르다고 함.



본인은 압축을 안씁니다. 대부분 동영상 데이터인데 압축 해봐야 용량이 줄어지 않기 때문

개인의 판단에 따라 사용을 하면 되겠습니다.






[참고]

https://docs.oracle.com/cd/E24846_01/html/E23284/toc.html

- 여기 페이지에 더 많은 내용이 상세히(?) 있으므로 부족한 내용은 이쪽 참고 바랍니다.




Posted by 해비
2016. 2. 29. 17:38

이번에는 운영체제 재 설치, 또는 교체 후 기존 ZFS 풀을 연결하는 방법에 대해 다룹니다.


일단 기존 풀이 여러개의 디스크에 걸쳐 있었다면, 당연히 모든 디스크가 다 준비되어 있어야 합니다.


그렇지 않으면 아래와 같이 불가능 또는 오류 메시지가 나타납니다.



- 총 4개의 디스크 중 1번 만 연결한 경우의 예시

- 하나 이상의 디스크가 빠진 경우, 사용이 불가능합니다.



- 총 4개의 디스크 중 2번만 연결한 경우의 예시

- 이번에는 메타데이터 정보가 문제 있어 폴트가 발생하였습니다.



위 오류 메시지들은 시스템에 따라 다를 수 있습니다.


중요한 것은 풀을 구성했던 당시의 모든 디스크가 준비되어 있어야 한다는 것입니다.




이번에는 모든 디스크를 다 연결 후 다시 시도한 경우의 예 입니다.

- zpool import 로 풀을 확인 하고

zpool import [pool] 로 풀을 추가합니다.

- zpool status 로 상태를 확인 해 보면 정상으로 ONLINE 상태가 된 것을 확인 할 수 있습니다.






[테스트 환경]

- Linux Mint 17.3 x86_64

- VirtualBox 에서 테스트 하였습니다.






Posted by 해비
2016. 2. 23. 07:51

리눅스 배포판은 민트 17.3 을 기준으로 합니다.


ZFS는 유저레벨에서 돌아가는 ZFS-fuse 와 커널레벨에서 돌아가는 모듈 방식이있는데 여기서는 후자쪽, 커널에 모듈방식으로 올리는 것으로 합니다.

(fuse는 안정성이나 퍼포먼스가 좋지 못하다고 합니다.)


zfsonlinux 사이트에 관련 정보가 있습니다.




1. 리포지터리 추가

add-apt-repository ppa:zfs-native/stable



2. 업데이트 및 패키지 설치

apt-get update

apt-get install ubuntu-zfs build-essential kmod spl

- Repo를 추가 하였으므로 추가된 Repo 로 부터 패키지 리스트를 갱신(업데이트) 합니다.



3. zfs 및 zfs status 명령어 테스트

- 둘다 잘 된다면 여기서 끝~!!


제 경우, zfs는 되는데 zfs status 는 모듈이 없다고 합니다.



3-1. 모듈 올리기

modprobe zfs

- 역시나 올라가면 여기서 끝~!!


제 경우 역시 여기서 모듈을 찾을 수 없다 합니다. 아놔 -_-;;




3-2. 모듈 리빌드

dpkg-reconfigure spl-dkms

dpkg-reconfigure zfs-dkms

- 모듈을 새로 빌드해 줍시다. 근데 이거 시간 쪼매 걸립니다. (그냥 몇분 정도...)

- 출처 : http://askubuntu.com/questions/431879/error-when-installing-ubuntu-zfs


빌드 후에 다시 3-1 의 모듈 올리기를 시도하면...?

반갑게도 아무런 오류를 내뱉지 않습니다. (오류 메시지 없으면 정상요)




이제 다시

zfs

zfs status

- 2개의 명령어 테스트를 해봅니다.

- 모듈 어쩌서 메시지 안뜨면 잘 된겁니다. 



설치는 여기까지 끝~!!  이후 활용편에서 계속합니다.






Posted by 해비