ประสิทธิภาพของการเรียกใช้ VMs บนโฮสต์ ZFS คืออะไร


11

ฉันกำลังพิจารณาย้ายจาก ext3 เพื่อ ZFS สำหรับจัดเก็บข้อมูลบนโฮสต์ Debian Linux ของฉันใช้ZFS บน Linux คุณสมบัตินักฆ่าหนึ่งเดียวของ ZFS ที่ฉันต้องการคือการรับประกันความถูกต้องของข้อมูล ความสามารถในการเพิ่มขนาดพื้นที่จัดเก็บข้อมูลเล็กน้อยเนื่องจากความต้องการพื้นที่เก็บข้อมูลของฉันเพิ่มขึ้นเป็นสิ่งที่ฉันคาดหวัง

อย่างไรก็ตามฉันยังใช้ VM สองสามตัวในโฮสต์เดียวกัน (แม้ว่าโดยปกติในกรณีของฉันมีเพียง VM เดียวเท่านั้นที่ทำงานบนโฮสต์ในเวลาใดก็ได้)

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

ฉันสามารถอยู่กับการรับประกันความสมบูรณ์ของข้อมูลน้อยลงในอิมเมจดิสก์ VM หากจำเป็น (ฉันไม่ได้ทำสิ่งใดสำคัญใน VMs ใด ๆ ) และสามารถแยกพวกเขาออกจากส่วนที่เหลือของระบบไฟล์ได้อย่างง่ายดาย แต่ก็คงจะดีถ้าฉันไม่ ไม่จำเป็นต้องปิดคุณลักษณะใด ๆ ที่ทำให้ฉันต้องการโยกย้ายไปยังระบบไฟล์อื่น

ฮาร์ดแวร์นั้นค่อนข้างอ้วนสำหรับระบบระดับเวิร์คสเตชั่น แต่จะไม่ถือเทียนจำนวนมากให้กับเซิร์ฟเวอร์ระดับไฮเอนด์ (RAM 32 GB ที่ไม่ค่อยมีการใช้งาน> 10 GB, 6-core 3.3 GHz CPU ปัจจุบัน 2.6 TB ใช้งานได้ พื้นที่ดิสก์ตามdfและพื้นที่ว่างประมาณ 1.1 TB การย้ายไปที่ ZFS มีแนวโน้มที่จะเพิ่มพื้นที่ว่างให้มากขึ้น ) และฉันไม่ได้วางแผนที่จะใช้งานการทำซ้ำข้อมูล (เนื่องจากการเปิดใช้งานการลบความซ้ำซ้อน แผนจะเริ่มต้นด้วยการกำหนดค่า JBOD (เห็นได้ชัดว่ามีการสำรองข้อมูลที่ดี) แต่ฉันอาจย้ายไปที่การตั้งค่ากระจกสองทางในที่สุดหากเงื่อนไขรับประกัน


นอกจากนี้ยังเก็บไว้ในใจว่าZFS ดำเนิน RAID5 ดีกว่าแบบดั้งเดิมแล้วในแง่ของ IOPS RAIDZ เขียนประสิทธิภาพการทำงานที่ความเร็วของดิสก์เดียวเพราะมันไม่ได้รับผลกระทบจากการลงโทษ I / O ซึ่งเป็นภัยพิบัติ RAID5 / 6 แบบดั้งเดิม
Stefan Lasiewski

1
ขอบคุณทุกคนที่ได้ตอบความเข้าใจของคุณ! ฉันจะกลับมาที่คำถามนี้ในภายหลัง
CVn

ความคิดเห็นของสเตฟานนั้นเป็นเพียงแค่ความผิดเท่านั้น ประสิทธิภาพของ ZFS RAIDZ นั้นแย่กว่าอย่างมากจากมุมมองของ IOPS (สิ่งที่คุณมักมีปัญหาใน VM) กว่า RAID5 แบบดั้งเดิม โปรดอย่าสันนิษฐานการปรับปรุงประสิทธิภาพการเขียนโดยย้ายไปที่ ZFS มันเป็นกรณีที่ไม่ค่อย กำไรจากการอ่านแบบสมบูรณ์จะขึ้นอยู่กับ RAM ที่มีให้กับ ARC และขนาดชุดการทำงานและเดลต้าของคุณ โดยปกติแล้วกับ VM นั้น ZFS ARC จะช่วยในการอ่านโดยรวมเมื่อเปรียบเทียบกับทางเลือก ผู้เขียนมักจะทนทุกข์แม้กระทั่งในกระจกเงาอยู่เสมอพร้อมกับจู่โจม
Nex7

@ Nex7 วิธีการเขียนโดยไม่มี RAID จาก ZFS เลย แต่มีอุปกรณ์เก็บข้อมูลเดียวเท่านั้นซึ่งเช่น mdraid บางอย่างให้? ZFS ทำงานได้เทียบเท่ากับระบบไฟล์อื่น ๆ หรือไม่เพราะไม่ได้ใช้ RAID RAID ในการจัดทำ?
Thorsten Schöning

คำตอบ:


4

เนื่องจาก ZFS ทำงานในระดับบล็อกขนาดของไฟล์จึงไม่แตกต่างกัน ZFS ต้องการหน่วยความจำและ CPU มากกว่า แต่ก็ไม่ได้ช้ากว่าระบบไฟล์ แม้ว่าคุณจะต้องระวังว่า RAIDZ นั้นไม่เทียบเท่ากับความเร็วของ RAID5 RAID10 นั้นใช้ได้ดีในเรื่องความเร็วที่มีความสำคัญ


4

ZFS บนฮาร์ดแวร์ (เช่น buff) ที่เหมาะสมน่าจะเร็วกว่าระบบไฟล์อื่นคุณอาจต้องการสร้าง ZIL บนตำแหน่งที่รวดเร็ว (เช่น SSD) นี่คือตำแหน่งที่จะแคชเขียนเป็นอย่างดี (เช่นเดียวกับวารสารใน ext3 / 4) สิ่งนี้ทำให้กล่อง ack เขียนว่าถูกเขียนลงดิสก์ก่อนแกนหมุนจริงมีข้อมูล

คุณยังสามารถสร้าง L2 ARC บน SSD เพื่ออ่านแคช สิ่งนี้เป็นสิ่งที่ยอดเยี่ยมในสภาพแวดล้อม VM ซึ่งคุณสามารถนำดิสก์ทางกายภาพมาไว้ที่หัวเข่าของพวกเขาได้ด้วยการบูต VMs หลายรายการในเวลาเดียวกัน

ไดรฟ์เข้าสู่ VDEVs VDEVs จะเข้าไปใน zpools (โปรดใช้ดิสก์ทั้งหมดในเวลาเดียวกัน) หากนี่เป็นระบบที่เล็กกว่าคุณอาจต้องการ zpool เพียงอันเดียวและ (ถ้าคุณไม่กังวลเกี่ยวกับการสูญหายของข้อมูล) VDEV เดียว VDEV คือที่ที่คุณเลือกระดับ RAID (แม้ว่าคุณจะสามารถ MIRROR VDEVs ได้ถ้าคุณมีดิสก์เพียงพอ) ดิสก์ที่ช้าที่สุดใน VDEV จะกำหนดความเร็วของ VDEV ทั้งหมด

ZFS นั้นเกี่ยวกับความถูกต้องของข้อมูล - เหตุผลที่เครื่องมือดั้งเดิมสำหรับการบำรุงรักษาระบบไฟล์ไม่มีอยู่ (เช่น fsck) เป็นปัญหาที่พวกเขาแก้ปัญหาไม่สามารถมีอยู่ในระบบไฟล์ ZFS

IMO ข้อเสียเปรียบที่ใหญ่ที่สุดของ ZFS คือถ้าระบบไฟล์ของคุณใกล้เต็ม (พูด 75% +) มันจะช้ามาก แค่อย่าไปที่นั่น


2

31GB จริง ๆ แล้วไม่ใหญ่เลย ...

อย่างไรก็ตามขึ้นอยู่กับระบบไฟล์ที่คุณใช้ในปัจจุบันคุณอาจพบว่า ZFS ช้าลงเล็กน้อย แต่ให้รายละเอียดฮาร์ดแวร์ของคุณอาจเล็กน้อย

แน่นอน ZFS จะใช้ RAM ที่ดีสำหรับการแคชซึ่งอาจทำให้ VM ของคุณดูเหมือน 'snappier' ในการใช้งานทั่วไป (เมื่อไม่ได้อ่านหรือเขียนหนักมาก) ฉันไม่แน่ใจว่าจะปรับ ZFS บน Linux อย่างไร แต่คุณอาจต้อง จำกัด ARC ของมันถ้าเป็นไปได้เพื่อหยุดการทำงานกับ RAM ทั้งหมดของคุณ VMs)

ฉันจะเปิดใช้งานการบีบอัด (คำแนะนำวันนี้คือการเปิดใช้จนกว่าคุณจะมีเหตุผลที่ดีที่จะไม่) โปรดจำไว้ว่าต้องดำเนินการก่อนที่จะวางข้อมูลลงในระบบไฟล์ คนส่วนใหญ่รู้สึกประหลาดใจที่พบว่ามันเร็วขึ้นจริง ๆ แล้วเนื่องจากอัลกอริทึมการบีบอัดจะทำงานเร็วกว่าดิสก์ IO ฉันสงสัยว่ามันจะทำให้เกิดปัญหาด้านประสิทธิภาพกับโปรเซสเซอร์ 6 คอร์ของคุณเป็นอย่างมาก ฉันไม่ได้คาดหวังว่า VMs จะบีบอัดข้อมูลมากนัก แต่ฉันสามารถเปลี่ยนข้อมูล VM ~ 470GB เป็น 304GB เพียงแค่ตั้งค่าการบีบอัดเริ่มต้น

ไม่ต้องกังวลกับความซ้ำซ้อนมันจะกลับมาหลอกหลอนคุณในภายหลังและคุณจะใช้เวลาหลายสัปดาห์ในการสับข้อมูลเพื่อพยายามกำจัดมัน

หากคุณประสบปัญหาด้านประสิทธิภาพคำตอบที่ชัดเจนคือการเพิ่ม SSD เป็น ZIL / L2ARC หรือแม้กระทั่งทั้งคู่ ไม่เหมาะที่จะใช้อุปกรณ์เดียวสำหรับทั้งคู่ แต่น่าจะยังคงปรับปรุงประสิทธิภาพการทำงานในพูลที่มีดิสก์ / vdev จำนวนน้อย

ในการเพิ่ม: ฉันจะลองและเริ่มต้นด้วยการกำหนดค่าที่ซ้ำซ้อนถ้าเป็นไปได้ (สะท้อนอุดมคติ) หรือแปลงเป็นมิเรอร์จากแถบโดยเร็วที่สุด ในขณะที่ ZFS จะตรวจสอบข้อมูลทั้งหมดและตรวจพบข้อผิดพลาดได้ทันที (หรือระหว่างการขัดจังหวะ) แต่จะไม่สามารถทำอะไรได้เลย (โดยไม่ต้องใช้การคัดลอก = 2 ซึ่งจะใช้งานดิสก์เป็นสองเท่า) คุณจะเหลือเพียงแค่มันบอกว่ามีข้อผิดพลาดในไฟล์ (อาจเป็นดิสก์อิมเมจ VM ของคุณ) ซึ่งคุณจะไม่สามารถทำอะไรได้มากมายโดยไม่ต้องลบและสร้างไฟล์เหล่านั้นขึ้นมาใหม่


"คุณจะถูกทิ้งไว้พร้อมกับบอกว่ามีข้อผิดพลาดในไฟล์ ... ซึ่งคุณจะไม่สามารถทำอะไรได้มากมายเกี่ยวกับ"นั่นเป็นความคิดเห็นที่ดีและฉันขอขอบคุณ ที่กล่าวมาว่าเป็นที่ที่การสำรองข้อมูลทุกค่ำคืนของฉันเข้ามาเนื่องจากไม่มีสิ่งใดมาขวางกั้นระหว่างฉันและข้อมูลเสียหายอย่างเงียบ ๆ ดังนั้นแม้ว่า ZFS จะไม่ยอมให้ฉันอ่านไฟล์หรือส่วนหนึ่งจนกว่าฉันจะกู้คืนจาก ) การสำรองข้อมูลที่เป็นใหญ่การปรับปรุงในการรับรองความสมบูรณ์ของข้อมูล
CVn

สำหรับขนาดไฟล์, ไม่, 31 GB ไม่ได้มีขนาดใหญ่อย่างแน่นอน (แม้ว่ามันจะยังคงเป็น ~ 1.2% ของความจุระบบทั้งหมดของฉัน), แต่ความกังวลของฉันมีมากขึ้นตามบรรทัดของวัวที่จะให้ระบบคัดลอกข้อมูลทั้งหมดนั้น กลับมาอย่างต่อเนื่องความเข้าใจผิดว่า JamesRyan การแก้ไขได้อย่างรวดเร็ว
CVn

1

ขึ้นอยู่กับกรณีการใช้งานและ VM ของคุณฉันจะพิจารณาสิ่งต่อไปนี้ ปล่อยให้ระบบปฏิบัติการโฮสต์ดูแลไฟล์ที่คุณกำลังจัดเก็บในเล่ม ZFS

หากเป็นไปได้ให้สร้าง LUN สำหรับ VM ทุกเครื่องเท่านั้นที่มีระบบปฏิบัติการและไฟล์ไบนารีที่จำเป็นเท่านั้น และนำเสนอ Storage stace สำหรับข้อมูลส่วนบุคคลเช่นเดียวกับการแบ่งปันผ่าน NFS, samba หรือ iSCSI (หรือ zvols ตามที่ระบุไว้ในความคิดเห็น) ZFS สามารถติดตามทุกไฟล์ด้วยการตรวจสอบและเวลาเข้าถึง ect แน่นอนว่าถ้าความเร็วนั้นไม่สำคัญคุณก็สามารถเปิดใช้งานการบีบอัดข้อมูลบนดาต้าสโตร์ได้บ้าง ประโยชน์จะเป็นเลเยอร์ที่หายไปของระบบไฟล์อื่น หากคุณต้องการสร้าง LUN สำหรับ Virtual Harddrive ตัวที่สองและสร้างระบบไฟล์ NTFS ขึ้นไปบนนั้น ZFS จะต้องจัดการกับ Binary Blob ขนาดใหญ่และไม่รู้เนื้อหาหรือไฟล์ใด ๆ ดังนั้นจึงไม่สามารถใช้ประโยชน์จากแคช ZIL หรือ ARC ใน เช่นเดียวกับไฟล์เครื่องบิน

กล่าวถึง ACLs, ZFS สามารถใช้ ACL ผ่าน NFSv4 หรือ Samba (ถ้าเปิดใช้งาน) ฉันยอมรับว่าฉันใช้ ZFS บน FreeBSD และไม่สามารถรับประกันได้ว่าจะเปิดใช้งานการจับคู่ Sambas ACLs ลงในปริมาณ ZFS ได้อย่างไร แต่ฉันแน่ใจว่านี่ไม่ควรเป็นเรื่องใหญ่

การคัดลอกซ้ำซ้อนร่วมกับ Read cache เป็นข้อได้เปรียบที่สำคัญเมื่อต้องประหยัดพื้นที่และปรับปรุงการอ่านจำนวนมาก (Storm storm) เนื่องจาก VMs ทั้งหมดเริ่มอ่านบล็อกเดียวกัน

เช่นเดียวกับ ZFS snapshots สำหรับ VMs และ Datastores คุณสามารถสร้างเชลล์สคริปต์อย่างง่ายเพื่อตรึง VM ใช้สแน็ปช็อตของ VM และ Datastore และทำงานต่อไปหรือเพียงแค่ Datastore เพียงอย่างเดียวและโคลน VM แสดง Snapshot ของต้นฉบับและทดสอบบางอย่าง

ความเป็นไปได้ไม่มีที่สิ้นสุดด้วย ZFS;)

แก้ไข:หวังว่าฉันได้อธิบายมันดีขึ้นเล็กน้อยในขณะนี้

EDIT2:ความคิดเห็นส่วนตัว: พิจารณาใช้ RAIDZ2 (RAID6) ในขณะที่คุณสามารถทนต่อความล้มเหลวของดิสก์สองครั้ง! หากคุณมีดิสก์สำรองหนึ่งแผ่นเหลืออยู่มันจะไม่ผิด แต่ความล้มเหลวของดิสก์สองรายการควรจะเพียงพอสำหรับการเรียกคืนอย่างรวดเร็ว ฉันเพิ่งโพสต์สคริปต์เพื่อตรวจสอบสถานะดิสก์ที่นี่


ฉันไม่แน่ใจว่าฉันจะได้รับมัน คุณกำลังบอกว่าฉันควรจัดเก็บไฟล์ที่ VM ใช้เป็นไฟล์แยกต่างหากในระบบไฟล์ ZFS แทนที่จะเป็นดิสก์อิมเมจ สิ่งที่เกี่ยวกับสิ่งต่าง ๆ เช่นพาร์ทิชันบูตเซกเตอร์คุณลักษณะที่ ZFS ไม่รู้ Windows ACLs ในบริบท Linux ... ? ฉันอาจเข้าใจผิดคุณหรือคุณกำลังตอบบางอย่างนอกเหนือจากที่ฉันขอ คุณช่วยกรุณาอ่านคำถามอีกครั้งและแก้ไขคำตอบของคุณเพื่อชี้แจงว่าที่อยู่นั้นเกี่ยวข้องกับประสิทธิภาพการจัดเก็บของฉันได้อย่างไร
CVn

เกี่ยวกับสแน็ปช็อต: อาจไม่จำเป็นต้องหยุดการทำงานของ VM ZFS ใช้ Copy-on-Write (COW) ซึ่งหมายความว่า Snapshots นั้นเกิดขึ้นทันทีและจะให้ภาพดิสก์ที่สมบูรณ์แก่คุณ ผู้ดูแลระบบบางคนใช้สิ่งนี้สำหรับฐานข้อมูล MySQL & PostGRES โดยไม่ต้องแช่แข็งฐานข้อมูล (เช่นไม่มีการหยุดทำงาน) แม้ว่าคนอื่นจะล้างตารางก่อน หากคุณจำเป็นต้องหยุดการทำงานของ VM การถ่ายภาพสแนปชอตของ ZFS ควรใช้เวลาสองสามวินาทีเท่านั้น
Stefan Lasiewski

Michael ฉันคิดว่า Daywalker อ้างถึง zvols ซึ่งคุณสามารถสร้างไฟล์ที่ทำหน้าที่เหมือนอุปกรณ์บล็อก ฉันจะใช้ NFS ไม่ใช่ zvols เดี่ยวสำหรับ VMs (ในกรณีนี้ดูเหมือนว่ามันเป็นแบบโลคัลดังนั้นเพียงแค่ไฟล์ในระบบไฟล์) ใช่แล้ว zvols นั้นเจ๋ง แต่มันก็เป็นภาวะแทรกซ้อนอีกชั้นหนึ่ง และสแน็ปช็อต ZFS เป็นไปตามคำจำกัดความที่สอดคล้องกัน ไม่ได้หมายความว่าระบบปฏิบัติการของ VM รู้ดีว่าจำเป็นต้องล้างข้อมูลลงดิสก์ แต่คุณจะได้รับความสอดคล้องของระบบไฟล์ในระดับเดียวกับถ้าคุณสูญเสียพลังงานบน VM
TheFiddlerWins

Dedup นั้นใช้ทรัพยากรมาก การใช้การบีบอัดไม่ใช่และ (สำหรับ VM) มีแนวโน้มที่จะทำให้คุณได้รับพื้นที่มากเนื่องจากช่องว่างในระบบไฟล์ VM
TheFiddlerWins

@ MichaelKjörlingเพียงแก้ไขโพสต์ของฉันโดยหวังว่าจะเข้าใจได้ดีขึ้น (รวมถึงความคิดเห็นจาก TheFiddlerWins และ Stefan Lasiewski
Daywalker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.