เป็นไปได้ไหมที่จะถอดและใส่ดิสก์ ZFS ซ้ำโดยไม่จำเป็นต้องใช้ resilver แบบเต็ม?


10

ฉันมีมิร์เรอร์พูล ZFS พร้อมไดรฟ์ทั้งหมดสี่ตัว ไดรฟ์สองตัวนั้นมีวัตถุประสงค์เพื่อใช้สำหรับการสำรองข้อมูลภายนอก ความคาดหวังของฉันคือหลังจากที่เริ่มการ resilvering ครั้งแรกฉันสามารถทำได้detachและหลังจากนั้นattachดิสก์และให้มันมีเพียง resilver ที่เพิ่มขึ้นเท่านั้น เนื้อหา

จะใช้วิธีการoffline/ onlineให้ฉันผลลัพธ์ที่ต้องการของการปรับปรุงดิสก์ - แทนที่จะสร้างมันใหม่อย่างเต็มที่? หรือเพื่อให้งานนี้เป็นไปตามที่คาดหวังฉันจะต้องทำบางสิ่งที่แตกต่างอย่างสิ้นเชิง - เช่นการใช้ดิสก์สำรองข้อมูลแต่ละตัวเป็นดิสก์พูล 1 ดิสก์และสsendแน็ปช็อตใหม่ล่าสุดทุกครั้งที่จำเป็นต้องปรับปรุง


5
-1 อย่าถอด / แนบไดรฟ์สำหรับการสำรองข้อมูลให้ใช้คำสั่งส่ง / รับตามที่ผู้ออกแบบ ZFS ตั้งใจไว้
Chris S

2
@ChrisS แทน -1 วิธีการเกี่ยวกับการเขียนคำตอบด้วยการอ้างอิงบางส่วน ดูเหมือนว่าคุณจะบอกว่าตัวเลือกเดียวสำหรับการสำรองข้อมูลคือสระว่ายน้ำออนไลน์ที่อื่น - ซึ่งจะเป็นการดีหากทราบว่าเป็นเรื่องจริง แต่ฉันคิดว่าไม่ใช่กรณีนี้
STW

1
ขออภัยฉันไม่ได้ตั้งใจที่จะเป็นพนักงานเย่อหยิ่ง แต่ข้อผิดพลาดเซิร์ฟเวอร์ควรจะเป็นสำหรับผู้ดูแลระบบมืออาชีพ (et al) เท่านั้น วิธีการสำรองข้อมูลของมิร์เรอร์มิเรอร์นั้นไม่สามารถจัดการได้ง่ายมีข้อผิดพลาดและไม่เป็นมืออาชีพจนไม่ควรถูกมองว่าเป็นวิธีสำรองข้อมูลที่ใช้งานได้จริง สิ่งที่ฉันแนะนำคือให้คุณฟอร์แมตไดรฟ์สำรองสองตัวด้วยระบบไฟล์อะไรก็ตามที่คุณต้องการและใช้zfs sendคำสั่งเพื่อทำการสำรองข้อมูลแบบเต็มหรือส่วนเพิ่มที่ถูกบันทึกลงในดิสก์สำรองหรือใช้zfs recvเพื่อสร้างดิสก์ซ้ำ ฉันขอแนะนำให้ใช้ซอฟต์แวร์บางอย่างเพื่อจัดการกระบวนการนี้
Chris S

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

คำตอบ:


14

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

หากคุณมีความสามารถสแน็ปช็อตและการส่งข้อมูลไปยังระบบระยะไกลนั้นเป็นวิธีการที่สะอาดและไม่ล่วงล้ำ ฉันคิดว่าคุณสามารถผ่านกระบวนการของการมีดิสก์พูลเดี่ยวโดยเฉพาะคัดลอกไปและส่งออก / นำเข้า zpool ... แต่มันไม่ได้สวยงามมาก


น่าเสียดายที่ฉันไม่สามารถใช้ snapshot-> send approach ได้เนื่องจากฉันไม่มีฮาร์ดแวร์หรือแบนด์วิดท์เพื่อใช้งานเซิร์ฟเวอร์ ZFS ตัวที่สองนอกสถานที่ อย่างไรก็ตามปรากฏว่าการใช้ออฟไลน์ / ออนไลน์จะใช้งานได้โดยมีการแลกเปลี่ยนว่าสถานะรายงานนั้นลดลง ฉันจะดูว่ามันเป็นอย่างไรในสัปดาห์หน้า
STW

1
เข้าใจ แต่การดึงดิสก์ที่เรียกใช้ออกจากระบบเป็นรูปแบบของการสำรองข้อมูลไม่ใช่วิธีการที่มั่นคง ความเสี่ยงของคุณเพิ่มขึ้นอย่างมากเมื่อคุณทำเช่นนี้
ewwhite

จุดที่ดีแผนของฉันคือการออฟไลน์หยุดชั่วคราวปลดถาด hot-swap ของพวกเขาแล้วให้เวลาสักครู่เพื่อให้แน่ใจว่าการหยุดเต็มก่อนที่จะดึงมันออกมาอย่างเต็มที่
STW

1
คุณสามารถใช้เซิร์ฟเวอร์เครื่องที่สองในสถานที่ (หรือแม้แต่อาร์เรย์ ZFS ลำดับที่ 2 ในเซิร์ฟเวอร์เดียวกัน) ใส่ hotswap bays ของคุณซิงค์ระหว่างมันและช่องหลักจากนั้นหมุนอาร์เรย์ ZFS สำรองทั้งหมดเข้า / ออกของเซิร์ฟเวอร์เป็นหน่วย
Dan Is Fiddling โดย Firelight

11

หลังจากการทดลองเพิ่มเติมฉันพบวิธีแก้ปัญหาที่เป็นธรรม แต่มันมาพร้อมกับการแลกเปลี่ยนที่สำคัญ ดิสก์ที่ได้รับการoffline'แต่ไม่แยกออกสามารถนำกลับมาออนไลน์ในภายหลังโดยมีการดำเนินการ resilvering ที่เพิ่มขึ้นเท่านั้น (" เมื่ออุปกรณ์ถูกนำมาออนไลน์ข้อมูลใด ๆ ที่ถูกเขียนลงในพูลจะถูกซิงโครไนซ์กับอุปกรณ์ใหม่ที่มีอยู่ ") ในการทดสอบของฉันสิ่งนี้จะทำให้เวลาในการ resverver สำหรับมิเรอร์ 3 ดิสก์ลดลงจาก 28 ชั่วโมงเป็น 30 นาทีในขณะที่ data-delta ประมาณ 40GB

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

ดังที่คนอื่น ๆ กล่าวถึงวิธีการโดยรวมนี้ไม่ดีนัก - การส่งสแนปชอตไปยังสระว่ายน้ำระยะไกลจะเหมาะสมกว่า แต่ในกรณีของฉันไม่สามารถทำได้

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

  • ออฟไลน์ดิสก์ในพูล: zpool offline pool disk
  • หมุนไดรฟ์ (หากต้องดึงทางกายภาพ): hdparm -Y /dev/thedisk
  • ปล่อยให้พูลอยู่ในสถานะเสื่อมโทรมด้วยไดร์ฟที่ออฟไลน์
  • เมื่อต้องการเพิ่มดิสก์กลับไปยังพูล: zpool online pool disk

และเนื่องจากสิ่งนี้ยังไม่ผ่านการทดสอบจึงมีความเสี่ยงที่การดำเนินการเดลต้า resilvering นั้นไม่ถูกต้อง พูล "สด" และ / หรือดิสก์ออฟไลน์อาจประสบปัญหา ฉันจะอัปเดตหากเกิดขึ้นกับฉัน แต่ตอนนี้จะทดลองด้วยวิธีนี้


1
หากผู้กู้จะแนะนำข้อผิดพลาดของข้อมูลสิ่งเหล่านี้จะหายไปเองโดยอัตโนมัติเมื่อเวลาผ่านไป
the-wabbit

ฉันตระหนักถึงคุณค่าของการขัดผิว ฉันรอจนกว่าจะประสบความสำเร็จในการขัดออฟไลน์และนำดิสก์สำรองออก
STW

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

ฉันจะเถียงกับการหมุนไดรฟ์ทั้งหมดในอาเรย์เนื่องจากการเคลื่อนย้ายสามารถสร้างความเสียหายได้ช้า ฉันจะไม่หมุนแม้ว่าจะมีไดรฟ์อยู่ในสถานที่ก็ตาม
Costin Gușă

2

อัปเดตเมื่อวันที่ 15 ตุลาคม 2558: วันนี้ฉันค้นพบzpool splitคำสั่งซึ่งแยกพูลใหม่ (ด้วยชื่อใหม่) ออกจากพูลที่มีอยู่ splitสะอาดกว่าofflineและdetachมากเนื่องจากพูลทั้งสองนั้นสามารถมีอยู่ (และแยกออกจากกัน) ในระบบเดียวกัน พูลใหม่ยังสามารถทำความสะอาดได้ (และถูกต้อง) export[ed]ก่อนที่จะถอดปลั๊กออกจากระบบ

(โพสต์ต้นฉบับของฉันดังต่อไปนี้ด้านล่าง)

คำเตือน! ความคิดเห็นต่างๆในหน้านี้บ่งบอกถึงความเป็นไปได้ที่zpool detachไดรฟ์(หรืออาจจะ) จากนั้นก็จะทำการติดตั้งไดรฟ์อีกครั้งและเข้าถึงข้อมูลที่มีอยู่

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

ดังนั้นสำหรับฉันมันดูเหมือนจะdetachทำลายล้างมากกว่าdestroyที่ฉันเชื่อว่าzpool importสามารถกู้คืนสระว่ายน้ำที่ถูกทำลาย!

detachคือไม่umount , มิได้zpool export , มิได้zpool offline

ในการทดลองของฉันถ้าฉันzpool offlineอุปกรณ์ก่อนแล้วzpool detachอุปกรณ์เดียวกันส่วนที่เหลือของสระลืมอุปกรณ์ที่มีอยู่ แต่เนื่องจากอุปกรณ์ตัวเองได้offline[d]ก่อนที่มันจะเป็นอุปกรณ์ที่ตัวเองไม่เคยมีการแจ้งเตือนของdetach[ed] detachดังนั้นอุปกรณ์ยังคงมีข้อมูลกลุ่มและสามารถย้ายไปยังระบบอื่นแล้วimport[ed](ในสถานะเสื่อมโทรม)

สำหรับการป้องกันเพิ่มเติมdetachคุณสามารถถอดปลั๊กอุปกรณ์ออกจากofflineคำสั่งได้ก่อนที่จะออกdetachคำสั่ง

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


0

ในเครื่องเดียวกันคุณลองสร้างพูลใหม่ด้วยไดรฟ์ 2 ตัวในมิรเรอร์หรือไม่? จากนั้นสร้างสแน็ปช็อตในพูลการทำงานของคุณจากนั้นส่งสแน็ปช็อตนั้นไปยังพูลใหม่ทำซ้ำจากนั้นสแน็ปช็อตครั้งต่อไปจะเพิ่มขึ้น สิ่งนี้ไม่เหมือนกันกับ "การส่งข้อมูลไปยังระบบรีโมต" เนื่องจากเป็นพูลภายในระบบ / เซิร์ฟเวอร์ / เครื่องเดียวกัน ด้วยการตั้งค่านี้คุณยังคงสามารถใช้งาน zpool split / offline / detach / attach ได้ แต่คุณทำได้เฉพาะใน pool ที่สอง (copy) และไม่ได้อยู่ใน pool source

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.