May 26, 2011

Network Storage แบบประหยัด ไม่ซับซ้อน ด้วย ATA over Ethernet

CableMess 
Fibre channel ยังเป็น Storage Technology ระดับ Enterprise พร้อมด้วยราคาระดับ Enterprise แต่เทคโนโลยียังก้าวเดินต่อไป ของใหม่ๆยังมีมาทดแทนเสมอ  แต่ว่าด้วยราคาแล้ว ยังมีทางเลือกอีกทางหนึ่งราคาถูกที่สามารถสร้าง Network Storage ได้ไม่ยุ่งยากซับซ้อน ในราคาย่อมเยา ทางเลือกที่ว่านี้คือ
ATA over Ethernet (AoE) ที่สามารถ Share storage ผ่าน network protocol ให้ได้ใช้กันภายในได้ เราสามารถตั้ง Test server เองได้ง่ายๆ โดยใช้ AoE

AoE เกิดมาจากบริษัทที่ชื่อ Coraid ในช่วง summer ปี 2004 หลังจากนั้นก็เข้ามาอยู่ใน Linux kernel ตั้งแต่ version 2.6.11

คอนเซ็ปของ AoE ก็ประมาณ iSCSI (Internet Small Computer System Interface) ที่ทำงานเป็น Network Storage คล้าย SAN แต่ราคาถูกกว่ามาก โดยทำงานบน Internet Protocol โดย iSCSI จะ encapsulate คำสั่งของ SCSI แล้วส่งไปทาง IP Packets ปัญหาของ iSCSI คือ processor ต้องแรง เพราะต้องทำงานหนักในการ wrapping แล้วก็ unwrapping เจ้า IP Packets ที่ว่านี่เอง

AoE ก็คล้ายๆกัน แต่เปลี่ยนเป็นส่ง ATA command ผ่าน Ethernet Frame โดยไม่มี overhead ในเรื่องของ Internet Protocol ทำงานผ่าน MAC Address ได้เลย ดังนั้น route ไม่ได้ ก็เลยต้องอยู่ใน วง LAN เดียวกันเท่านั้น ดังนั้นภายใน Local network คุณสามารถ manage AoE ด้วย LVM ก็ได้ สร้าง RAID array ก็ได้

ลองทำกันดูได้

เข้าใจว่าไม่มีอะไรมากมายเพราะ Linux kernel หลังจาก version ที่ว่ามาจะ support กันหมดแล้ว เว้นแต่จะติดตั้ง Linux enterprise อย่าง SUSE Linux Enterprise Server 9 (SLES9) หรือ RedHat Enterprise Linux 4 จะต้องลงตัว kernel source ด้วย เพื่อจะ build AoE driver ให้ kernel รู้จัก

เครื่องที่จะติดตั้งเป็น Storage Server จะต้องติดตั้ง vblade daemon ที่ทำหน้าที่ export partition หรือ harddisk ให้เครื่อง client ทั้งหลายในวงเข้ามา access ได้ สามารถ Download source มาติดตั้งได้ เมื่อติดตั้ง vblade แล้ว สามารถ export disk partition ได้ด้วยคำสั่งประมาณนี้ :
./vbladed 0 0 eth0 /dev/sda4
คือระบุ Shelf , Slot , Ethernet device, และ Storage device ให้กับ vblade daemon ตัวเลข Shelf และ Slot มาจากการที่ vblade จำลองมาจากการอ้างถึง Shelf และ Slot ของอุปกรณ์  EtherDrive storage appliance ของ Coraid เขา คือ นั่นแล ในที่นี้ ทำการ Map sda4 ให้อยู่เสมือนใน slot แรก (0) และ shelf แรก (0) บน EtherDrive โดยทำงานผ่าน Ethernet บน eth0  , output ที่ได้ ก็น่าจะประมาณนี้
pid 12905: e0.0, 436614507 sectors
ก็จะโชว์ process ID ที่ vblade ทำงานอยู่ และแสดง shelf, slot address และจำนวน sector ของ storage ที่ทำการ export ให้ client ใช้ได้

การใช้งานโดย client ทำได้โดยต้องทำให้ kernel รู้จัก AoE ก่อนเช่นกัน โดยการ load kernel module aoe เช่น modprobe aoe ถ้าสำเร็จ สามารถ list ดูได้ด้วย lsmod | grep aoe หลังจากนั้น ติดตั้ง aoetools ที่ช่วยให้ client สามารถ discover AoE device ใน local network ได้

หลังจากนี้ เราก็สามารถ probe AoE device ใน network ได้ด้วยคำสั่ง aoe-discover ; aoe-stat มันจะหา AoE device ใน network และ add device ให้อัตโนมัติ เป็น /dev/atherd/e0.0

เนื่องจาก AoE เป็น block-level storage ดังนั้น จะสามารถทำอะไรกับมันก็ได้เหมือน storage ทั่วไป โดยปกติแล้ว ก็จะสร้าง filesystem (format) ให้มันก่อน แล้ว mount ขึ้นมาใช้งานได้เลย
mkfs.ext3 /dev/etherd/e0.0
mount /dev/etherd/e0.0 /mnt
ไม่ได้จำกัดที่ ext3 เท่านั้น สามารถใช้ linux filesystem อื่นๆอะไรก็ได้แล้วแต่ชอบ หรือจะ manage ด้วย LVM ก็ได้ แต่ต้องมีการแก้ config ที่ /etc/lvm/lvm.conf นิดหน่อย โดยเพิ่มบรรทัดเข้าไปว่า
types = ["aoe", 16]
ตอนนี้ e0.0 ก็สามารถนำมาใช้เสมือน block device ทั่วๆไป

สามารถทดสอบประสิทธิภาพของ AoE ได้ โดยอาจจะใช้ bonnie++ มาทดสอบได้  จาก directory ที่เรา mount ผ่าน AoE เราก็ทดสอบ copy ไฟล์ใหญ่ๆ ไปยัง AoE device ได้

EtherDrive appliances ยังถูกกว่า Fibre Channel ฉันใด AoE ยังฟรีฉันนั้น.....

No comments:

Post a Comment