NAS 박스로서 FreeBSD의 ZFS에 대한 권장 사항?


9

이 페이지의 답변은 2009 년의 답변이므로 복음에 의존해서는 안됩니다. 에 대한 특정 질문이 있으면 질문하기 단추 를 클릭하고 특정 질문을하십시오.

FreeBSD 7.2와 ZFS 파일 시스템을 사용하여 홈 백업 시스템을 구축 할 생각이었습니다. 누구든지 해당 파일 시스템에 경험이 있습니까?

구체적으로 특별히:

  • ZFS에서 부팅 할 수 있습니까? (내가 원 할까?)
  • 드라이브를 추가하는 것이 얼마나 쉬운가요?
  • 크기가 다른 드라이브를 얼마나 잘 처리합니까?
  • 새 드라이브를 즉석에서 (또는 최소한 재부팅만으로) 추가 할 수 있습니까?
  • 선반 밖에서 더 나은 서비스를 제공받을 수 있습니까?

다른 생각이나 제안은 환영받을 것입니다.

편집하다:

ZFSFreeBSD 페이지를 읽었습니다 . 나는 내가 원하는 것과 비슷한 설정으로 실용적인 경험을 가진 사람들의 제안을 찾고 있습니다.

답변:


13

ZFS를 사용하여 홈 FreeBSD 파일 서버를 빌드합니다.

RAM이 3GB 인 AMD X2 3200+입니다. PCI Express Gig-E가 있습니다. 부팅 드라이브는 오래된 400GB이고 4 개의 750GB Seagte 드라이브가 있습니다 (하나의 경우 다른 펌웨어 버전이있는 경우).

ZFS에서 부팅하는 것이 좋았지 만 (설치가 더 간단 해졌지만) ZFSOnRoot 지침을 사용하여 ZFS로 루트 / OS 드라이브를 설정했습니다 (모든 파티션이 ZFS 인 경우 부팅시 fsck를 수행 할 필요가 없습니다) UFS 파일 시스템 확인). 필요한 경우 다른 파티션 (/ var, / usr, / tmp 등)을 필요에 따라 다른 옵션 (예 : / usr / obj의 noatime 및 async)으로 설정하여 커널 속도를 높일 수있는 이유 컴파일)하지만 공통 풀의 공간을 모두 공유합니다. 그런 다음 데이터 드라이브를 설정하고 각 사용자에게 다른 인용 부호와 설정을 사용하여 자신 만의 파티션을 제공 할 수 있습니다. 그런 다음 스냅 샷을 만들 수 있습니다 (ZFS에서는 비용이 저렴함).

My home server has a df that looks like:
/dev/ad0s1a           1.9G    744M    1.1G    41%    /
devfs                 1.0K    1.0K      0B   100%    /dev
dozer/data            1.8T     62G    1.7T     3%    /data
dozer/home            1.7T    9.6G    1.7T     1%    /home
dozer/home/walterp    1.9T    220G    1.7T    11%    /home/walterp
tank/tmp              352G    128K    352G     0%    /tmp
tank/usr              356G    4.4G    352G     1%    /usr
tank/var              354G    2.2G    352G     1%    /var

성능면에서 파일 복사는 정말 빠릅니다. 내가 주목할 한 가지는 3-4GB의 FreeBSD AMD64 시스템에서 ZFS를 사용하고 있으며 잘 작동했지만 2GB가있는 i386 시스템에서 실행하는 것에 대해 걱정할 것입니다. 적은 메모리.

마더 보드의 SATA 포트가 부족하여 새 드라이브를 추가하지 않았습니다. 초기 설정은 간단했습니다. RAIDZ를 만드는 명령과 초 단위 (IIRC) 형식의 / home을 만드는 명령입니다. 나는 여전히 이전 버전의 ZFS (v6)를 사용하고 있으므로 약간의 제한이 있습니다 (동일한 크기의 드라이브가 필요하지 않지만 Drobo와 달리 3750GB 드라이브와 1TB 드라이브가있는 경우 최종 결과 4 개의 750GB 드라이브가있는 것처럼됩니다.

RAIDZ와 함께 ZFS를 사용하는 가장 큰 이유 중 하나는 종단 간 체크섬이었습니다. CERN은 몇 주 동안 R / W 테스트를 실행하는 동안 200 개 이상의 수정되지 않은 읽기 오류를 발견 한 테스트를 문서화 한 논문을 발표했습니다 (소매 드라이브의 ECC는 12TB 읽기마다 한 번씩 오류가 발생 함). 서버의 데이터가 정확하기를 원합니다. 정전 (공간 히터를 꽂아 UPS에 과부하가 걸렸음)으로 인해 심각한 충돌이 발생했지만 시스템이 다시 작동 할 수있게되면 표준 fsck 문제없이 ZFS가 빠르게 돌아 왔습니다.

인쇄 서버를 얻기 위해 CUPS를 Samba에 추가 할 수 있기 때문에 마음에 듭니다. DNS 캐시를 추가하고 원하는대로 다른 소프트웨어를 추가 할 수 있습니다 (대역폭 사용을 측정하기 위해 집의 데스크탑에 SNMP 모니터링을 추가 할 생각입니다). 내가 시스템에서 보낸 것에 대해, 싼 NAS 박스를 구입할 수 있다고 확신하지만 64 비트 로컬 유닉스 박스를 가지고 있지 않을 것입니다. FreeBSD가 마음에 드시면 그대로 가십시오. Linux를 선호한다면 Linux 솔루션을 추천합니다. 관리를 원하지 않으면 독립형 NAS 상자를 사용하십시오.

다음 하드웨어 업그레이드에서는 하드웨어를 업그레이드 한 다음 ZFS v13이있는 현재 버전의 FreeBSD를 설치할 계획입니다. ZIL 로그에 사용할 수있는 배터리 백업 RAM 디스크가있어 V13이 멋지다 (쓰기가 비명을 지른다). 또한 파일 서버 속도를 높이기 위해 SSD를 사용할 수 있도록 지원합니다 (새로운 Sun File Server의 사양은 좋지 않으며 SSD를 사용하여 시스템을 매우 빠르게 만드는 ZFS 시스템에서 가져옵니다).

편집 : (아직 의견을 남길 수 없음). 나는 http://www.ish.com.au/solutions/articles/freebsdzfs 의 지침을 거의 따랐다 . 이러한 지침이 작성된 이후 7.X에 존재하는 주요 변경 사항 중 하나는 7.2가 나오고 2GB 이상인 경우 /boot/loader.conf에 다음 세 줄을 추가하지 않아도됩니다.

vm.kmem_size_max="1024M"
vm.kmem_size="1024M"  
vfs.zfs.arc_max="100M"

또한 미러를 만드는 방법과 시스템을 복구 모드 (ZFS로 마운트)로 되 돌리는 방법도 설명합니다. 한 번 또는 두 번 지시 사항을 수행 한 후 Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf 의 ZFS 관리 설명서를 사용하여 ZFS가 무엇인지 더 잘 이해했습니다. 데이터 저장소를 생성하기 위해 ZFS 풀을 생성하기 위해 수정 된 버전의 명령을 사용했습니다. 이것은 FreeBSD이므로 약간 변경해야했습니다.

zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10

dmesggrep 'ata. * master'를 수행하여 ad4-ad10이있는 경우, 이는 빅 데이터 파티션에 사용될 시스템의 SATA 하드 드라이브 이름입니다. 내 마더 보드에는 4 개의 PATA 포트가있는 첫 번째 3 개의 ata 포트 (ad0-3)가 있으며 각 SATA 포트는 마스터이므로 이전 번호가 없습니다.

파일 시스템을 만들려면 방금 수행했습니다.

zfs create dozer/data
zfs set mountpoint=/data dozer/tank

두 번째 명령은 공유에 대한 기본 마운트 지점을 해제했기 때문에 필요합니다.


우연히 당신이 한 모든 일에 대한 메모가 있습니까? 그리고 기꺼이 게시 하시겠습니까? :)
슬픔

FreeNAS + ZFS에 대한 훌륭한 게시물. 나는 이것에 대해 궁금했다. 정보 주셔서 감사합니다!
osij2

11

소개 : 드디어 내 시스템을 구축했으며 다른 사람을 도울 수 있도록 여기에 메모가 있습니다.

목표 :

  • 내 소스 제어 및 내부 웹 서버로도 사용할 수있는 홈 NAS 박스를 구축하십시오.
  • 비용을 $ 1000 미만으로 유지

명세서:

  • 1TB 이상의 스토리지가 있어야합니다
  • 데이터 중복성이 있어야합니다 (RAID 또는 이와 유사한 것)
  • 현재 노화 소스 코드 제어 서버를 교체 할 수 있어야합니다.

디자인:

  • FreeBSD 7.2 (최종 8.0으로 업그레이드)
  • OS는 자체 부팅 드라이브 (이 경우 하나의 IDE 드라이브)에 있습니다.
  • 데이터는 6 개의 SATA 드라이브에 저장됩니다.

우리는 ZFS를 파일 시스템으로 사용합니다. ZFS는 64 비트 OS를 실행하고 많은 메모리를 좋아하므로 최소 4Gb를 가져와야합니다.

하드웨어:

소프트웨어 : FreeBSD 7.2-1 @ $ 0.00 http://www.freebsd.org/

총 비용 : $ 874.81

하드웨어 설정 : 세 가지 사소한 문제가있는 기본 컴퓨터 빌드.

  1. 내가 구입 한 케이스에는 6 개의 하드 드라이브 용 슬롯과 2 개의 3.5 베이가있었습니다. IDE가 3.5 베이 중 하나에 맞을 수 있다고 가정했습니다. 이것은 나쁜 가정이었고 그것을 작동시킬 합리적인 방법이 없었습니다. 나는 ~ $ 17.00에 Fry 's에서 어댑터를 사서 잘 작동했습니다.

  2. 내가 구입 한 Sata 케이블에는 90도 커넥터가있어 6 개의 드라이브를 제외하고는 작업을 수행 할 수있는 방법이 없었습니다. 하나의 케이블을 연결하면 커넥터의 유연하지 않은 부분이 다음 하드 드라이브에 걸려 있습니다. Fry 's와 5 개의 일반 SATA 케이블을 사용해야했습니다. 슬프게도 Newegg에서 구입 한 제품은 너무 저렴하여 다시 보낼 가치가 없습니다.

  3. 케이스는 하드 드라이브의 후면이 케이스 측면을 가리키고 전원 공급 장치의 전원 케이블에는 케이스의 가장자리에 뻣뻣한 커넥터가 있습니다. 이렇게하면 측면 덮개를 다시 제자리로 밀어 넣을 수 없었습니다. 나는 그것을 작동시키기 위해 약간의 노력을 기울여야했고 결국에는 두 개의 모듈 식 전원 케이블 (각각 4 개의 SATA 플러그가 있음)이 드라이브 사이에 끼워 져서 첫 번째 케이블로 구동되는 드라이브 0, 2와 4, 그리고 두 번째 전원은 1, 3, 5입니다. 이것은 내가 그들을 묶을 수있는 충분한 유연성을 허용했습니다.

OS 설정 :

  1. FreeBSD 7.2 ISO를 CD로 레코딩했습니다. 나는 단일 DVD를 사용할 수 있었지만 거짓말을하지 않았습니다.

  2. memtest86 + ( http://www.memtest.org/ )를 CD에 레코딩했습니다 .

  3. 새로 만든 컴퓨터의 전원을 켜고 BIOS로 들어가 7 개의 드라이브와 DVD-ROM을 모두 보았습니다. 그게했다. CDROM을 먼저 만들기 위해 부팅 순서를 변경했습니다.

  4. 새로 빌드 한 컴퓨터에 memtest86 + CD를 넣고 재부팅 한 후 밤새 실행되도록했습니다. 오류없이 전달되었습니다.

  5. FreeBSD 7.2를 설치했습니다. 만약 이것에 익숙하지 않다면 다음을 읽는 것이 좋습니다 : http://www.freebsd.org/doc/en/books/handbook/install.html 나보다 무엇을해야하는지 설명하는 것이 훨씬 더 좋습니다. 할 수있다. 내 특정 설정은 다음과 같습니다.

    • 표준 설치를 했습니까
    • OS에 전체 IDE 드라이브 사용
      • 기본 파일 시스템 레이아웃을 사용했습니다.
      • 6 개의 SATA 드라이브를 그대로 두십시오
    • 박스가 없기 때문에 X-Windows없이 개발자 설치
    • 시스템이 NFS 클라이언트 또는 서버가 아님
    • FTP 및 inetd 비활성화
    • SSH 허용
    • 패키지를 추가하지 않았습니다 (나중에 추가 될 패키지).
    • 한 명의 사용자 추가
  6. 설치 및 재부팅 후 6 개의 SATA 드라이브 중 4 개만 감지 된 것으로 나타났습니다. BIOS로 이동하여 Under Integrated Peripherals에서 OnChip SATA Type을 AHCI로 변경하고 OnChip SATA 포트 4/5 Type을 "SATA"로 변경 설정을 저장하고 재부팅했습니다.

  7. 이 시점에서 FreeBSD는 6 개의 드라이브를 모두 다음과 같이 감지했습니다. ad4 ad6 ad8 ad10 ad12 ad14

  8. csup을 사용하여 cvs에서 최신 정보를 얻으십시오. csup -g -L 2 stable-supfile 이미 호스트를 사용하도록 파일을 편집했습니다 : cvsup11.us.FreeBSD.org 다른 모든 정보는 그대로 둡니다.

  9. http://www.freebsd.org/doc/en/books/handbook/makeworld.html 내 커널 사용자 정의 (ZFSNAS 참조)에 설명 된대로 최신 커널과 세계를 다시 빌드하고 설치했습니다 . SCSI, USB, PCMCIA, Serial, Parallel 등을 사용할 계획이 없기 때문에 많은 장치를 비활성화했습니다. /etc/make.conf에 다음을 추가했습니다. CPUTYPE = athlon64 CFLAGS = -O2 -fno-strict-aliasing -pipe make -j8 빌드 월드

NAS 설정 :

  1. 스토리지 용 ZFS 풀 생성 : zpool 스토리지 생성 raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. 새로 작성된 스토리지에 홈 파일 시스템을 작성하십시오.

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. /etc.rc/conf를 편집하고 다음을 추가하십시오.

    zfs_enable="YES"
    

    부팅시 ZFS 파일 시스템을 마운트합니다.

  4. 루트, 삼바 및 퍼 포스 디렉토리 생성

    zfs create storage/root
    cp -rp /root/* storage/root
    rm -rf /root 
    zfs set mountpoint=/root storage/root
    zfs create storage/fileshare
    zfs create storage/perforce
    

    풀에 더 많은 파일 시스템이 필요하지 않으면 ZFS 부분을 거의 수행하게됩니다. 자세한 내용은 다음을 참조하십시오. http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

설치된 포트 :

/usr/ports/shells/bash
    make install
/usr/ports/editors/vim
    make install
/usr/ports/net/samba33
    make
    make install
    // Use all defaults un-check cups.
/usr/ports/devel/perforce
    make
    make install PERFORCE_PORT=XXXX PERFORCE_USER=p4user PERFORCE_GROUP=p4
    rm -rf /usr/local/perforce
    cd /storage/perforce/
    mkdir root
    mkdir log
    chown p4user:p4user *
    cd /storage
    chown p4user:p4user perforce 

Edited /usr/local/etc/perforce.conf as follows:
    #
    # Perforce FreeBSD configuration file
    #
    #
    # $FreeBSD: ports/devel/perforce/files/perforce.conf.in,v 1.3 2005/01/18 15:43:36 lth Exp $

    #
    # Perforce ROOT
    #
    PERFORCE_ROOT="/storage/perforce/root"

    #
    # Perforce user (it is recommended to run p4d as a non-root user)
    #
    PERFORCE_USER="p4user"

    #
    # p4d/p4p port (default: 1666)
    #
    PERFORCE_PORT="XXXX"

    #
    # p4p cache directory
    #
    PERFORCE_PROXY_CACHE="/usr/local/perforce/cache"

    #
    # p4p target server (default: perforce:1666)
    #
    PERFORCE_PROXY_TARGET="perforce:1666"

    #
    # p4d options (see man p4d)
    #
    PERFORCE_OPTIONS="-d -p $PERFORCE_PORT -v server=1 -L /storage/perforce/logs/p4d.log"

    #
    # Uncomment this line to have the server started automatically
    #
    PERFORCE_START=yes

추가 된 사용자 :

user1
user2

생성 된 그룹 :

sambashare
    Added user1 and user2 as members

chgrp sambashare /storage/fileshare
chmod 775 /storage/fileshare
chmod g+s /storage/fileshare

삼바 구성 :

Samba configuration file:
#################
    [global]
       workgroup = USERLAN
       server string = ZFS NAS
       security = user
       hosts allow = 192.168.1. 127.
       log file = /usr/local/samba/var/log.%m
       max log size = 50
       passdb backend = tdbsam
       dns proxy = no

    [user1share]
       comment = user1 share
       path = /storage/fileshare
       valid users = user1 user2
       public = no
       writable = yes
       printable = no
       create mask = 0765
#################

pdbedit -a -u user1 
    # followed prompts
pdbedit -a -u user2 
    # followed prompts

환상적인 답변! 공감 ... 확인!
Mei

5
  • ZFS에서 부팅 할 수 있습니까? (내가 원 할까?)

나는 당신이 원하는 이유를 알지 못합니다. 스냅 샷 지원은 OpenSolaris에서만 충분히 성숙하여 이전 버전으로 다시 전환하고 부팅 할 수 있습니다 (실제로는 야생 추측).

  • 드라이브를 추가하는 것이 얼마나 쉬운가요?

스트라이프 풀을 확장 할 때처럼 추가 하시겠습니까? 풀에 드라이브를 추가하기 만하면됩니다. 다음 질문의 의미를 생각해보십시오.

  • 크기가 다른 드라이브를 얼마나 잘 처리합니까?

이것을 스트라이프로 사용하고 파일의 사본을 n 개 유지하도록 ZFS에 지시 할 수 있습니다. 따라서 보유한 전체 스토리지 가용성을 사용하면서도 여전히 충분한 중복성을 얻을 수 있습니다.

  • 새 드라이브를 즉석에서 (또는 최소한 재부팅만으로) 추가 할 수 있습니까?

스토리지 풀에서 장치 교체 이것이 권장되는 솔루션이라고 생각합니다. FreeBSD에서 이것이 얼마나 잘 작동하는지 알아내는 가장 쉬운 방법은 아마도 시험해 보는 것입니다.

  • 선반 밖에서 더 나은 서비스를 제공받을 수 있습니까?

당신이 생각 해 봤나 FreeNAS에서 (로드맵) 0.70이 출시되기 직전에 보인다 ZFS를 지원합니다.

모든 프레임 워크의 번거 로움을 덜어주고 GUI를 무료로 사용하는 것이 비교적 좋습니다.


FreeNAS 0.7RC1을 사용하고 있으며 ZFS로 설정하기가 매우 쉬웠습니다.
Joseph

3

프로덕션 환경이 아닌 FreeBSD + ZFS (7.2-STABLE 및 8.0-CURRENT)가있는 서버가 있습니다.

ZFS에서 부팅하는 방법은 http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/에 설명되어 있습니다.

"zpool add mypool da7"을 입력하는 것만 큼 간단하게 드라이브를 추가 할 수 있으며, 그 직후 새 드라이브를 사용할 수 있습니다. 또한 스트라이프, 미러, raidz (향상된 raid-5) 또는 raidz2 (향상된 raid-6)에 드라이브를 모두 추가 할 수 있습니다.

크기가 다른 드라이브는 풀에 배치 할 수 있지만 미러 / 스트라이프 / 공격에는 사용할 수 없습니다 (정확하게 리콜하면 가장 작은 HDD 공간 만 사용할 수 있음)

솔라리스는 ZFS를 즉시 지원합니다



당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.