(สิ่งนี้เริ่มเป็นความคิดเห็น แต่ยาวเกินไปดังนั้นจึงเป็นคำตอบ)
น่าเสียดายที่คำตอบคือ "ไม่" ไม่มีวิธีที่เร็วกว่าหรือฉลาดกว่าในการทำสิ่งนี้
ระบบไฟล์ ZFS (แม้ว่าจะอยู่ในกลุ่มเดียวกัน) เป็นระบบไฟล์แยกกัน ทั้งmv
มิได้เครื่องมืออื่น ๆ ก็สามารถย้ายตัวชี้บล็อกหรืออะไรก็ตามเพื่อให้ไฟล์ที่อยู่บนอยู่ในขณะนี้fs_a
fs_b
(BTW, ฟอร์แมตพาร์ติชั่นหลายรูปแบบหรือวอลุ่ม LVM บนดิสก์เดียวกันหรืออาเรย์ RAID นั้นยังแยกระบบไฟล์และmv
devolves เพื่อคัดลอกและลบสำหรับพวกเขาด้วย)
ปัญหานี้เกิดขึ้นหลายครั้งในช่วงหลายปีที่ผ่านมา (ด้วยการพูดถึงการสร้างเครื่องมือเพื่อทำสิ่งที่คุณต้องการ) และเมื่อฉันเข้าใจแล้วปัญหาสำคัญที่ทำให้มันอยู่ในตะกร้ายากเกินไปคือคำถามว่าจะจัดการกับสแนปชอตได้อย่างไร - หากมีสแนปชอตของfs_a
บล็อกจะอยู่ในทั้งสองระบบไฟล์ในเวลาเดียวกัน เช่นเดียวกับไฟล์ที่มีฮาร์ดลิงก์
ฉันพบเจอตัวเองหลายครั้ง (เช่นเมื่อย้ายไฟล์ระหว่างชุดข้อมูลตามที่คุณทำหรือเมื่อฉันต้องการแปลงไดเรกทอรีย่อยเป็น fs) และเพิ่งเรียนรู้ที่จะรับมือกับความไม่สะดวก มันสามารถเป็น PITA ที่สำคัญ
ถ้าfs_b
ว่างเปล่าหรือยังไม่อยู่และคุณต้องการที่จะย้ายทั้งเนื้อหาของfs_a
การfs_b
(และไม่ได้เป็นเพียงบางส่วนหรือแม้กระทั่งไฟล์มากที่สุดและไดเรกทอรี) คุณสามารถใช้zfs rename
ในการเปลี่ยนชื่อไปfs_a
fs_b
ฉันสงสัยว่าสิ่งนี้ไม่เกี่ยวข้องกับสถานการณ์ของคุณ
มีปัญหาแบบเปิดสำหรับ ZFSOnLinux ที่https://github.com/zfsonlinux/zfs/issues/2991
ฉันไม่ได้ค้นหา แต่ฉันคาดหวังว่าOpenZFSต้นน้ำ และแม้แต่ Sun / Oracle ZFS อาจมีรายงานข้อบกพร่อง / คำขอคุณสมบัติที่คล้ายกัน
BTW ดูเพิ่มเติมที่/server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume