ฉันพยายามทำสำเนาวัวของบางไฟล์ / ไดเรกทอรี แต่หลายวิธีที่ฉันรู้ทั้งหมดดูเหมือนจะย่อยที่ดีที่สุด
ตัวอย่างเช่น btrfs สามารถด้วยการใช้งานการcp --reflink=auto
สร้างสำเนาของไฟล์ได้อย่างรวดเร็ว
สิ่งที่ฉันได้ลอง:
- Symlinks: ไม่ดี ไฟล์ที่ถูกเปลี่ยนชื่อลิงค์เสีย
- Hardlinks: ดีกว่า แต่ก็ยังไม่ดี การเปลี่ยนแปลงในไฟล์หนึ่งจะเป็นการเปลี่ยนแปลงไฟล์อื่นและฉันไม่ต้องการให้ไฟล์อื่นเปลี่ยนแปลง
- สร้างสแน็ปช็อตของชุดข้อมูลจากนั้นโคลนสแน็ปช็อต: สิ่งนี้สามารถทำงานได้ แต่ไม่ดี บ่อยครั้งที่ฉันไม่ได้มองหาสำเนาของชุดข้อมูลทั้งหมดหรือเพื่อให้สำเนาทำหน้าที่เหมือนชุดข้อมูลอื่น จากนั้นก็มีความสัมพันธ์ระหว่างผู้ปกครอง / เด็กระหว่างโคลน / สแนปชอต / ต้นฉบับซึ่งฉันเข้าใจว่ามันยากหากไม่สามารถแยกได้
- การใช้
zfs send/receive
และเปิดใช้งานการลดจำนวนการทำซ้ำชุดข้อมูลไปยังชุดข้อมูลใหม่: นี่เป็นการหลีกเลี่ยงความสัมพันธ์ระหว่างผู้ปกครอง / เด็กในการใช้โคลน แต่ยังคงสร้างชุดข้อมูลอื่นโดยไม่จำเป็นและยังคงต้องทนทุกข์จากความช้า บล็อกอ้างอิงอีกครั้งแทนที่จะเขียน - คัดลอกไฟล์และให้ dedup ทำงาน: มันใช้งานได้ แต่ช้าเพราะไฟล์จะต้องอ่าน 100% แล้วบล็อกอ้างอิงอีกครั้งแทนที่จะเขียน
ความช้าของ zfs การส่ง / รับและการคัดลอกหรือ rsyncing ทางกายภาพนั้นเลวร้ายยิ่งขึ้นเพราะสิ่งต่าง ๆ ส่วนใหญ่จะถูกเก็บไว้บีบอัดและจะต้องมีการบีบอัดในระหว่างการอ่านแล้วบีบอัดก่อนที่จะเตะซ้ำเพื่ออ้างอิงบล็อกซ้ำ
ในการวิจัยทั้งหมดของฉันฉันไม่สามารถหาสิ่งที่คล้ายกับความเรียบง่ายของ --reflink ใน btrfs ได้จากระยะไกล
ดังนั้นมีวิธีการสร้างสำเนาวัวใน ZFS หรือไม่ หรือ "การคัดลอก" และปล่อยให้การทำสำเนาเป็นเพียงตัวเลือกจริงเท่านั้น?