Skip to content

(추천) ZFS 파일 시스템으로 노하드 DIY ISCSI

 

그동안 BTRFS 파일 시스템으로 사용을하다 ZFS 파일 시스템을 사용해보니 이것이 훨씬 사용하기
쉽고 좀더 안정적이란 테스트 결과가 나와 ZFS 파일 시스템으로 강좌를 올려 드립니다.

우선 ZFS 파일 시스템은 솔라리스 시스템에서 만들어져 오픈 솔라리스에 탑재 되어 사용했는데
솔라리스가 오라클로 넘어가는 바람에 오픈 솔라리스가 없어지고 오픈 인디아나 등으로 나누어서 현재 활동을 하고 있습니다..

 

 리눅스의 BTRFS 는 ZFS 파일 시스템을 본따서 따라가는것이라고 하네요.. 앞으로 BTRFS 가
발전이 거듭되면 ZFS 를 능가하는 파일시스템이 될수도 있을 겁니다 ..

 제가 테스트한 결과는 아직은 ZFS 가 나은 것 같습니다.. ( 지극히 제 주관적인 생각입니다 )
우선 ZFS 를 설치하는 방법을 먼저 알려 드립니다..

 

 우분투

우선 소스 리스트 추가 합니다.
# apt-add-repository --yes ppa:zfs-native/stable
위와 같이 실행 했는데 혹시 아래 메시지가 나오면
The program 'apt-add-repository' is currently not installed you can install it by typeing :
apt-get install python-software-properties
# apt-get install python-software-properties 를 실행하면 됩니다.
# apt-get update    를 실행해 주시고
# apt-get install ubuntu-zfs 를 해주시면 설치끝
# modprobe zfs 이제 준비 끝

 

 REDHAT 6.X CENT-OS 6.X

아래 순서로 하시면 됩니다.
CENT OS 의 경우 아래 커널 DEVEL 을 설치해야 하는 경우가 있습니다
# yum install kernel-devel zlib-devel libuuid-devel libblkid-devel libselinux-devel parted lsscsi
보통은 아래만 실행하면 됩니다.
# yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release-1-3.e16.noarch.rpm

 

추가-2014.10-29-(위가 안되면 아래 명령으로 합니다.)

#yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.e16.noarch.rpm

 

추가-2014-10.29-( CENT OS 7 버젼은 아래 명령후 설치 진행 하시면 됩니다.)

#yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el7.noarch.rpm


# yum update
# yum install dkms gcc make kernel-devel perl
# yum install spl zfs
# chkconfig zfs on

 

위처럼 설치가 끝나면 사용할 준비가 되었습니다..

 

 ZFS 파일 시스템 사용법

우분투와 CENT-OS 둘다 사용법은 동일 합니다.
우선 ZFS 파일 시스템이 사용할 하드 디스크를 연결합니다..
레이드 구성도 ZFS 파일 시스템으로 할수 있습니다.. -- 훨씬 쉽고 편하게
SSD 캐쉬 구성, 스냅샷, 롤백, 클론, 등 아주 쉽고 빠르게 처리할수 있습니다.

우선 하드 디스크를 연결하면
# fdisk -l 로 보면 리눅스를 설치한 디스크와 다른 디스크 리스트가 보입니다.
아래를 예로 들겠습니다..
/dev/sda  -- 이것은 리눅스가 설치된 하드라고 가정합니다.
/dev/sdb  -- 빈하드 500G
/dev/sdc  -- 빈하드 500G
/dev/sdd  -- 빈하드 500G
/dev/sde  --  ssd 빈하드 128G


위처럼 빈하드 500G 3 개와 SSD 1 개로 구성을 해보겠습니다.
그럼 POOL 을 구성해 보겠습니다.. 말그대로 POOL(수영장) 생각하시면 됩니다..
빈수영장을 만들어 그곳에 볼륨 / 파일시스템을 생성해 넣어 담는 것 입니다
하나의 틀이라고 생각하시면 됩니다...
아래 명령은 cleanpc 라는 풀을 하드 3 개를 raid0 로 만든 것 입니다.
거의 모든 레이드가 구성이 가능합니다..

pool 만들기
500 기가 3개로 1.5 TB cleanpc 풀을 만들었습니다..
#zpool create cleanpc /dev/adb /dev/adc /dev/sdd
아래는 만들어진 상태를 보는명령 입니다.
#zpool status cleanpc


pool: cleanpc
 state: ONLINE
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        cleanpc     ONLINE       0     0     0
          adb      ONLINE       0     0     0
          adc      ONLINE       0     0     0
          add      ONLINE       0     0     0
errors: No known data errors

 

위처럼 만들어진 풀은
/cleanpc 라는 이름의 폴더가 만들어지며 연결이 됩니다..

그럼 만들어진 풀에
파일 시스템을 만들어 봅니다 이것을 기준으로 스냅샷을 만들거나 합니다.
cleanpc 풀에 os 라는 파일 시스템이 생성 되었습니다.

# zfs create cleanpc/os 

아래 명령으로 zfs 로 만들어진 리스트를 볼수 있습니다.

# zfs list
NAME         USED  AVAIL REFER  MOUNTPOINT
cleanpc        사용량 1.5T 할당공간 /cleanpc
cleanpc/os

 

위처럼 만들어진 os 폴더는 cd /cleanpc/os 로 들어가서 파일을 넣거나 하면 됩니다.
예로 윈도우 이미지로 사용할 50G 빈 파일을 생성합니다.

#dd if=/dev/zero of=/cleanpc/os/win.img bs=1M count=50000
이번에는 볼륨을 만들어 봅니다. 볼륨은 하드 디스크와 같은 장치라고 생각하시면 됩니다
아래 명령으로 매우빠른시간에 1초도 안걸려 50G 의 볼륨이 만들어 집니다.

# zfs create -V 50G cleanpc/osv
-- 볼륨의 접근은 위처럼 폴더로 접근이 안됩니다. --
위처럼 만들어진 볼륨은 /dev/zvol/cleanpc/osv 로 device 로 즉 하나의 하드 디스크가
만들어졌다고 보시면 됩니다.

# zfs list
NAME         USED  AVAIL REFER  MOUNTPOINT
cleanpc        사용량 1.5T 할당공간 /cleanpc
cleanpc/os                          /cleanpc/os
cleanpc/osv                         ---

 

위처럼 osv 는 마운트 포인트가 없습니다..
위의 볼륨으로 직접 iscsi 연결해서 윈도우 깔고 게임 깔면 됩니다..
파일 만드는 시간 절약도 되고 사용하기 훨씬 쉽습니다.

이제는 지우는 명령 입니다.
파일 시스템/볼륨 삭제는

#zfs destroy cleanpc/os

풀 삭제
#zpool destroy cleanpc

 

스냅샷 만들기와 복제 방법은
아래 명령으로 os 를 backup 으로 스냅샷 저장됩니다.

#zfs snapshot cleanpc/os@backup

복제 ( backup 스냅샷을 pc1 으로 복제 합니다. )

#zfs clone cleanpc/os@backup cleanpc/pc1

#zfs list
NAME         USED  AVAIL REFER  MOUNTPOINT
cleanpc        사용량 1.5T 할당공간 /cleanpc
cleanpc/os                          /cleanpc/os
cleanpc/osv                         ---
cleanpc/pc1                         /cleanpc/pc1              a 이렇게 복제됨

 

롤백 (원본이 손상되었거나 했을 때 스냅샷으로 되돌립니다.)
#zfs rollback cleanpc/os@backup
POOL 에 SSD 캐쉬를 연결

POOL 에 읽기 성능을 향상하기 위해 SSD 로 캐쉬로 연결을 쉽게 할수 있습니다.

#zpool add cleanpc cache /dev/sde

#zpool status
pool: cleanpc
 state: ONLINE
  scan: none requested
config:
        NAME        STATE     READ WRITE CKSUM
        cleanpc     ONLINE       0     0     0
          adb      ONLINE       0     0     0
          adc      ONLINE       0     0     0
          add      ONLINE       0     0     0
cache
          ade       ONLINE       0     0    0
errors: No known data errors

 

캐쉬 SSD 삭제는
#zpool remove cleanpc cache /dev/sde

 

이렇게 ZFS 파일 시스템 설치와 기본 명령을 살펴 보았습니다..

 

그럼 ISCSI TARGET 과 연결하여 사용하는 과정을 보여 드리겠습니다.
1. 풀을 만들어 OS, GAME 볼륨을 만든다
#zpool create cleanpc
#zfs create -V 50G cleanpc/os
#zfs create -V 500G cleanpc/game

 

2. 만들어진 볼륨을 iscsi target 으로 연결해서 윈도우설치 및 게임 설치
아래 ietadm 은 우분투에서 사용하는 iscsi
#ietadm --op new --tid=1 --params Name=iqn.cleanpc.com:master
#ietadm --op new --tid=1 --lun=0 --params Path=/dev/zvol/cleanpc/os,Type=blockio
#ietadm --op new --tid=1 --lun=1 --params Path=/dev/zvol/cleanpc/game,Type=blockio

아래 tgtadm 은 censos 에서 사용하는 iscsi target
#tgtadm --lld iscsi --op new --mode target --tid=1 --targetname iqn.cleanpc.com:master
#tgtadm --lld iscsi --op new --mode logicalunit --tid=1 --lun 1 -b /dev/zvol/cleanpc/os
#tgtadm --lld iscsi --op new --mode logicalunit --tid=1 --lun 2 -b /dev/zvol/cleanpc/game
#tgtadm --lld iscsi --op bind --mode target --tid=1 --I ALL

 

3. 윈도우에서 위에서 iscsi 연결해서 윈도우 및 게임 설치
윈도우 iscsi 연결하여 디스크 관리에서 포멧하여 os 볼륨에는 윈도우를 ghost 전송하고
game 에는 기존에 설치해놓은 게임이 있으면 똑같이 ghost 전송을 합니다.
그럼 원본 os 와 game 이 만들어 졌습니다

4. 원본을 복제하여 pc 대수 만큼 만듭니다.
우선 원본을 복제하기전 iscsi 연결을 해제 합니다.
#ietadm --op delete --tid=1 --lun=0
#ietadm --op delete --tid=1 --lun=1
#tgtadm --lld iscsi --op unbind --mode target --tid=1 --I ALL
#tgtadm --lld iscsi --op delete --mode target --tid=1

 

스냅샷을 만들고 pc 개수만큼 복제 합니다.
#zfs snapshot cleanpc/os@backup
#zfs snapshot cleanpc/game@backup
#zfs clone cleanpc/os@backup cleanpc/os-pc1       -- pc 개수만큼 뒤의 번호만 붙여줍니다
#zfs clone cleanpc/game@backup cleanpc/game-pc1  -- pc 개수만큼 뒤의 번호만 붙여줍니다.

 

5. 이제 클론을 iscsi 연결해서 부팅합니다 ( 피시 대수만큼 번호만 바꾸어 만들면 됩니다. )
#ietadm --op new --tid=1 --params Name=iqn.cleanpc.com:pc1
#ietadm --op new --tid=1 --lun=0 --params Path=/dev/zvol/cleanpc/os-pc1,Type=blockio
#ietadm --op new --tid=1 --lun=1 --params Path=/dev/zvol/cleanpc/game-pc1,Type=blockio
#tgtadm --lld iscsi --op new --mode target --tid=1 --targetname iqn.cleanpc.com:pc1
#tgtadm --lld iscsi --op new --mode logicalunit --tid=1 --lun 1 -b /dev/zvol/cleanpc/os-pc1
#tgtadm --lld iscsi --op new --mode logicalunit --tid=1 --lun 2 -b /dev/zvol/cleanpc/game-pc1
#tgtadm --lld iscsi --op bind --mode target --tid=1 --I ALL
 
6. 게임 패치는 어떻게 할까요
위에 만들어진 원본 게임을 사용 합니다.
패치용 컴퓨터에 하드 연결해서 윈도우와 게임을 동일하게 설치 합니다.
그리고 iscsi 를 위의 원본 게임을 E 로 연결해서 패치서버에서 패치가 D 로 게임을 패치한뒤
ROBOCOPY 로 D 와 E 를 동기화 하면 서버의 원본 게임이 패치가 됩니다
( 강의 자료 살펴 보시면 됩니다. )
1. 동기화 완료후
2. 위처럼 ISCSI 해제한뒤
3.스냅샷을 먼저 생성 합니다.
#zfs snapshot cleanpc/game@backup2
backup2 로 생성을 합니다..나중에 backup2 로 바꾼뒤 손상이 되었거나 하면
backup 으로 rollback 하면 됩니다.

이상 없으면 기존 스냅샷을 지우면 됩니다.
#zfs destroy cleanpc/game@backup  - 기존 스냅샷 지울 때
클라이언트 pc 의 게임을 바꾸어 줘야 하기 때문에 iscsi 해제를 합니다.
(TID 번호는 예를들어 놓은것입니다.. 같은번호 사용하시면 안됩니다. pc가 전부다르게
하시면 됩니다.)
#ietadm --op delete --tid=1 --lun=0
#ietadm --op delete --tid=1 --lun=1
#tgtadm --lld iscsi --op unbind --mode target --tid=1 --I ALL
#tgtadm --lld iscsi --op delete --mode target --tid=1

 

기존의 복제된 게임삭제 ( pc 대수 만큼 )
#zfs destroy cleanpc/game-pc1

새로운 게임 복제 ( pc 대수 만큼 )
#zfs clone cleanpc/game/backup2 cleanpc/game-pc1

다시 iscsi 연결 ( pc 대수 만큼 )
#ietadm --op new --tid=1 --params Name=iqn.cleanpc.com:pc1
#ietadm --op new --tid=1 --lun=0 --params Path=/dev/zvol/cleanpc/os-pc1,Type=blockio
#ietadm --op new --tid=1 --lun=1 --params Path=/dev/zvol/cleanpc/game-pc1,Type=blockio
#tgtadm --lld iscsi --op new --mode target --tid=1 --targetname iqn.cleanpc.com:pc1
#tgtadm --lld iscsi --op new --mode logicalunit --tid=1 --lun 1 -b /dev/zvol/cleanpc/os-pc1
#tgtadm --lld iscsi --op new --mode logicalunit --tid=1 --lun 2 -b /dev/zvol/cleanpc/game-pc1
#tgtadm --lld iscsi --op bind --mode target --tid=1 --I ALL

 

위와 같은 순서로 복제 패치 삭제 를 진행 하시면 됩니다.. 만약의 사태에 롤백 으로 정상으로 돌릴수 있고  속도도 마음에 듭니다.
몇 달간 테스트 해보고 추천 드립니다.. 물론 btrfs 는 계속 개발 진행중이고
zfs 는 멈추어 있는 상태긴 하지만 아직까지는 저는 zfs 가 훨씬 좋다고 봅니다.
노하드 DIY CLEANPC
위의 자료를 무단으로 복제하지 마시기 바랍니다.
감사합니다.?



출처 : http://clean-pc.co.kr/diy/4822099

profile

일요일은 짜빠게뤼~ 먹는날~^^

엮인글 :
http://adminplay.com/449228/160/trackback
List of Articles
번호 제목 글쓴이 날짜 조회 수
367 리눅스에서 GNU Parted로 4K 섹터 디스크 파티션 정렬하기 ADMINPLAY 2016-06-02 6162
366 클라이언트가 ssh접속시 서버의 RSA키값 변경으로 인한 접... ADMINPLAY 2016-05-20 9023
365 error: Hm, kex protocol error: type 30 seq 1 [preauth]... file ADMINPLAY 2016-05-20 5731
» ZFS 로 SSD 캐쉬 RAID ISCSI 노하드 서버 쉽게 만들자 ADMINPLAY 2016-05-17 7085
363 2TB이상의 Disk를 사용한 Raid6 구성 ADMINPLAY 2015-08-08 49512
362 HP 서버 disk 증설 (hpacucli 사용) ADMINPLAY 2015-08-05 5277
361 EXT4 파일 시스템을 Btrfs 파일 시스템으로 변환하기 ADMINPLAY 2015-07-07 5484
360 [linux][명령어 백그라운드 실행] ADMINPLAY 2015-05-20 14871
359 [맥] 커맨드 라인에서 CD/DVD 꺼내기 ADMINPLAY 2014-10-14 7182
358 Install 3ware (LSI) 9690SA SCSI RAID Controller VIB On... file ADMINPLAY 2014-10-09 7144
357 [CentOS] sshfs - 리눅스 윈도우간 데이터 전송을 편리하게 file ADMINPLAY 2014-09-21 9543
356 Dell OMSA 설치 및 이용방법 ADMINPLAY 2014-08-13 53102
355 [우분투] 노하드 서버 설정하기 ADMINPLAY 2014-08-05 20304
354 원격데스크톱(RDP) 클라이언트 접속기록(Log) 삭제하기 file ADMINPLAY 2014-07-14 7738
353 cacti plugin thold 설치 ADMINPLAY 2014-07-07 8204
352 Hamlet 은 “웹서버 모니터링 오픈소스 솔루션” 입니다. ADMINPLAY 2014-07-07 6827
351 Zabbix 웹서비스 모니터링 ADMINPLAY 2014-07-07 8375
350 [Linux] Proxy 서버 설정하기 ADMINPLAY 2014-06-17 17233
349 How to Enable EPEL Repository for RHEL/CentOS 6/5 ADMINPLAY 2014-06-13 11473
348 vi 이미 읽은 파일의 인코딩 변경하기 ( euc-kr 로 encodi... ADMINPLAY 2014-05-31 7034

Copyright ADMINPLAY corp. All rights reserved.

abcXYZ, 세종대왕,1234

abcXYZ, 세종대왕,1234