Score:2

เครือข่ายความเร็วสูงเขียนด้วยพื้นที่เก็บข้อมูลขนาดใหญ่

ธง pf

ฉันมี NAS ที่ใช้ Samba พร้อมพูล 20T ZFS พร้อม Raid1 vdev หนึ่งตัวพร้อมไดรฟ์สนิมหมุนสองตัว ฉันมี RAM 16G ในเครื่องตอนนี้ พื้นที่เก็บข้อมูลนี้ใช้สำหรับการสำรองข้อมูลถาวรของวิดีโอฟุตเทจที่เพิ่มขึ้นอย่างต่อเนื่อง เขียนครั้งเดียว อ่านครั้งเดียวเพื่อประมวลผล จากนั้นอาจสำรองข้อมูลคืนค่า

ฉันส่งไฟล์ 40GiB ไปยัง NAS นี้เป็นประจำ ฉันจะอัปเกรดเครือข่ายกิกะบิตเป็น 10GbE เพื่อทำให้กระบวนการนี้เจ็บปวดน้อยลง อย่างไรก็ตาม ฉันสงสัยว่าฉันจะถูกจำกัดด้วยความเร็วในการเขียนของไดรฟ์พื้นฐาน

ความเข้าใจของฉันคือ ZIL และ SLOG เร่งการเขียนแบบซิงโครนัสเท่านั้น ดังนั้นการเพิ่ม nvme SSD เนื่องจาก SLOG จะไม่ส่งผลกระทบต่อกรณีการใช้งานของฉัน เนื่องจากฉันเชื่อว่า Samba ใช้การเขียนแบบอะซิงโครนัสเป็นค่าเริ่มต้น

ฉันไม่แน่ใจว่าการกำหนดค่า samba สำหรับการเขียนแบบซิงโครนัสและการเพิ่ม SLOG บน nvme SSD จะทำสิ่งที่ฉันต้องการได้หรือไม่ ฉันเข้าใจว่าสิ่งนี้มาพร้อมกับความเสี่ยงที่ข้อมูลจะสูญหายหากไดรฟ์ทำงานล้มเหลวหรือไฟดับสิ่งนี้ยอมรับได้เนื่องจากฉันเก็บไฟล์ไว้ในเครื่องต้นทางนานพอที่จะถ่ายโอนใหม่ได้ในกรณีที่ข้อมูลสูญหายในระยะเวลาอันใกล้ การสึกหรอของ SSD เป็นเรื่องที่น่ากังวล แต่ไดรฟ์ทั่วไปมีขนาด 300 TBW หรือประมาณนั้น ซึ่งเพียงพอที่จะเติมเต็ม NAS ที่ไม่เคยลบของฉันได้ถึง 15 เท่า หรือใน 75 ปีที่อัตราการสร้างข้อมูลปัจจุบัน ฉันโอเคกับสิ่งนั้นและเพื่อ ซื้อ SSD ใหม่ ถ้า/เมื่อ SSD พัง นี่เป็นคำเตือนที่ยอมรับได้ โดยปกติฉันจะลองและเปรียบเทียบ แต่ในปัจจุบันการขาดแคลนทุกอย่างฉันต้องการทราบล่วงหน้าว่าฉันต้องซื้ออะไรสำหรับสิ่งนี้

ฉันรู้ว่าฉันสามารถเพิ่ม Raid 1 vdevs ให้กับพูลเพื่อรับ Raid 10 Pool ได้ แต่มันแพงเกินไป แชสซีของ Midtower ไม่สามารถรองรับไดร์ฟจำนวนมากขนาดนั้น มันจัดสรรพูลพร้อมกับไดร์ฟที่มีอยู่มากเกินไป และจะใช้พลังงานมากกว่า เวลาที่จะทำให้สนิมหมุน

ตัวเลือกของฉันในการบรรลุความเร็วในการเขียนเกิน 10Gbps ไปยังพูล zfs นี้สำหรับข้อมูลมูลค่าอย่างน้อย 40GiB นอกเหนือจากการเพิ่มสนิมที่หมุนวนให้กับพูลในรูปแบบ Raid 10 มีอะไรบ้าง

Score:3
ธง us

โหมดการเขียนแบบซิงโครนัสช่วยให้มั่นใจได้ว่าการเขียนจะจบลงในตำแหน่งถาวรในทันที ด้วยการเขียนแบบอะซิงโครนัส ข้อมูลจะถูกแคชใน RAM และการเรียกใช้การเขียนจะเสร็จสิ้นทันที ระบบไฟล์จะกำหนดเวลาการเขียนจริงไปยังตำแหน่งสุดท้าย (ฮาร์ดดิสก์)

ในกรณีของ ZFS จุดประสงค์ของ ZIL / SLOG คือการทำหน้าที่เป็นที่เก็บข้อมูลถาวรชั่วคราวที่รวดเร็ว ซึ่งอนุญาตให้ใช้โหมดซิงโครนัสได้ นั่นคือทำให้ไคลเอ็นต์การเขียนมั่นใจว่าการเขียนนั้นถือเป็นที่สิ้นสุด มิฉะนั้นระบบไฟล์จะต้องเขียนบล็อกลงในฮาร์ดดิสก์โดยตรง ซึ่งทำให้โหมดซิงโครนัสทำงานช้า

ในกรณีของคุณ หากคุณต้องการให้แน่ใจว่าเขียนข้อมูลได้เต็มความเร็ว 40 GB คุณควรเพิ่มขนาด RAM เพื่อให้ครอบคลุมขนาดของไฟล์

อย่างไรก็ตาม เนื่องจาก FS เริ่มเขียนไปยังฮาร์ดดิสก์ทันที คุณไม่จำเป็นต้องมีหน่วยความจำ 40GB เพื่อให้เขียนได้เต็มความเร็ว ตัวอย่างเช่น เมื่อไคลเอนต์เขียนข้อมูล 20GB 10GB อาจอยู่ในแคช RAM และอีก 10GB ที่เหลืออยู่ในฮาร์ดไดรฟ์แล้ว

ดังนั้นคุณต้องทำการเปรียบเทียบเพื่อดูว่าคุณต้องการ RAM เท่าใดจึงจะเขียนได้เต็มความเร็ว

pf flag
ฉันคิดว่าบัฟเฟอร์การเขียนที่ใช้ RAM ถูกจำกัดไว้ที่บางขนาด คุณกำลังบอกว่า ZFS จะฮุบหน่วยความจำระบบทั้งหมดเป็นแคชการเขียนอย่างมีความสุขหรือไม่ ฟังดูน่าประหลาดใจสำหรับฉันเพราะอาจทำให้เกิดปัญหาด้านประสิทธิภาพได้ทุกประเภทหากคุณไม่ปล่อยให้ RAM เพียงพอสำหรับการเรียกใช้กระบวนการใหม่...
Score:2
ธง ca

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

หากคุณสามารถทนต่อการสูญเสียการเขียนได้ถึง 5 วินาที คุณสามารถกำหนดค่า ZFS เป็น ไม่สนใจ ซิงค์คำขอด้วยคำสั่ง zfs set sync=ปิดการใช้งานถัง

การบังคับให้เขียนทั้งหมดผ่าน SLOG แม้จะเขียนเร็วมากก็ตาม ไม่เคย เร็วกว่าการข้ามคำขอซิงค์ SLOG ไม่ใช่แคชการเขียนย้อนกลับแบบคลาสสิก ซึ่งจะดูดซับการเขียนเพื่อยกเลิกการจัดเตรียมไปยังระดับที่ช้าลง แต่เป็นวิธีที่ช่วยให้มีเวลาแฝงต่ำโดยการจัดเก็บการเขียนซิงค์ไว้ชั่วคราว (และ เท่านั้น พวกเขา) ในการจัดเก็บอย่างรวดเร็วระดับกลาง หลังจากนั้นไม่กี่วินาที การเขียนเดียวกันจะถูกถ่ายโอนจากหน่วยความจำหลักไปยังพูลหลัก SLOG จะไม่ถูกอ่านจนกว่าจะเกิดข้อขัดข้อง (และกู้คืน)

ที่กล่าวว่าด้วย vdev ที่ใช้ HDD เพียงตัวเดียว คุณจะไม่สามารถทำให้ลิงก์ 10 Gbs อิ่มตัวได้ สำหรับการเขียนอย่างต่อเนื่องที่ความเร็ว ~1 GB/s คุณต้องมี อย่างน้อย 10 HDD ใน Raidz2 หรือ 12+ HDD ใน Mirror+Striping หรือที่ดีไปกว่านั้น คุณต้องมีพูล SSD ทั้งหมด นี้ก่อนที่จะพิจารณาสิ่งที่เป็น บันทึกขนาด, การบีบอัดฯลฯ

แก้ไขเพื่อชี้แจงงาน SLOG:

เพื่อลดเวลาแฝงสำหรับการเขียนข้อมูลให้ตรงกัน ZFS ใช้สิ่งที่เรียกว่า ZFS Intent Log (ZIL) พูดโดยย่อ: ทุกครั้งที่ซิงค์เขียนมาถึง ZFS จะเขียนลงบนพื้นที่พูลชั่วคราวที่เรียกว่า ZIL ทันที การดำเนินการนี้ทำให้เขียนเพื่อส่งกลับทันที ทำให้แอปพลิเคชันการโทรดำเนินต่อไปได้ หลังจากผ่านไปไม่กี่วินาที ที่การทำธุรกรรม บันทึกใด ๆ ที่เขียนไปยัง ZIL จะได้รับการตอบกลับไปยังกลุ่มหลัก สิ่งนี้ไม่ ไม่ หมายความว่า ZIL ถูกอ่านในแต่ละคอมมิท แต่ข้อมูลที่เขียนมาจากแคช DRAM ARC หลัก กล่าวอีกนัยหนึ่ง ZIL คือประเภทของ "บันทึกล่วงหน้า" ซึ่งรับประกันการคงอยู่ของข้อมูลอย่างรวดเร็วสำหรับข้อมูลการซิงค์ที่ต้องเขียน

นี่หมายความว่าการเขียนแบบซิงโครไนซ์นั้นซ้ำกัน: พวกมันถูกเขียน ทั้งสอง ถึง ZIL และพูลหลัก เข้าสู่ SLOG (อุปกรณ์บันทึกแยกต่างหาก): อุปกรณ์ที่ทุ่มเทให้กับ ซิงค์เขียนเท่านั้น - เช่น: ปลดปล่อยพูลหลักจากทราฟฟิก ZIL SSD SLOG ที่รวดเร็วมีความสำคัญเนื่องจาก HDD ช้ามากสำหรับการเขียนซิงค์ SLOG ไม่ใช่แคชการเขียนย้อนกลับแบบคลาสสิกของคุณเนื่องจาก:

  • มันดูดซับเฉพาะการเขียนแบบซิงค์โดยไม่สนใจการเขียนปกติโดยสิ้นเชิง
  • มันทำซ้ำเฉพาะข้อมูลที่เป็น แคชไว้แล้วใน ARC.

ทั้งสองจุดรวมกันหมายความว่า SLOG ขนาดใหญ่โดยพื้นฐานแล้วสิ้นเปลือง เพราะต้องการเพียง 3 เท่าของขนาดสูงสุดของธุรกรรม ZFS กล่าวอีกนัยหนึ่ง SLOG ขนาด 2-4 GB ก็เพียงพอสำหรับกรณีส่วนใหญ่ โดย SLOG ที่ใหญ่กว่าจะมีประโยชน์ในการตั้งค่าเฉพาะเท่านั้น

SLOG ดังกล่าวเป็นกุญแจสำคัญในการให้เวลาแฝงที่ต่ำกว่าสำหรับการเขียนซิงค์แบบสุ่ม แต่ในขณะที่สามารถดูดซับการเขียนซิงค์ตามลำดับที่เพิ่มขึ้นเล็กน้อย แต่นี่ไม่ใช่หน้าที่หลัก กล่าวอีกนัยหนึ่ง คุณสามารถดู ZIL/SLOG เป็นส่วนถาวรของ ARC ข้อพิสูจน์คือคุณไม่สามารถคาดหวังที่จะเขียนข้อมูลเป็นสิบ GB และซ่อนความเร็วพูลหลักที่ช้าผ่าน SLOG เพราะนั่นหมายความว่าคุณมีข้อมูลสกปรกหลายสิบ GB อยู่แล้ว ภายใน ARC ที่ใช้ RAM ของคุณ

การตั้งค่า ซิงค์=ปิดใช้งาน สั่งให้ ZFS คุกคามการเขียนทั้งหมด แม้กระทั่งการซิงค์ เช่นเดียวกับการเขียนแบบ async ปกติ สิ่งนี้จะข้ามข้อมูล ZIL/SLOG และ หากคุณสามารถยอมรับหน้าต่างดาต้าลอส 5 วินาทีได้ มันคือการตั้งค่าที่เร็วกว่าที่คุณเคยทำได้ - แม้จะเทียบกับ SLOG ที่เร็วมากอย่าง Optane หรือ RAMdrive ก็ตาม สิ่งที่ดีเกี่ยวกับ ซิงค์=ปิดใช้งาน คือมันไม่ได้ปิดใช้งานการเขียนซิงค์สำหรับข้อมูลเมตาของ ZFS ดังนั้นจึงไม่ทำให้ระบบไฟล์ของคุณตกอยู่ในความเสี่ยง นี่ไม่ได้หมายความว่าคุณสามารถใช้งานได้เพียงเล็กน้อย: ตามที่ระบุไว้หลายครั้ง คุณควรแน่ใจว่าเข้าใจความหมายของมัน (คุณอาจสูญเสียวินาทีสุดท้ายของข้อมูลที่ไม่ได้ซิงก์ในกรณีที่เกิดการขัดข้อง/ไฟฟ้าดับ)

ในทางกลับกัน แคชการเขียนกลับที่ใช้ SSD แบบคลาสสิกเป็น lvmcache และ แคช สามารถ (มากหรือน้อย) ใช้แคช SSD หลายร้อย GB เพื่อปกปิดเวลาแฝง / ทรูพุตของพูลหลักได้อย่างมีประสิทธิภาพ - โดยเฉพาะเพราะพวกเขา เป็น แคชเขียนกลับเต็มเปี่ยมซึ่งไม่จำเป็นต้องมีข้อมูลอยู่ภายในหน่วยความจำหลัก (ตรงกันข้ามกับหน่วยความจำหลัก ล้างออกเอง ผ่านแคช SSD เหล่านี้)

เหตุผลเบื้องหลัง ZFS คือหน่วยความจำระบบหลัก (ขนาดใหญ่) คือแคชการอ่าน/เขียนจริงของคุณ โดย SLOG เป็นวิธีที่ทำให้มีเวลาแฝงต่ำกว่าสำหรับการเขียนซิงค์แบบสุ่ม

djdomi avatar
za flag
หรือเพียงแค่เพิ่ม SATA-SSD เป็นแคชประมาณ 500mb/s หรือ NVME เป็น 1gb/s++++++++
shodanshok avatar
ca flag
@djdomi ไม่ ตามที่อธิบายไว้ข้างต้น ไดรฟ์ SLOG คือ **ไม่ใช่** ไดรฟ์แคชการเขียนกลับ สำหรับสิ่งที่คุณแนะนำ เราควรใช้ 'lvmcache' หรือ 'bcache' โดยไม่เกี่ยวข้องกับ ZFS
djdomi avatar
za flag
ไม่ แต่ zil สามารถทำได้
shodanshok avatar
ca flag
@djdomi อีกครั้ง ไม่: ZIL เป็นบันทึกความตั้งใจของ ZFS และ SLOG เป็นเพียงอุปกรณ์ที่อุทิศให้กับหน้าที่ของ ZIL (แทนที่จะใช้พูลหลัก)
djdomi avatar
za flag
อย่างไรก็ตามมันถูกเรียก มันมีแคชการเขียนโดยกำเนิดบน Zfs และนั่นยังคงเป็นข้อเท็จจริงและสามารถใช้ ssd ได้
shodanshok avatar
ca flag
@djdomi ฉันขอแนะนำให้คุณอ่านเอกสารประกอบ ตัวอย่างเช่น: https://www.servethehome.com/what-is-the-zfs-zil-slog-and-what-makes-a-good-one/
pf flag
ห่วงโซ่ความคิดเห็นนี้อธิบายว่าทำไมฉันถึงถามคำถาม ในขณะที่ฉันค้นหาข้อมูลที่ขัดแย้งกันอยู่เสมอ และคู่มือที่ฉันอ่านก็ต้องการความชัดเจนเกี่ยวกับผลประโยชน์ที่คาดว่าจะได้รับในกรณีของฉัน ฉันชอบถ้าสามารถเคลียร์ความสับสนได้
shodanshok avatar
ca flag
@EmilyL. ฉันได้อัปเดตคำตอบแล้ว ลองดูสิ
pf flag
ฉันไม่เคยบอกว่าฉันมี Raidz Pool แต่ Pool ของฉันคือ Raid1 vdev หนึ่งตัว ฉันไม่ต้องการการเขียน 10Gbps ที่สม่ำเสมอ ฉันต้องการ 10Gbps สำหรับ 40GiB กลุ่มของฉันคือ 20T กับไดรฟ์สองตัว การได้รับความจุแบบนั้นด้วย SSD นั้นเกินงบประมาณ
shodanshok avatar
ca flag
คุณมี RAM ขนาด 40 GB หรือไม่? หากเป็นเช่นนั้น คุณสามารถ (ยกเลิก) ปรับแต่ง ZFS บังคับให้เก็บข้อมูลหลาย GB ไว้ใน ARC เป็นเวลานาน แต่สิ่งนี้จะแย่มากทั้งต่อความปลอดภัยของข้อมูลและประสิทธิภาพ (คุณจะต้องประสบปัญหา * หยุดทำงานนานหลายนาที* ในที่สุดเมื่อ ZFS ตัดสินใจล้างเพจสกปรกไปยังที่เก็บข้อมูลที่เสถียร) สำหรับปริมาณงานดังกล่าว ZFS ไม่ใช่ตัวเลือกที่เหมาะสม และ Raidz vs Mirror จะไม่เปลี่ยนแปลงอะไรเลย ฉันอยากจะลองใช้ 'lvmcache' ในโหมดเขียนกลับ แต่ในกรณีนี้ให้ระวังว่าอุปกรณ์แคชที่ผิดพลาดจะทำให้ข้อมูลสูญหาย (กล่าวคือ คุณต้องทำมิเรอร์อุปกรณ์แคชของคุณ)

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา