Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีใช้ ZFS Snapshots และ Clones

วิธีใช้ ZFS Snapshots และ Clones

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

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

สแนปชอตและโคลนของ ZFS คืออะไร

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

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

วิธีใช้ ZFS Snapshots และ Clones

ไม่มีการจำกัดจำนวนสแนปชอต คุณสามารถมี “การออกแบบ 1” “การออกแบบ 2” และ “การออกแบบ 3” และสลับไปมาระหว่างสิ่งเหล่านี้ได้อย่างอิสระ ทำการเปลี่ยนแปลง และสร้างสแนปชอตใหม่:“การออกแบบ 2 – ปรับปรุง”

โคลน

แม้ว่าสแนปชอตจะเป็นสถานะข้อมูลที่ถูกตรึงไว้โดยพื้นฐานซึ่งคุณสามารถกลับไปได้ แต่โคลนก็เหมือนกับกิ่งก้านที่เริ่มต้นจากจุดร่วม เพื่อให้เข้าใจดีขึ้น ลองนึกภาพสถานการณ์นี้:คุณสร้างวิดีโอสำหรับแคมเปญโฆษณา จากนั้น ให้คุณถ่ายภาพสแนปชอตของวิดีโอนี้ (อันที่จริงของชุดข้อมูล ZFS ที่คุณจัดเก็บวิดีโอของคุณ) ตอนนี้ คุณโคลนสแนปชอตนี้สามครั้ง คุณมอบ "Clone 1" ให้กับพนักงานคนหนึ่ง "Clone 2" ให้กับพนักงานอีกคนและ "Clone 3" ให้กับพนักงานคนที่สาม ตอนนี้พวกเขาแต่ละคนสามารถทำงานในพื้นที่ของตนเองและทำการเปลี่ยนแปลงได้ตามต้องการ

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

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

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

คำสั่งที่ใช้ในการทำงานกับ ZFS Snapshots

แม้ว่าลีนุกซ์รุ่นอื่นๆ สามารถใช้ระบบไฟล์/ตัวจัดการโวลุ่มนี้ได้ แต่ Ubuntu ก็ให้การสนับสนุนที่ดีที่สุดสำหรับ ZFS จนถึงปัจจุบัน

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

หลังจากที่คุณติดตั้งแพ็คเกจที่เหมาะสมและสร้างชุดข้อมูล ZFS ชุดแรก นี่คือวิธีสร้างสแน็ปช็อต

ขั้นแรก ให้ค้นหาชื่อชุดข้อมูล ZFS ที่คุณต้องการทำสแนปชอต

zfs list

วิธีใช้ ZFS Snapshots และ Clones

ในตัวอย่างนี้ ชื่อของชุดข้อมูลคือ data และชื่อของสแน็ปช็อตจะเป็น snap1 . แทนที่ค่าเหล่านี้ในคำสั่งถัดไปด้วยค่าที่ใช้ในกรณีของคุณ หากต้องการสร้างสแน็ปช็อต ให้ป้อน:

sudo zfs snapshot data@snap1

หากในกรณีของคุณชุดข้อมูลมีชื่อว่า videos และคุณต้องการเรียกสแนปชอตของคุณว่า first คำสั่งจะเป็น:

sudo zfs snapshot videos@first

หากต้องการย้อนกลับการเปลี่ยนแปลงและกู้คืนชุดข้อมูลของคุณเป็นเนื้อหาที่แน่นอนเมื่อคุณถ่ายภาพสแน็ปช็อต ให้ใช้:

sudo zfs rollback data@snap1

เมื่อคุณไม่ต้องการสแนปชอตอีกต่อไป ให้ลบด้วย:

sudo zfs destroy data@snap1

คำสั่งที่ใช้ในการทำงานกับ ZFS Clones

สมมติว่าคุณมีสแนปชอตชื่อ “data@snap1” ให้โคลนด้วย:

sudo zfs clone data@snap1 data/clone1

วิธีใช้ ZFS Snapshots และ Clones

วิธีลบโคลน:

sudo zfs destroy data/clone3

และคุณยังสามารถทำสำเนาสแน็ปช็อตได้

sudo zfs snapshot data/clone2@snap_of_clone

ในอนาคต เมื่อคุณต้องการจดจำสแน็ปช็อตและโคลนทั้งหมดที่คุณสร้างขึ้น ให้ใช้:

zfs list -t all

วิธีใช้ ZFS Snapshots และ Clones

บทสรุป

ซึ่งครอบคลุมการดำเนินการพื้นฐานทั้งหมดที่คุณสามารถทำได้ด้วยสแน็ปช็อตและโคลนของ ZFS อาจเป็นประโยชน์ที่จะรู้ว่าชุดข้อมูลแต่ละชุดมีไดเร็กทอรีที่ซ่อนอยู่ภายในที่เรียกว่า “.zfs” ด้วยคำสั่งเช่น ls /data/.zfs/snapshot/snap1/ คุณสามารถดูสถานะของไฟล์ได้ในสแนปชอต เนื่องจากมันทำหน้าที่เหมือนไดเร็กทอรีปกติ (อ่านอย่างเดียว) คุณจึงคัดลอกไฟล์แต่ละไฟล์จากสแนปชอตได้ในกรณีที่คุณไม่จำเป็นต้องเปลี่ยนสแนปชอตทั้งหมดกลับคืนมา