หากคุณตัดสินใจใช้ ZFS กับอุปกรณ์จัดเก็บข้อมูลของคุณแล้ว ยินดีด้วย! คุณกำลังใช้หนึ่งในระบบไฟล์ที่ซับซ้อนและเต็มไปด้วยฟีเจอร์มากที่สุดในโลก และหากคุณเคยตัดสินใจที่จะจัดเก็บข้อมูลระยะยาว เช่น รูปภาพและวิดีโอของครอบครัว ให้พิจารณา ZFS อย่างจริงจัง ในการตั้งค่าซ้ำซ้อน เช่น ฮาร์ดไดรฟ์ที่ทำมิเรอร์ 4 ตัว รับประกันได้อย่างแน่นอนว่าคุณจะไม่สูญเสียข้อมูลแม้แต่นิดเดียวเนื่องจากการเน่าของบิตหรือการจัดเก็บข้อมูลในรูปแบบอื่นๆ ที่เสื่อมโทรมเมื่อเวลาผ่านไป ข้อผิดพลาดของคอมพิวเตอร์ และอื่นๆ ZFS สามารถรักษาและกู้คืนข้อมูลได้โดยอัตโนมัติ อัลกอริทึมที่ซับซ้อน แฮช และแผนผังของ Merkle รับประกันความสมบูรณ์ของข้อมูล
อย่างไรก็ตาม ในบทช่วยสอนนี้ เหตุใด ZFS จึงเป็นตัวเลือกที่ดีที่สุดสำหรับการเก็บข้อมูลระยะยาวไม่ครอบคลุม เรากำลังพูดถึงสิ่งที่สแนปชอตและโคลนสามารถทำอะไรให้คุณได้
สแนปชอตและโคลนของ ZFS คืออะไร
สแนปชอตเป็นเพียงภาพที่ชัดเจนของสถานะข้อมูลของคุณ ณ จุดใดเวลาหนึ่ง ตัวอย่างเช่น สมมติว่าคุณกำลังทำงานบนเว็บไซต์ที่ซับซ้อน คุณเก็บโค้ด ฐานข้อมูล และรูปภาพทั้งหมดไว้ในชุดข้อมูล ZFS ของคุณ คุณเปลี่ยนการออกแบบของเว็บไซต์ แก้ไขรูปภาพ เปลี่ยนขนาดเลย์เอาต์บางส่วน และแก้ไขโค้ดบางส่วนเพื่อให้ทั้งหมดนี้เหมาะสม หากคุณต้องการเปลี่ยนกลับเป็นการออกแบบก่อนหน้า คุณจะต้องเปลี่ยนกลับการเปลี่ยนแปลงเหล่านั้นทีละรายการ ด้วย ZFS คุณสามารถถ่ายภาพสแน็ปช็อตของการออกแบบปัจจุบันของคุณ ทำการเปลี่ยนแปลงทั้งหมดที่คุณต้องการ และหากคุณไม่พอใจกับการออกแบบใหม่ ให้ย้อนกลับไปที่สแนปชอตก่อนหน้า และใช่ มันเป็นความจริง มี Git, GitHub และแม้แต่โปรแกรมแก้ไขโค้ดบางตัวที่มีความสามารถในการถ่ายภาพสแนปชอตและย้อนกลับ แต่ด้วย ZFS ก็มีคุณสมบัติดังต่อไปนี้เช่นกัน:
- สแนปชอตเป็นแบบสากล พวกเขาสร้างสแนปชอตของข้อมูลทั้งหมดที่รวมอยู่ในโปรเจ็กต์ของคุณ
- สแนปชอตและการย้อนกลับเกือบจะในทันที ไม่ว่าโปรเจ็กต์ของคุณจะใหญ่แค่ไหน (แม้ว่าจะมีหลายร้อยกิกะไบต์)
ไม่มีการจำกัดจำนวนสแนปชอต คุณสามารถมี “การออกแบบ 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
ในตัวอย่างนี้ ชื่อของชุดข้อมูลคือ 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
วิธีลบโคลน:
sudo zfs destroy data/clone3
และคุณยังสามารถทำสำเนาสแน็ปช็อตได้
sudo zfs snapshot data/clone2@snap_of_clone
ในอนาคต เมื่อคุณต้องการจดจำสแน็ปช็อตและโคลนทั้งหมดที่คุณสร้างขึ้น ให้ใช้:
zfs list -t all
บทสรุป
ซึ่งครอบคลุมการดำเนินการพื้นฐานทั้งหมดที่คุณสามารถทำได้ด้วยสแน็ปช็อตและโคลนของ ZFS อาจเป็นประโยชน์ที่จะรู้ว่าชุดข้อมูลแต่ละชุดมีไดเร็กทอรีที่ซ่อนอยู่ภายในที่เรียกว่า “.zfs” ด้วยคำสั่งเช่น ls /data/.zfs/snapshot/snap1/
คุณสามารถดูสถานะของไฟล์ได้ในสแนปชอต เนื่องจากมันทำหน้าที่เหมือนไดเร็กทอรีปกติ (อ่านอย่างเดียว) คุณจึงคัดลอกไฟล์แต่ละไฟล์จากสแนปชอตได้ในกรณีที่คุณไม่จำเป็นต้องเปลี่ยนสแนปชอตทั้งหมดกลับคืนมา