เนื่องจากมีความต้องการเก็บข้อมูลบางอย่างให้อยู่กับเราตลอดไป ไม่ว่าเป็นไฟล์รูปภาพ วีดีโอ เอกสารต่างๆ ครั้นจะไปเช่า dropbox หรือยัดทั้งหมดลงใน google drive ก็ลำบากและช้าเกินไป จึงได้คิดที่จะทำ NAS ส่วนตัวขึ้นมา ซึ่งที่บ้านผมเองนั้นก็มีคอมพิวเตอร์เหลือใช้หลายเครื่อง จะไปซื้อ Box สำเร็จรูปมาใช้มันก็เสียดาย ทำมันซะเองก็สิ้นเรื่อง จะใส่กี่ลูกก็ใส่ไป ทีนี้ขั้นตอนต่อไปหลังจากที่มีเครื่องมี HDD พร้อมแล้ว ก็ต้องมาเลือกว่าจะใช้ Filesystem อะไรทำ NAS ทางเลือกมีอยู่เยอะแยะมาก ไม่ว่าจะเป็น NTFS, EXT, ZFS ที่นี้ลองดูขอดีของแต่ละ filesystem เทียบกันแล้ว ไม่มีอะไรสู้ ZFS ได้เลย

ZFS

ถูกพัฒนาขึ้นโดย Sun โดยเป็นทั้ง  filesystem และ logical volume manager ในตัวโดยสามารถมีขนาดได้ถึง 16 Exabyte ความสามารถเด่นๆ ก็จะมีการป้องกัน data corrupt การทำ snapshot copy-on-write clone dedup automatic repair cache/log device ซึ่ง Sun ก็ได้เปิดเผย source code ของ zfs นี้ด้วยพร้อมกับ OpenSolaris ทำให้ zfs ถูก port ไปยัง os อื่นๆ ไม่ว่าจะเป็น FreeBSD หรือ Linux ก็ตาม

FreeBSD 9.1

ZFS ถูก port ลงใน freebsd มาค่อนข้างนานแล้วจนในปัจจุบันก็มีการนำ FreeBSD ไปทำเป็น ZFS storage อยู่หลายเจ้า ไม่ว่าจะเป็น FreeNAS หรือ ZFSGuru

ผมเองโดยส่วนตัวก็ค่อนข้างชอบ FreeBSD เนื่องจากมันไม่เหมือนใครดี ทีนี้เราจะมาลองทำ ZFS NAS บน FreeBSD แบบดิบๆกัน ซึ่งก็ไม่ได้ต่างจาก os อื่นๆมากนัก หลังจากสร้าง zpool แล้วเราก็จะทำการ export zfs ของเราออกไป ด้วย samba ซึ่งจะต้องติดตั้งเองต่างหาก ไม่ได้มีมาให้เหมือนใน solaris หลังจากทำการติดตั้งและทดสอบแล้วก็พบว่า transfer rate ของ cifs (samba) อยู่ที่ไม่เกิน 35 MB/s เท่านั้น ผมจึงเลือกที่จะไปลองบน OmniOS เป็นตัวถัดไป

OmniOS

เป็นญาติของ Solaris ต้นกำเนิดมาจาก OpenSolaris -> Illumos -> OmniOS เนื่องจาก illumos ไม่มี build สำเร็จรูป ผมเลยต้องมาใช้ omnios แทน เนื่องจากผมได้สละ hdd แล้วทำ zpool ไปแล้ว แถมยังโอนถ่ายข้อมูลไปแล้วบางส่วน ผมจึงไม่อยากสร้าง zpool ใหม่ จึงใช้การ import zpool เดิมแทน  หลังจาก export cifs เรียบร้อย แล้วลองทำการทดสอบถ่ายโอนไฟล์ ผลที่ได้นั้นดีกว่า FreeBSD 2 เท่า ประมาณ 60-70 MB/s แต่พบกว่า SYS cpu ค่อนข้างสูงจึงได้ลองปรับค่าใน bios มั่วๆ จำพวก c state ต่างๆให้ off ไปให้หมด ก็ทำให้ SYS เหลือ 0 ได้

Linux

สุดท้ายกลายเป็นว่าย้ายจาก OmniOS ไป OpenSolaris แล้วก็ย้ายไปที่ Centos 6 ลง ZFS on linux

ซึ่งก็ใช้งานได้ดีครับ ไม่มีปัญหาอะไร ความเร็วใช้ได้เลย แล้วผมก็เพิ่ม mirror drive เข้าไปใน pool storage

[root@zfsbox ~]# zpool status
pool: storage
state: ONLINE
status: One or more devices is currently being resilvered.  The pool will
continue to function, possibly in a degraded state.
action: Wait for the resilver to complete.
scan: resilver in progress since Sat Nov 22 21:01:06 2014
641G scanned out of 894G at 64.3M/s, 1h7m to go
641G resilvered, 71.73% done
config:

NAME                                            STATE     READ WRITE CKSUM
storage                                         ONLINE       0     0     0
mirror-0                                      ONLINE       0     0     0
ata-WDC_WD10EZEX-00BN5A0_WD-WMC3F0925331    ONLINE       0     0     0
ata-Hitachi_HDS721010CLA630_JPS930N11MUAEV  ONLINE       0     0     0  (resilvering)