โฮสต์เซิร์ฟเวอร์ ZFS ในฐานะแขกเสมือน


23

ฉันยังใหม่กับ ZFS ฉันใช้ Nexenta แต่ฉันคิดว่าจะเปลี่ยนเป็น OpenIndiana หรือ Solaris 11 Express ตอนนี้ฉันอยู่ในจุดที่จะพิจารณาการทำเวอร์ชวลเซิร์ฟเวอร์ ZFS ในฐานะแขกใน ESXi, Hyper-V หรือ XenServer (ฉันยังไม่ได้ตัดสินใจว่าจะใช้อันไหน - ฉันกำลังมุ่งสู่ ESXi สำหรับ VMDirectPath และ FreeBSD)

เหตุผลหลักที่ดูเหมือนว่าฉันมีทรัพยากรเพียงพอที่จะไปรอบ ๆ ได้อย่างง่ายดายซึ่งอาจทำให้มี VM อื่น ๆ จำนวน 1-3 เครื่องทำงานพร้อมกัน เซิร์ฟเวอร์ Windows ส่วนใหญ่ อาจเป็น Linux / BSD VM เช่นกัน ฉันต้องการเซิร์ฟเวอร์ ZFS เสมือนจริงที่จะโฮสต์ข้อมูลทั้งหมดสำหรับ VMs อื่น ๆ เพื่อให้ข้อมูลของพวกเขาสามารถเก็บไว้ในดิสก์ที่แยกจากร่างกายจากดิสก์ ZFS (เมานต์เป็น iscsi หรือ nfs)

เซิร์ฟเวอร์ในปัจจุบันมี AMD Phenom II ที่มีคอร์ทั้งหมด 6 (ปลดล็อค 2), RAM 16GB (maxed out) และ LSI SAS 1068E HBA พร้อม (7) 1TB SATA II ดิสก์ต่อพ่วง (วางแผนบน RAIDZ2 พร้อม hot spare) ฉันยังมี (4) 32GB SATA II SSD ที่ต่ออยู่กับเมนบอร์ด ฉันหวังว่าจะสะท้อน SSD สองตัวไปยังมิเรอร์บูต (สำหรับโฮสต์เสมือน) และปล่อยให้ SSD อีกสองตัวสำหรับ ZIL และ L2ARC (สำหรับแขก ZFS VM) ฉันยินดีที่จะเพิ่มดิสก์อีกสองดิสก์เพื่อจัดเก็บแขก VM และจัดสรรดิสก์ทั้งเจ็ดปัจจุบันเป็นที่เก็บข้อมูล ZFS หมายเหตุ: เมนบอร์ดไม่รองรับ IOMMU เนื่องจาก 880G ไม่รองรับ แต่ฉันมีบอร์ด 890FX ที่มี IOMMU หากสร้างความแตกต่างอย่างมาก

คำถามของฉันคือ:

1) ควรทำเช่นนี้หรือไม่? ฉันไม่เห็นข้อเสียใด ๆ ที่เห็นได้ชัด (ซึ่งทำให้ฉันสงสัยว่าทำไมไม่มีใครพูดถึงมัน) ฉันรู้สึกว่าฉันสามารถกำกับดูแลอย่างมากและฉันเกลียดที่จะยอมรับสิ่งนี้ย้ายข้อมูลทั้งหมดของฉันเพียงเพื่อไป fubar จากรายละเอียดบางนาทีที่ฉันพลาด

2) ประสิทธิภาพของแขกเสมือน ZFS? ฉันยินดีที่จะใช้ประสิทธิภาพการทำงานเล็กน้อย แต่ฉันคิดว่าถ้าแขก VM มีการเข้าถึงดิสก์อย่างเต็มรูปแบบที่อย่างน้อยที่สุดประสิทธิภาพดิสก์ I / O จะน้อยมาก . ทุกคนสามารถพูดถึงสิ่งนี้จากประสบการณ์การโฮสต์เซิร์ฟเวอร์ ZFS ในฐานะแขกของ VM หรือไม่


คุณบอกว่าคุณต้องการโฮสต์ข้อมูลสำหรับ VM อื่น ๆ ทั้งหมด คุณละทิ้งตัวเองที่ต้องการขจัดข้อมูลซ้ำซ้อนหรือไม่? ถ้าเป็นเช่นนั้นสิ่งนี้ควรอยู่ในเครื่องของตัวเองเนื่องจากการขจัดข้อมูลซ้ำซ้อนเป็นความจำที่เข้มข้นมาก ทำไมไม่ลองดูบางอย่างเช่น SmartOS สำหรับ ZFS ที่คุณต้องการ ด้วยวิธีนี้คุณจะได้รับไฮเปอร์ไวเซอร์เช่นกัน
devicenull

ฉันคิดเกี่ยวกับ dedupe แต่ในเวลานั้นไม่ฉันไม่ควรใช้มัน ฉันจะตรวจสอบ SmartOS ฉันไม่เคยได้ยินดังนั้นฉันจะตรวจสอบว่า
osij2is

คำตอบ:


38

ฉันได้สร้างการตั้งค่าที่เก็บ ZFS แบบ "ครบวงจร" จำนวนหนึ่ง ในตอนแรกได้รับแรงบันดาลใจจากการโพสต์ที่ยอดเยี่ยมที่Ubiquitous Talkโซลูชันของฉันใช้แนวทางที่แตกต่างกันเล็กน้อยในการออกแบบฮาร์ดแวร์ แต่ให้ผลลัพธ์ของการจัดเก็บ ZFS เสมือนจริงที่ถูกห่อหุ้ม

เพื่อตอบคำถามของคุณ:

  • การพิจารณาว่านี่เป็นวิธีการที่ชาญฉลาดหรือไม่ขึ้นอยู่กับเป้าหมายของคุณ คุณพยายามทำอะไรให้สำเร็จ หากคุณมีเทคโนโลยี (ZFS) และกำลังค้นหาแอปพลิเคชันอยู่แสดงว่าเป็นความคิดที่ไม่ดี คุณควรใช้ฮาร์ดแวร์ควบคุม RAID ที่เหมาะสมและใช้งาน VM บนพาร์ติชั่น VMFS ในเครื่อง มันเป็นเส้นทางของการต่อต้านน้อยที่สุด อย่างไรก็ตามหากคุณมีเหตุผลเฉพาะที่ต้องการใช้ ZFS (การจำลองแบบการบีบอัดความปลอดภัยของข้อมูลความสะดวกในการพกพา ฯลฯ ) นี่อาจเป็นไปได้แน่นอนถ้าคุณเต็มใจที่จะพยายาม

  • ประสิทธิภาพขึ้นอยู่กับการออกแบบของคุณอย่างหนักโดยไม่คำนึงว่าคุณกำลังวิ่งบนโลหะเปลือยหรือเสมือนจริง การใช้PCI-passthrough (หรือ AMD IOMMU ในกรณีของคุณ) เป็นสิ่งจำเป็นเนื่องจากคุณจะต้องให้ ZFS VM ของคุณเข้าถึงโดยตรงไปยังคอนโทรลเลอร์และดิสก์หน่วยเก็บข้อมูล SAS ตราบใดที่ VM ของคุณได้รับการจัดสรรทรัพยากร RAM และ CPU ในปริมาณที่เหมาะสมประสิทธิภาพจะใกล้เคียงกับคุณ แน่นอนการออกแบบสระว่ายน้ำของคุณมีความสำคัญ โปรดพิจารณามิเรอร์กับ RAID Z2 ZFS ตาชั่งทั่ว vdevs และไม่ใช่จำนวนของดิสก์


แพลตฟอร์มของฉันคือVMWare ESXi 5และระบบปฏิบัติการ ZFS มีความสามารถที่ต้องการของฉันคือNexentaStor Community Edition

นี้เป็นของฉันบ้านเซิร์ฟเวอร์ เป็นHP ProLiant DL370 G6 ที่ใช้ ESXi จากการ์ด SD ภายใน ดิสก์ 72GB ที่มิร์เรอร์สองตัวที่อยู่ตรงกลางเชื่อมโยงกับตัวควบคุม Smart Array P410 RAID ภายในและสร้างปริมาณ VMFS ไดรฟ์ข้อมูลนั้นเก็บ NexentaStor VM จำไว้ว่าเครื่องเสมือน ZFS จำเป็นต้องอาศัยอยู่ที่ไหนสักแห่งบนที่เก็บข้อมูลที่เสถียร

มีคอนโทรลเลอร์ LSI 9211-8i SASเชื่อมต่อกับโครงใส่ไดรฟ์ซึ่งมีดิสก์ 1TB SATA หกตัวทางด้านขวา มันถูกส่งผ่านไปยังเครื่องเสมือน NexentaStor ทำให้ Nexenta สามารถดูดิสก์เป็นการตั้งค่า RAID 1 + 0 ดิสก์มีไดรฟ์WD10EARS สีเขียว Western Digital el-cheapo ชิดกันอย่างเหมาะสมกับzpoolไบนารีที่ปรับเปลี่ยน

ฉันไม่ได้ใช้อุปกรณ์ ZIL หรือแคช L2ARC ใด ๆ ในการติดตั้งนี้

ป้อนคำอธิบายรูปภาพที่นี่

VM มี RAM ขนาด 6GB และจัดสรร 2 vCPU ใน ESXi หากคุณใช้ PCI-passthrough การสำรองหน่วยความจำสำหรับจำนวนเต็มของ RAM ที่กำหนดของ VM จะถูกสร้างขึ้น

ฉันให้ NexentaStor VM สองอินเตอร์เฟสเครือข่าย หนึ่งคือการจัดการปริมาณข้อมูล อีกส่วนหนึ่งเป็นส่วนหนึ่งของ vSwitch แยกต่างหากและมีอินเตอร์เฟส vmkernel (ไม่มีอัปลิงค์ภายนอก) สิ่งนี้ยอมให้ VM จัดเตรียมที่เก็บข้อมูล NFS โดย ESXi ผ่านเครือข่ายส่วนตัว คุณสามารถเพิ่มอินเทอร์เฟซอัปลิงค์เพื่อให้การเข้าถึงโฮสต์ภายนอก

ติดตั้ง VMs ใหม่ของคุณบนที่เก็บข้อมูลที่ส่งออก ZFS อย่าลืมตั้งค่าพารามิเตอร์ "การเริ่มต้น / ปิดเครื่องเสมือน" ใน ESXi คุณต้องการให้ VM หน่วยความจำบูตก่อนระบบ guest และปิดระบบล่าสุด


ป้อนคำอธิบายรูปภาพที่นี่

นี่คือผลลัพธ์bonnie ++และiozoneของการรันโดยตรงบน NexentaStor VM การบีบอัด ZFS ปิดสำหรับการทดสอบที่จะแสดงหมายเลข relatable มากขึ้น แต่ในทางปฏิบัติ ZFS การบีบอัดเริ่มต้น (ไม่ gzip) ควรเสมอถูกเปิดใช้งาน

# bonnie++ -u root -n 64:100000:16:64

Version  1.96       ------Sequential Output------ --Sequential Input- --Random-
Concurrency   1     -Per Chr- --Block-- -Rewrite- -Per Chr- --Block-- --Seeks--
Machine        Size K/sec %CP K/sec %CP K/sec %CP K/sec %CP K/sec %CP  /sec %CP
saint           12G   156  98 206597  26 135609  24   410  97 367498  21  1478  17
Latency               280ms    3177ms    1019ms     163ms     180ms     225ms
Version  1.96       ------Sequential Create------ --------Random Create--------
saint               -Create-- --Read--- -Delete-- -Create-- --Read--- -Delete--
files:max:min        /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP  /sec %CP
    64:100000:16/64  6585  60 58754 100 32272  79  9827  58 38709 100 27189  80
Latency              1032ms     469us    1080us     101ms     375us   16108us

# iozone -t1 -i0 -i1 -i2 -r1m -s12g

    Iozone: Performance Test of File I/O

    Run began: Wed Jun 13 22:36:14 2012

    Record Size 1024 KB
    File size set to 12582912 KB
    Command line used: iozone -t1 -i0 -i1 -i2 -r1m -s12g
    Output is in Kbytes/sec
    Time Resolution = 0.000001 seconds.
    Throughput test with 1 process
    Each process writes a 12582912 Kbyte file in 1024 Kbyte records

    Children see throughput for  1 initial writers  =  234459.41 KB/sec
    Children see throughput for  1 rewriters        =  235029.34 KB/sec
    Children see throughput for  1 readers          =  359297.38 KB/sec
    Children see throughput for 1 re-readers        =  359821.19 KB/sec
    Children see throughput for 1 random readers    =   57756.71 KB/sec
    Children see throughput for 1 random writers    =  232716.19 KB/sec

นี่คือกราฟ NexentaStor DTrace ที่แสดง IOPS ของ VM ของหน่วยเก็บและอัตราการถ่ายโอนระหว่างการทดสอบการทำงาน 4000 IOPS และ 400+ เมกะไบต์ / วินาทีนั้นค่อนข้างสมเหตุสมผลสำหรับดิสก์ระดับล่าง (ขนาดบล็อกใหญ่) ป้อนคำอธิบายรูปภาพที่นี่

บันทึกอื่น ๆ

  • คุณจะต้องทดสอบ SSD ของคุณเพื่อดูว่าสามารถนำเสนอโดยตรงกับ VM หรือ DirectPath เลือกตัวควบคุมเมนบอร์ดทั้งหมด
  • คุณมีพลังงาน CPU ไม่มากนักดังนั้น จำกัด หน่วยเก็บข้อมูลไว้ที่ 2 vCPU
  • อย่าใช้ RAIDZ1 / Z2 / Z3 เว้นแต่ว่าคุณต้องการพื้นที่ดิสก์จริงๆ
  • อย่าใช้การซ้ำซ้อน การบีบอัดนั้นฟรีและมีประโยชน์มากสำหรับ VMs การทำซ้ำจะต้องใช้ RAM + L2ARC มากขึ้นเพื่อให้มีประสิทธิภาพ
  • เริ่มต้นโดยไม่มี SSD และเพิ่มถ้าจำเป็น ปริมาณงานบางอย่างที่ไม่ได้ตี ZIL หรือ L2ARC
  • NexentaStor เป็นแพ็คเกจที่สมบูรณ์ มีประโยชน์ในการมี GUI การจัดการที่แข็งแกร่งอย่างไรก็ตามฉันเคยได้ยินความสำเร็จกับNapp-Itเช่นกัน

+1 ขอบคุณสำหรับข้อมูลทั้งหมด! เพื่อตอบคำถามของคุณฉันกำลังทำสิ่งนี้ด้วยเหตุผลสองสามข้อ ฉันกำลังทำสิ่งนี้เป็นส่วนใหญ่เพื่อใช้ประโยชน์จากแกนประมวลผลอื่น ๆ เพื่อสร้าง VM อื่น ๆ หนึ่งหรือสองตัว (ไม่ใช่ ZFS) และเพื่อให้เป้าหมาย iSCSI แก่เซิร์ฟเวอร์เสมือน Opteron ของฉัน เหตุผลของฉันสำหรับ ZFS คือการบีบอัด (ไม่เรียงตามลำดับ) และความปลอดภัยของข้อมูลและการจำลองแบบ Dedupe ดูดีมาก แต่ในแง่ของทรัพยากรและข้อมูลของฉันฉันไม่แน่ใจว่าจำเป็นหรือไม่ ฉันกำลังใช้ Nexenta อยู่ในตอนนี้ แต่ฉันกำลังพิจารณาที่จะย้ายไปที่ Solaris Express หรือ OpenIndiana หากฉันยังคงกองพะเนินเทินทึกในดิสก์เกินขีด จำกัด 18TB
osij2is

ดังนั้นฉันเข้าใจความคิดเห็นของคุณว่าจะใช้ SSD สำหรับ L2ARC หรือ ZIL หรือไม่และฉันยินดีที่จะทำเช่นนั้น ดูประสิทธิภาพก่อนแล้วกำหนดว่าจะเพิ่ม ZIL และ / หรือ ARC สำหรับการมิเรอร์กับ RAIDZ หลังจากอ่านความคิดเห็นของคุณและอ่านโพสต์บล็อกนี้ ( constantin.glez.de/blog/2010/01/… ) ฉันคิดว่าการมิเรอร์นั้นมีขอบเล็กน้อย ฉันไม่ต้องการพื้นที่ดิสก์ แต่ถ้าฉันสามารถมีความสามารถในการอ่าน / เขียนซ้ำซ้อน & เร็วฉันคิดว่าฉันจะเปลี่ยนเป็นแบบนั้น ไม่ว่าจะเป็นพื้นที่เก็บข้อมูลใดฉันก็จะไม่คุ้มค่า
osij2is

นอกจากนี้โปรดจำไว้ว่าการบีบอัดมีประโยชน์ ฉันจ่ายเงินเพื่อการค้า Nexenta สำหรับระบบไคลเอนต์และอะไรที่มากกว่า 18TB แต่เคล็ดลับเดียวกันนี้ใช้กับ OpenIndiana
ewwhite

คุณใช้ E1000 vnic หรือ VMXNet3 vnic สำหรับเครือข่าย NFS หรือไม่? เพราะฉันได้รับเพียง 1gbps ระหว่าง Nexenta / Solaris และ VMwareโดยใช้การตั้งค่าที่คล้ายกันและไม่สามารถหาวิธีที่จะได้รับความเร็วมากขึ้น NexentaStor รุ่นใด ฉันสงสัยว่ารุ่นที่พวกเขามีอยู่ในขณะนี้จะใช้งานไม่ได้ ...
Josh
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.