ZFS: การลบไฟล์ออกจากสแน็ปช็อตหรือไม่


10

ว่าฉันมีชุดข้อมูลที่มี 100 snapshots และต้องการrm -rfทุกโฟลเดอร์ชื่อ "แคช" ในทุก snapshots

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

มีวิธีการแบบกึ่งอัตโนมัติใด ๆ ที่ทำเช่นนั้น? มีบางรายการที่ล้อมรอบรายการ zfs -t snapshot, zfs โคลน, ส่งเสริม zfs, จัดทำ snapshot zfs หรือไม่

(การโพสต์ข้ามจาก/superuser/313197เนื่องจากฉันเห็นว่ามีสิ่ง ZFS มากกว่า)


3
โปรดอย่า crosspost แต่รอให้คำถามของคุณถูกโยกย้าย
สเวน

นอกจากนี้ฉันไม่แน่ใจว่าเป็นไปได้ทั้งหมด: Snapshots เป็นแบบอ่านอย่างเดียวและหากคุณใช้คู่โคลน / เลื่อนระดับคุณจะย้อนกลับการพึ่งพาระหว่างสแนปชอตโคลนและชุดข้อมูล "HEAD" ซึ่งไม่น่าจะเป็นสิ่งที่คุณ ต้องการ. ดูเอกสารได้ที่นี่: download.oracle.com/docs/cd/E19253-01/819-5461/gbcxz/index.html
Sven

ฉันจะรอการโยกย้าย แต่ดูเหมือนจะเป็นคำถาม ZFS ใน SU อย่างยุติธรรมดังนั้นฉันจึงสงสัยว่ามันจะถูกย้ายโดยอัตโนมัติ ... มันพอดีในทั้งสองแห่งดังนั้นฉันจึงทำตามคำแนะนำของเมตาว่าดีกับการข้ามหรือไม่ -posting
Tino Didriksen

@TinoDidriksen คุณสามารถให้การอ้างอิงถึงโพสต์เมตาที่ได้โปรด? ฉันอยากเห็นมัน ขอบคุณ
ตี

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

คำตอบ:


9

สแนปชอตเป็นแบบอ่านอย่างเดียว หากคุณต้องการโฟลเดอร์เหล่านั้นหายไปคุณต้องลบภาพรวมทั้งหมด

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


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

Dedupe ช่วยคุณได้ แต่นั่นถูกต้อง ฉันค่อนข้างแน่ใจว่าไม่มีวิธีใด ๆ ในการปรับเปลี่ยนสแนปชอตเหล่านั้นตามที่เขาต้องการ
Chris S

ฉันมีทั้ง gzip-1 การบีบอัดและการขจัดข้อมูลซ้ำซ้อนดังนั้นการคัดลอกข้อมูลที่เหมือนกันจะใช้พื้นที่การทำบัญชีเท่านั้น แต่แน่นอนว่าฉันต้องการวิธีหลีกเลี่ยงการทำสำเนาเลย
Tino Didriksen

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

@SvenW หลังจากอ่านคำถามอีกครั้งฉันเห็นว่าเขากำลังทำเช่นนี้เพื่อพยายามประหยัดพื้นที่ ซึ่งคำตอบของฉันไม่ได้ช่วยอะไรนอกจากว่าเขาจะย้ายไฟล์ tar ออกจากคอมพิวเตอร์ซึ่งเขาสามารถส่งออกสแน็ปช็อตต่อไปได้ ดูเหมือนว่าเขาจะติดอยู่รอบ ๆ
Chris S

14

คุณสามารถลองต่อไปนี้:

  1. โคลนสแน็ปช็อตที่เก่าที่สุดในระบบไฟล์ใหม่ (เรียกว่าfsnew)
  2. เลื่อนระดับโคลน ( fsnew) เพื่อให้คุณทำลายสแนปชอตที่ระบบไฟล์ใช้
  3. ลบไฟล์ที่ละเมิด
  4. fsnewสร้างภาพรวมของ

ตอนนี้ foreach snapshot แต่ละครั้งrsyncด้วยการ--inplaceตั้งค่าสถานะจาก snapshot เพื่อ fsnew ข้ามผ่านแฟ้มที่คุณไม่ต้องการ --inplaceธงช่วยลดจำนวนของการเขียนและช่วยให้ภาพรวมที่มีขนาดเล็ก

  1. fsnewสร้างภาพรวมของ
  2. ทำลายภาพรวมดั้งเดิม

เมื่อดำเนินการเสร็จแล้วคุณควรมีสแน็ปช็อตfsnewที่สอดคล้องกับสแน็ปช็อตจากระบบไฟล์ดั้งเดิมโดยลบไฟล์ที่ละเมิดออก

หากคุณมีพื้นที่บนไดรฟ์คุณอาจต้องการข้ามคำสั่ง "ทำลาย" จนกว่าคุณจะได้สคริปต์ทำงานได้


คุณจะต้องผ่าน--deleteตัวเลือกไปยังrsyncมิฉะนั้นคุณจะสูญเสียการลบที่เกิดขึ้นระหว่างสแนปชอต มิฉะนั้นนี่เป็นความคิดที่ดี
Tobia

1
  1. ทำลายภาพรวมดั้งเดิม

คุณไม่สามารถทำลาย orig snapshot หลังจากเลื่อนขั้นการกระทำ ถ้าทำลายชุดข้อมูลหลักเท่านั้น

ตัวอย่าง (หลังจากโปรโมตโคลน)

zfs ทำลาย media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

ไม่สามารถทำลาย 'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y': สแนปชอตมีโคลนนิ่งที่ขึ้นต่อกัน

ใช้ '-R' เพื่อทำลายชุดข้อมูลต่อไปนี้:

media1/media/backup@auto-20190531.1622-2y

media1 / สื่อ / การสำรองข้อมูล

zfs ทำลาย media1/media/backup@auto-20190531.1622-2y

zfs ทำลาย media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y

ไม่สามารถทำลาย 'media1/cheers/backup-auto-20190530.2105-2y-clone@auto-20190530.2105-2y': สแนปชอตมีโคลนนิ่งที่ขึ้นต่อกัน

ใช้ '-R' เพื่อทำลายชุดข้อมูลต่อไปนี้:

media1 / สื่อ / การสำรองข้อมูล

หลังจากการดำเนินการ "ตลก" ฉันต้องทำสิ่งต่อไป

zfs snapshot media1 / media / backup @ 1

zfs ส่ง media1 / media / backup @ 1 | pv | zfs ได้รับ media1 / media / backupnew

zfs ทำลาย media1 / media / backup @ 1

zfs ทำลาย -R media1 / media / backup

zfs เปลี่ยนชื่อ media1 / media / backupnew media1 / media / backup

หรือกลับด้านหนึ่ง zfs ส่งเสริม media1 / media / backup และหลังจากนั้นลบ clone anuway เพราะคุณจะมีสแนปชอตขนาดใหญ่ในตำแหน่ง src))

เฉพาะ rsync / backup เท่านั้นที่สามารถช่วยเหลือได้ที่นี่


-3

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


3
ZFS snapshot เป็นแบบอ่านอย่างเดียว คุณไม่สามารถลบได้
สเวน

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