ฉันสร้างเซิร์ฟเวอร์ไฟล์ FreeBSD ที่บ้านโดยใช้ ZFS
เป็น AMD X2 3200+ พร้อม RAM ขนาด 3GB มันมี PCI Express Gig-E ไดรฟ์สำหรับบู๊ตเป็น 400GB ตัวเก่าและฉันมีไดรฟ์ Seagte 4 750GB (หนึ่งตัวที่มีเฟิร์มแวร์รุ่นต่างกันในกรณีนี้)
การบูตจาก ZFS จะดีมาก (มันจะทำให้การติดตั้งง่ายขึ้น) แต่ฉันใช้คำสั่ง ZFSOnRoot เพื่อตั้งค่าไดรฟ์ Root / OS ด้วย ZFS (ถ้าพาร์ติชันทั้งหมดเป็น ZFS แล้วไม่จำเป็นต้องทำ fsck ตอนบูต เพื่อตรวจสอบระบบไฟล์ UFS) เหตุผลที่คุณต้องการให้คุณสามารถตั้งค่าพาร์ติชั่นทั้งหมดของคุณ (/ var, / usr, / tmp, ฯลฯ ) พร้อมตัวเลือกต่าง ๆ ตามต้องการ (เช่น noatime และ async สำหรับ / usr / obj ซึ่งจะเพิ่มความเร็วเคอร์เนล คอมไพล์) แต่พวกเขาทั้งหมดจะแบ่งปันพื้นที่จากกลุ่มทั่วไป จากนั้นคุณสามารถตั้งค่าไดรฟ์ข้อมูลและมอบพาร์ติชันของตนเองให้กับผู้ใช้แต่ละคน (ด้วยเครื่องหมายคำพูดและการตั้งค่าที่แตกต่างกัน) จากนั้นคุณสามารถถ่ายภาพสแนปชอต (ซึ่งมีต้นทุนต่ำใน 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
ประสิทธิภาพการทำงานที่ฉลาดการคัดลอกไฟล์นั้นรวดเร็วอย่างแท้จริง สิ่งหนึ่งที่ฉันจะทราบคือฉันใช้ ZFS บนระบบ FreeBSD AMD64 ที่มีขนาด 3-4GB และทำงานได้ดี แต่จากการอ่านของฉันฉันกังวลเกี่ยวกับการใช้งานบนระบบ i386 ที่มี 2GB หรือ หน่วยความจำน้อย
ฉันวิ่งออกจากพอร์ต SATA บนเมนบอร์ดดังนั้นฉันจึงไม่ได้พยายามเพิ่มไดรฟ์ใหม่ การตั้งค่าเริ่มต้นนั้นง่ายคำสั่งในการสร้าง RAIDZ จากนั้นคำสั่งเพื่อสร้าง / home ซึ่งจัดรูปแบบเป็นวินาที (IIRC) ฉันยังคงใช้ ZFS รุ่นเก่ากว่า (v6) ดังนั้นจึงมีข้อ จำกัด บางอย่าง (ไม่ต้องการไดรฟ์ที่มีขนาดเท่ากัน แต่ต่างจาก Drobo หากคุณมีไดรฟ์ 3 750GB และ 1TB ไดรฟ์ผลลัพธ์สุดท้าย จะเป็นถ้าคุณมี 4 750GB ไดรฟ์)
หนึ่งในเหตุผลสำคัญที่ฉันใช้ ZFS กับ RAIDZ คือการตรวจสอบจากต้นทางถึงปลายทาง เซิร์นเผยแพร่กระดาษที่บันทึกการทดสอบที่พวกเขาพบข้อผิดพลาดการอ่านที่ไม่ได้แก้ไขมากกว่า 200 ข้อในขณะที่รันการทดสอบ R / W ในช่วงสองสามสัปดาห์ (ECC ในไดรฟ์ขายปลีกคาดว่าจะมีความล้มเหลวทุกครั้งที่อ่าน ฉันต้องการให้ข้อมูลในเซิร์ฟเวอร์ของฉันถูกต้อง ฉันมีความผิดพลาดอย่างหนักเนื่องจากไฟฟ้าดับ (มีคนมากเกินไป UPS โดยเสียบเครื่องทำความร้อนพื้นที่) แต่เมื่อระบบสามารถสำรองได้ ZFS ก็กลับมาอย่างรวดเร็วโดยไม่มีปัญหา fsck มาตรฐาน
ฉันชอบเพราะฉันสามารถเพิ่ม CUPS ใน Samba เพื่อรับเซิร์ฟเวอร์การพิมพ์ ฉันเพิ่มแคช DNS และสามารถเพิ่มซอฟต์แวร์อื่น ๆ ได้ตามต้องการ (ฉันกำลังคิดที่จะเพิ่มการตรวจสอบ SNMP ไปยังเดสก์ท็อปที่บ้านของฉันเพื่อวัดการใช้แบนด์วิดท์) สำหรับสิ่งที่ฉันใช้ในระบบฉันแน่ใจว่าฉันสามารถซื้อกล่อง NAS ราคาถูกได้ แต่จากนั้นฉันก็จะไม่มีกล่อง Unix 64 บิตสำหรับเล่น ถ้าคุณชอบ FreeBSD ฉันจะบอกว่าไปกับมัน หากคุณต้องการ Linux ดังนั้นฉันขอแนะนำโซลูชัน Linux หากคุณไม่ต้องการที่จะบริหารใด ๆ นั่นคือเมื่อฉันจะไปสำหรับกล่อง NAS แบบสแตนด์อะโลน
ในการอัพเกรดฮาร์ดแวร์รอบต่อไปของฉันฉันวางแผนที่จะอัพเกรดฮาร์ดแวร์แล้วติดตั้ง FreeBSD เวอร์ชันปัจจุบันซึ่งมี ZFS v13 V13 เจ๋งเพราะฉันมีแบตเตอรีสำรอง RAM ที่ฉันสามารถใช้สำหรับบันทึก ZIL (ทำให้การเขียนกรีดร้อง) นอกจากนี้ยังมีการรองรับการใช้ SSD เพื่อเพิ่มความเร็วให้กับไฟล์เซิร์ฟเวอร์ (ข้อมูลจำเพาะของ Sun File Servers ใหม่นั้นน่ารักและได้มาจากระบบ ZFS ที่ใช้ SSD เพื่อทำให้ระบบรวดเร็วมาก)
แก้ไข: (ยังไม่สามารถแสดงความคิดเห็นได้) ผมสวยมากทำตามคำแนะนำที่http://www.ish.com.au/solutions/articles/freebsdzfs การเปลี่ยนแปลงที่สำคัญอย่างหนึ่งที่มีอยู่ใน 7.X นับตั้งแต่มีการเขียนคำแนะนำเหล่านั้นคือ 7.2 ออกมาและหากคุณมี 2+ GB คุณไม่ควรเพิ่มสามบรรทัดต่อไปนี้ใน /boot/loader.conf:
vm.kmem_size_max="1024M"
vm.kmem_size="1024M"
vfs.zfs.arc_max="100M"
คำแนะนำยังอธิบายถึงวิธีการสร้างมิเรอร์และวิธีการทำให้ระบบกลับสู่โหมดการกู้คืน (เมานต์ด้วย ZFS) หลังจากเล่นกับคำแนะนำของเขาหนึ่งหรือสองครั้งฉันก็ใช้คู่มือผู้ดูแลระบบ ZFS จากซันhttp://opensolaris.org/os/community/zfs/docs/zfsadmin.pdfเพื่อทำความเข้าใจว่า ZFS คืออะไร ในการสร้างที่เก็บข้อมูลของฉันฉันใช้เวอร์ชันที่แก้ไขแล้วของคำสั่งในหน้า 91 เพื่อสร้างพูล ZFS นี่คือ FreeBSD ฉันต้องทำการเปลี่ยนแปลงเล็กน้อย:
zpool create dozer raidz /dev/ad4 /dev/ad6 /dev/ad8 /dev/ad10
ที่ที่ ad4-ad10 พบได้โดยทำ dmesg | grep 'ata. * master' นี่คือชื่อของฮาร์ดไดรฟ์ SATA บนระบบที่จะใช้สำหรับพาร์ติชันข้อมูลขนาดใหญ่ บนเมนบอร์ดของฉันพอร์ต ata สามพอร์ตแรก (ad0-3) ที่พอร์ต PATA 4 พอร์ตและเนื่องจากพอร์ต SATA แต่ละพอร์ตเป็นพอร์ตหลักจึงไม่มีหมายเลขเก่า
เพื่อสร้างระบบไฟล์ฉันเพิ่งทำ:
zfs create dozer/data
zfs set mountpoint=/data dozer/tank
จำเป็นต้องใช้คำสั่งที่สองเนื่องจากฉันปิดจุดเมานต์เริ่มต้นสำหรับการแชร์