Rekomendasi tentang ZFS pada FreeBSD sebagai kotak NAS?

9

Harap dicatat bahwa jawaban pada halaman ini berasal dari tahun 2009, dan tidak dapat diandalkan sebagai Injil. Jika Anda memiliki pertanyaan spesifik tentang silakan klik tombol Ajukan Pertanyaan dan ajukan pertanyaan tertentu.

Saya sedang berpikir untuk membangun sistem cadangan rumah menggunakan FreeBSD 7.2 dan sistem file ZFS. Adakah yang punya pengalaman dengan sistem file itu?

Secara khusus:

  • Apakah mungkin untuk boot dari ZFS? (Apakah saya mau?)
  • Seberapa mudah untuk menambahkan drive?
  • Seberapa baik ia menangani drive dengan ukuran berbeda?
  • Bisakah Anda menambahkan drive baru dengan cepat (atau setidaknya hanya dengan reboot)?
  • Apakah saya akan lebih baik dilayani oleh sesuatu dari rak?

Setiap pemikiran dan saran lainnya akan diterima.

Edit:

Untuk lebih jelasnya saya telah membaca halaman FreeBSD di ZFS . Saya mencari saran dari orang-orang dengan pengalaman praktis dengan pengaturan yang mirip dengan yang saya inginkan.

bersedih hati
sumber

Jawaban:

13

Saya membangun server file FreeBSD di rumah menggunakan ZFS.

Ini adalah AMD X2 3200+ dengan 3GB RAM. Ini memiliki PCI Express Gig-E. Boot drive adalah 400GB tua dan saya punya 4 750GB Seagte drive (satu dengan versi firmware yang berbeda, untuk berjaga-jaga).

Booting dari ZFS akan lebih baik (itu akan membuat instal lebih sederhana), tapi saya menggunakan petunjuk ZFSOnRoot untuk mengatur drive Root / OS dengan ZFS (jika semua partisi adalah ZFS, maka tidak perlu melakukan fsck saat boot untuk memeriksa sistem file UFS). Alasan Anda menginginkan ini sehingga Anda dapat mengatur semua partisi Anda (/ var, / usr, / tmp, dll.) Dengan opsi yang berbeda seperti yang diperlukan (seperti noatime dan async untuk / usr / obj, yang akan mempercepat kernel kompilasi), tetapi mereka semua akan berbagi ruang dari kolam bersama. Kemudian Anda dapat mengatur drive data dan memberikan masing-masing pengguna partisi sendiri (dengan kutipan dan pengaturan yang berbeda). Anda kemudian dapat mengambil snapshot (yang berbiaya rendah di 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

Dari segi kinerja, menyalin file sangat cepat. Satu hal yang saya perhatikan adalah bahwa saya telah menggunakan ZFS pada sistem AMDBS FreeBSD yang memiliki 3-4GB dan telah bekerja dengan baik, tetapi dari bacaan saya, saya akan khawatir menjalankannya pada sistem i386 yang memiliki 2GB atau lebih sedikit memori.

Saya kehabisan port SATA pada motherboard, jadi saya belum mencoba menambahkan drive baru. Pengaturan awal sederhana, perintah untuk membuat RAIDZ dan kemudian perintah untuk membuat / rumah, yang diformat dalam hitungan detik (IIRC). Saya masih menggunakan versi ZFS (v6) yang lebih lama, jadi ia memiliki beberapa keterbatasan (Tidak memerlukan drive dengan ukuran yang sama, tetapi tidak seperti Drobo, jika Anda memiliki 3 750GB drive dan 1TB drive, hasil akhirnya akan seperti jika Anda memiliki 4 750GB drive).

Salah satu alasan utama saya menggunakan ZFS dengan RAIDZ adalah checksum end-to-end. CERN menerbitkan sebuah makalah yang mendokumentasikan tes yang mereka lakukan di mana mereka menemukan 200+ kesalahan pembacaan yang tidak dikoreksi saat menjalankan tes R / W selama beberapa minggu (ECC dalam drive ritel diperkirakan mengalami kegagalan setiap 12TB dibaca). Saya ingin data di server saya benar. Saya mengalami crash keras karena pemadaman listrik (seseorang membebani UPS dengan memasang pemanas ruangan), tetapi ketika sistem dapat kembali, ZFS kembali dengan cepat, tanpa masalah fsck standar.

Saya menyukainya, karena saya kemudian dapat menambahkan CUPS ke Samba untuk mendapatkan server cetak. Saya menambahkan cache DNS dan dapat menambahkan perangkat lunak lain yang saya suka (Saya sedang berpikir tentang menambahkan pemantauan SNMP ke desktop di rumah saya untuk mengukur penggunaan bandwidth). Untuk apa yang saya habiskan di sistem, saya yakin saya bisa membeli kotak NAS murah, tapi kemudian saya tidak akan memiliki kotak Unix lokal 64-bit untuk dimainkan. Jika Anda suka FreeBSD saya akan mengatakan pergi dengannya. Jika Anda lebih suka Linux, maka saya akan merekomendasikan solusi Linux. Jika Anda tidak ingin melakukan administrasi, saat itulah saya akan pergi untuk kotak NAS yang berdiri sendiri.

Pada putaran berikutnya dari peningkatan perangkat keras, saya berencana untuk meningkatkan perangkat keras dan kemudian menginstal versi FreeBSD saat ini, yang memiliki ZFS v13. V13 keren karena saya memiliki baterai yang didukung RAM disk yang dapat saya gunakan untuk ZIL log (ini membuat menulis jeritan). Ini juga memiliki dukungan untuk menggunakan SSD untuk mempercepat file server (spesifikasi pada Server File Sun baru manis, dan mereka mendapatkannya dari sistem ZFS yang menggunakan SSD untuk membuat sistem sangat cepat).

EDIT: (Belum dapat meninggalkan komentar). Saya cukup banyak mengikuti instruksi di http://www.ish.com.au/solutions/articles/freebsdzfs . Satu perubahan besar yang ada di 7.X sejak instruksi tersebut ditulis adalah 7.2 keluar dan jika Anda memiliki 2+ GB, Anda tidak perlu menambahkan tiga baris berikut di /boot/loader.conf:

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

Instruksi juga menjelaskan cara membuat cermin dan cara mengembalikan sistem ke mode pemulihan (mount dengan ZFS). Setelah bermain dengan instruksinya sekali atau dua kali, saya kemudian menggunakan manual ZFS Admin dari Sun http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf untuk lebih memahami apa itu ZFS. Untuk membuat penyimpanan data, saya menggunakan versi modifikasi dari perintah pada Halaman 91 untuk membuat kumpulan ZFS. Ini FreeBSD, saya harus membuat perubahan kecil:

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

Di mana ad4-ad10 di mana ditemukan dengan melakukan dmesg | grep 'ata. * Master', ini adalah nama-nama hard drive SATA pada sistem yang akan digunakan untuk partisi big data. Pada motherboard saya, tiga ata port pertama (ad0-3) di mana 4 port PATA dan kemudian karena masing-masing port SATA adalah master, tidak ada angka lama.

Untuk membuat sistem file, saya baru saja melakukannya:

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

Perintah kedua diperlukan karena saya mematikan mountpoints default untuk share.

Walter
sumber
Apakah Anda kebetulan memiliki catatan tentang semua yang Anda lakukan? Dan apakah Anda bersedia mempostingnya? :)
berduka
Pos bagus di FreeNAS + ZFS. Saya ingin tahu tentang ini sendiri. Terima kasih atas info Anda!
osij2is
11

Pendahuluan: Saya akhirnya membangun sistem saya, dan inilah catatan saya, kalau-kalau itu membantu orang lain.

Tujuan:

  • Membangun kotak NAS rumah yang juga dapat berfungsi ganda sebagai kontrol sumber dan server web internal saya.
  • Simpan biayanya di bawah $ 1000

Spesifikasi:

  • Harus memiliki setidaknya satu terabyte penyimpanan
  • Harus memiliki redundansi data (RAID atau yang serupa)
  • Harus dapat mengganti server kontrol kode sumber penuaan saya saat ini

Rancangan:

  • FreeBSD 7.2 (akhirnya ditingkatkan menjadi 8.0).
  • OS ada di boot drive sendiri, dalam hal ini satu drive IDE
  • Data disimpan di enam drive SATA.

Kami menggunakan ZFS sebagai sistem file, karena telah mendapatkan ulasan yang menguntungkan. ZFS cukup banyak mengharuskan kita menjalankan OS 64 bit, dan suka banyak memori, jadi saya harus mendapatkan minimum 4Gb

Perangkat keras:

Perangkat Lunak: FreeBSD 7.2 - 1 @ $ 0,00 http://www.freebsd.org/

Total Biaya: $ 874,81

Pengaturan Perangkat Keras: Pembuatan komputer dasar, dengan tiga masalah kecil.

  1. Kasing yang saya beli memiliki slot untuk 6 hard drive, dan dua bay 3,5. Saya berasumsi IDE bisa masuk dalam salah satu dari 3,5 bay. Ini adalah asumsi yang buruk, dan tidak ada cara yang masuk akal untuk membuatnya bekerja. Saya pergi dan membeli adaptor di Fry's untuk ~ $ 17,00, dan itu berfungsi dengan baik.

  2. Kabel Sata yang saya beli memiliki konektor 90 derajat, yang bagus, kecuali dengan enam drive, tidak ada cara untuk membuat pekerjaan. Memasukkan satu kabel menyebabkan bagian konektor yang tidak fleksibel menggantung di hard drive berikutnya. Saya harus pergi ke Fry dan 5 kabel SATA biasa. Sayangnya yang saya beli di Newegg sangat murah, sehingga tidak layak mengirim mereka kembali.

  3. Kasing menunjukkan bagian belakang hard drive ke sisi kasing, dan kabel daya dari catu daya memiliki konektor kaku yang menjulur ke tepi kasing. Ini tidak memungkinkan saya untuk menggeser penutup samping kembali ke tempatnya. Saya harus bermain-main dengannya sedikit untuk membuatnya bekerja, dan akhirnya berakhir dengan dua kabel daya modular (mereka memiliki empat colokan SATA pada masing-masing) disisipkan di antara drive, sehingga kabel pertama bertenaga drive 0, 2, dan 4, dan yang kedua bertenaga 1, 3, dan 5. Ini memungkinkan cukup fleksibel sehingga saya bisa mengikat mereka.

Pengaturan OS:

  1. Membakar FreeBSD 7.2 ISO ke CD. Saya bisa menggunakan DVD tunggal, tapi saya tidak punya tempat tidur.

  2. Memtest86 + ( http://www.memtest.org/ ) yang dibakar ke CD.

  3. Didukung komputer yang baru dibangun, dan masuk ke bios untuk memastikan ia melihat semua 7 drive dan DVD-ROM. Itu benar. Mengubah urutan boot untuk membuat CDROM menjadi yang pertama.

  4. Masukkan CD memtest86 + ke komputer yang baru dibangun, reboot, dan biarkan beroperasi pada malam hari. Lulus tanpa kesalahan.

  5. Terpasang FreeBSD 7.2, jika Anda tidak terbiasa dengan ini, saya sarankan membaca yang berikut ini: http://www.freebsd.org/doc/en/books/handbook/install.html Ia melakukan pekerjaan yang jauh lebih baik untuk menjelaskan apa yang harus dilakukan daripada saya bisa. Ini adalah pengaturan spesifik saya:

    • Apakah menginstal standar
    • Menggunakan seluruh drive IDE untuk OS
      • menggunakan tata letak sistem file default
      • membiarkan 6 drive SATA tidak tersentuh
    • Pengembang memasang tanpa X-Windows, karena kotak itu akan tanpa kepala
    • Sistem ini bukan NFS Client atau Server
    • FTP dan inetd dinonaktifkan
    • SSH diizinkan
    • Menambahkan tidak ada paket (itu akan ditambahkan nanti).
    • Menambahkan satu pengguna
  6. Setelah menginstal dan reboot saya perhatikan bahwa hanya 4 dari 6 drive SATA yang terdeteksi. Saya masuk ke BIOS dan Di Bawah Periferal Terpadu mengubah OnChip SATA Type menjadi AHCI, dan OnChip SATA port 4/5 Ketik menjadi "SATA" Simpan pengaturan dan reboot.

  7. Pada titik ini FreeBSD mendeteksi semua enam drive sebagai: ad4 ad6 ad8 ad10 ad12 ad14

  8. Dapatkan yang terbaru dari cvs menggunakan csup: csup -g -L 2 stable-supfile Saya sudah mengedit file untuk menggunakan host: cvsup11.us.FreeBSD.org meninggalkan semua informasi lain apa adanya.

  9. Bangun kembali dan pasang kernel dan dunia terbaru seperti yang dijelaskan di sini: http://www.freebsd.org/doc/en/books/handbook/makeworld.html Menyesuaikan kernel saya (lihat ZFSNAS). Saya menonaktifkan sejumlah besar perangkat, karena saya tidak pernah berencana menggunakan SCSI, USB, PCMCIA, Serial, Parallel, dll. Menambahkan yang berikut ke /etc/make.conf: CPUTYPE = athlon64 CFLAGS = -O2 -fno-strict-aliasing -pipa make -j8 buildworld

Pengaturan NAS:

  1. Buat kumpulan ZFS untuk penyimpanan kami: zpool buat penyimpanan raidz2 ad4 ad6 ad8 ad10 ad12 ad14

  2. Buat sistem file rumah di penyimpanan yang baru dibuat:

    zfs create storage/home
    cp -rp /home/* storage/home
    rm -rf /home /usr/home
    zfs set mountpoint=/home storage/home
    
  3. edit /etc.rc/conf dan tambahkan berikut ini:

    zfs_enable="YES"
    

    Ini memasang sistem file ZFS saat bootup.

  4. Membuat direktori root, samba, dan terpaksa

    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
    

    Kecuali jika Anda membutuhkan lebih banyak sistem file di pool Anda, Anda sudah cukup banyak selesai dengan bagian ZFS. Lihat yang berikut untuk detail lebih lanjut: http://www.freebsd.org/doc/en/books/handbook/filesystems-zfs.html http://opensolaris.org/os/community/zfs/docs/zfsadmin.pdf

Port terpasang:

/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

Pengguna Ditambahkan:

user1
user2

Grup dibuat:

sambashare
    Added user1 and user2 as members

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

Konfigurasi Samba:

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
bersedih hati
sumber
Jawaban yang fantastis! Suara positif ... periksa!
Mei
5
  • Apakah mungkin untuk boot dari ZFS? (Apakah saya mau?)

Saya tidak melihat alasan mengapa Anda ingin, saya pikir dukungan Snapshot hanya cukup matang di OpenSolaris sehingga Anda dapat beralih kembali ke versi yang lebih lama dan boot itu (tapi itu sebenarnya hanya tebakan liar).

  • Seberapa mudah untuk menambahkan drive?

Tambahkan dalam memperluas kolam bergaris? Cukup tambahkan drive ke kolam, itu saja. Pertimbangkan implikasi pertanyaan Anda selanjutnya.

  • Seberapa baik ia menangani drive dengan ukuran berbeda?

Anda dapat menggunakannya sebagai strip dan memberi tahu ZFS untuk menyimpan n salinan file. Jadi Anda bisa menggunakan ketersediaan penyimpanan penuh yang Anda miliki dan masih mendapatkan redundansi yang layak

  • Bisakah Anda menambahkan drive baru dengan cepat (atau setidaknya hanya dengan reboot)?

Mengganti Perangkat di Penyimpanan Storage Saya kira ini adalah solusi yang disarankan, cara termudah untuk mengetahui seberapa baik ini bekerja pada FreeBSD mungkin untuk mencobanya.

  • Apakah saya akan lebih baik dilayani oleh sesuatu dari rak?

Sudahkah Anda mempertimbangkan FreeNAS (Roadmap) 0.70 tampaknya akan dirilis dan akan mendukung ZFS.

Anda akan menghemat kerumitan dari semua kerangka kerja dan mendapatkan yang relatif baik untuk menggunakan GUI secara gratis dengannya.

Martin M.
sumber
Saya menggunakan FreeNAS 0.7RC1, dan sangat mudah untuk melakukan setup dengan ZFS.
Joseph
3

Saya memiliki server dengan FreeBSD + ZFS (pada 7.2-STABLE dan 8.0-CURRENT), tidak dalam produksi kamu.

Booting dari ZFS dijelaskan di sini http://lulf.geeknest.org/blog/freebsd/Setting_up_a_zfs-only_system/

Menambahkan drive dengan cepat semudah mengetikkan "zpool add mypool da7", drive baru dapat digunakan setelah ini; Anda juga dapat menambahkan sejumlah drive dalam garis, cermin, raidz (peningkatan raid-5) atau raidz2 (peningkatan raid-6)

Drive dengan ukuran berbeda dapat ditempatkan di pool tetapi tidak dapat digunakan di mirror / stripe / raid (jika saya ingat dengan benar, hanya ruang hdd terkecil yang dapat digunakan)

(Buka) Solaris mendapat dukungan ZFS sejak awal

SaveTheRbtz
sumber
2

Ada utas bagus tentang membangun rumah ZFS NAS di ArsTechnica.

quux
sumber