Score:1

ฉันสามารถลบดิสก์ออกจากแถบ ZFS ได้หรือไม่

ธง me

ฉันมีพูลขนาดใหญ่ในระบบ ระบบเป็นโหนดหน่วยเก็บข้อมูลในคลัสเตอร์ Hadoop ดังนั้น Stripe จึงไม่เป็นไร เพราะหากเราสูญเสีย Local Pool เราสามารถสร้างข้อมูลใหม่ในระดับคลัสเตอร์ได้

ดิสก์มีปัญหา: ฉันสามารถบอก ZFS ให้ลองย้ายบล็อกพื้นที่เก็บข้อมูลออกจากอุปกรณ์เพื่อที่ฉันจะได้ลบออก หรือฉันต้องลบพูลทั้งหมดแล้วสร้างใหม่ ตามหลักการแล้ว ฉันสามารถดึงดิสก์ออก และเพิ่มดิสก์ใหม่ในภายหลังเมื่อฉันเปลี่ยนฮาร์ดแวร์ที่ล้มเหลว

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

> รายการ sudo zpool
ขนาดชื่อ ALLOC ฟรี CKPOINT ขยาย Z FRAG CAP DEDUP HEALTH ALTROOT
ถัง 19.9T 8.09T 11.8T - - 15% 40% 1.00x ลดลง -
> สถานะ sudo zpool
  สระว่ายน้ำ: ถัง
 สถานะ: เสื่อมโทรม
สถานะ: อุปกรณ์อย่างน้อยหนึ่งเครื่องพบข้อผิดพลาดที่ส่งผลให้ข้อมูล
        คอรัปชั่น. แอปพลิเคชันอาจได้รับผลกระทบ
การดำเนินการ: กู้คืนไฟล์ที่มีปัญหาหากเป็นไปได้ มิฉะนั้นให้คืนค่า
        พูลทั้งหมดจากการสำรองข้อมูล
   ดู: http://zfsonlinux.org/msg/ZFS-8000-8A
  สแกน: สครับซ่อมแซม 0B ใน 0 วัน 02:45:39 โดยมีข้อผิดพลาด 0 รายการในวันอาทิตย์ที่ 9 ม.ค. 03:09:41 2022
การกำหนดค่า:

        ชื่อ รัฐ อ่าน เขียน CKSUM
        ถังเสื่อมสภาพ 0 0 0
          ata-ST2000DM001-1ER164_Z4Z0xxxx ออนไลน์ 0 0 0
          ata-ST2000DM001-1ER164_Z4Z0xxxx ลดลง 96 0 0 มีข้อผิดพลาดมากเกินไป
          scsi-35000cca22dc7xxxx ออนไลน์ 0 0 0
          scsi-35000cca22dc7xxxx ออนไลน์ 0 0 0
          scsi-35000cca22dc8xxxx ออนไลน์ 0 0 0
          scsi-35000cca22dc8xxxx ออนไลน์ 0 0 0
          scsi-35000cca22dc7xxxx ออนไลน์ 0 0 0
          scsi-35000cca22dc7xxxx ออนไลน์ 0 0 0
          scsi-35000cca22dc7xxxx ออนไลน์ 0 0 0
          ata-ST2000DM001-1ER164_Z4Z3xxxx ออนไลน์ 0 0 0
          ata-ST2000NM0011_Z1P3xxxx ออนไลน์ 0 0 0

ฉันคาดการณ์ว่าคำตอบคือเมื่อฉันพร้อมที่จะเปลี่ยนดิสก์ที่ล้มเหลว ฉันต้องทำลายพูลก่อน เปลี่ยนดิสก์ และสร้างพูลใหม่

Score:0
ธง ro

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

หากคุณใช้ Solaris หรือใช้ OpenZFS 0.8 หรือใหม่กว่า คุณควรจะสามารถเรียกใช้:

zpool ลบถัง ata-ST2000DM001-1ER164_Z4Z0xxxx

สิ่งนี้อาจไม่ทำงาน! และถ้าเป็นเช่นนั้น อาจทำให้ประสิทธิภาพการทำงานลดลงอย่างถาวรสำหรับพูล

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

อย่างน้อยบน OpenZFS มีข้อจำกัดหลายประการว่าเมื่อใดที่คุณสามารถลบ vdevs ได้ คุณสามารถลบ vdev ได้ก็ต่อเมื่อพูลของคุณประกอบด้วย vdevs ดิสก์เดียวและ/หรือ vdevs แบบมิเรอร์เท่านั้น กลุ่มของคุณมีคุณสมบัติเนื่องจากคุณใช้ vdevs ดิสก์เดี่ยวโดยเฉพาะ แต่ถ้าคุณมี raidz, draid หรือ vdevs ที่จัดสรรพิเศษบน OpenZFS คุณจะไม่สามารถทำได้

ข้อแม้ประการสุดท้ายคือการลบ vdev ออกจะทำให้ประสิทธิภาพการทำงานถาวรใน OpenZFS ลดลง OpenZFS จะบันทึกตารางภายในสำหรับบล็อกทั้งหมดที่เคยอยู่ในดิสก์ที่ถูกลบออก ตราบเท่าที่บล็อกเหล่านั้นมีอยู่ในพูลจากจุดนั้น การเข้าถึงทั้งหมดจะต้องใช้การค้นหาทางอ้อมผ่านตารางการแมปใหม่ สิ่งนี้สามารถชะลอการเข้าถึงแบบสุ่มได้อย่างมาก ฉันไม่รู้เกี่ยวกับ Solaris ZFS internals มากพอที่จะบอกได้ว่ามันทำอะไรที่คล้ายกันหรือไม่

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

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

โดยทั่วไปแล้ว ZFS อาจเปราะบางมากเมื่อใช้ตามที่คุณต้องการกับ vdevs ดิสก์เดียวที่ไม่ซ้ำซ้อน มีเรื่องตลกเก่าๆ ที่ว่าเลขศูนย์ใน RAID0 คือคุณต้องใส่ใจข้อมูลของคุณมากแค่ไหน พูล ZFS ของดิสก์เดี่ยว vdevs โดยพื้นฐานแล้วจะเหมือนกับ RAID0 จากมุมมองด้านความปลอดภัยข้อมูล ความล้มเหลวของดิสก์เดียวอาจทำให้คุณสูญเสียข้อมูลทั้งหมด แม้ว่าคุณจะสามารถแทนที่ข้อมูลได้ แต่คุณต้องคำนึงถึงเวลาที่ต้องใช้ในการแทนที่ข้อมูลนั้นด้วย หากคุณสามารถจ่ายค่าปรับด้านประสิทธิภาพโดยแลกกับความปลอดภัยของข้อมูล ลองพิจารณาใส่ดิสก์ของพูลในอนาคตของคุณลงใน Raidz2 vdevs หากคุณสามารถแลกเปลี่ยนพื้นที่ดิสก์ที่ใช้งานได้เพื่อความปลอดภัยของข้อมูล (และอาจเพิ่มประสิทธิภาพการอ่าน) ให้พิจารณาใส่ดิสก์ของพูลในอนาคตของคุณลงในมิเรอร์ vdevs

โพสต์คำตอบ

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