Come spostare i file da un filesystem zfs a un diverso filesystem zfs nello stesso pool?


17

Ho due filesystem nello stesso pool di zfs /mnt/fs_ae /mnt/fs_b. Voglio spostare circa 1 TB di dati da fs_aa fs_b. Ma quando io:

mv /mnt/fs_a/mythtv_recordings /mnt/fs_b/

con mia sorpresa, inizia a copiare i file blocco per blocco. Dato il tempo impiegato per spostare un file da 2 GB, sembra che questa operazione richiederebbe giorni di enormi blocchi per terminare.

Ci deve essere un modo molto più intelligente e veloce per farlo, giusto?

Risposte:


22

(questo è iniziato come un commento ma è diventato troppo lungo, quindi ora è una risposta)

Sfortunatamente la risposta è no". Non esiste un modo più veloce o più intelligente per farlo.

I filesystem ZFS (anche se si trovano nello stesso pool) sono filesystem separati. Né mvnessun altro strumento può semplicemente spostare i puntatori a blocchi o qualsiasi altra cosa in modo che i file presenti fs_asiano ora attivi fs_b.

(A proposito, più partizioni formattate o volumi LVM sullo stesso disco o array raid sono anche filesystem separati e si mvconvertono in copia ed eliminazione anche per loro)

Questo problema è emerso più volte nel corso degli anni (con alcuni discorsi sulla creazione di uno strumento per fare ciò che vuoi) e, a quanto ho capito, la principale difficoltà che lo mette nel cestino troppo difficile è la questione di come gestire le istantanee - se ci sono istantanee di fs_a, i blocchi si troverebbero contemporaneamente in entrambi i file system. Lo stesso vale per i file che hanno collegamenti reali.

Mi sono imbattuto in me stesso numerose volte (ad esempio quando ho spostato i file tra i set di dati come hai fatto tu, o quando ho bisogno di convertire una sottodirectory in fs), e ho appena imparato a sopportare l'inconveniente. Può essere un PITA importante.

se fs_bè vuota o non esiste ancora e si desidera spostare gli interi contenuti di fs_aa fs_b(e non solo alcune o addirittura la maggior parte dei file e directory) che è possibile utilizzare zfs renameper rinominare fs_aa fs_b. Tuttavia, sospetto che ciò non sia rilevante per la tua situazione.

C'è un problema aperto su questo per ZFSOnLinux su https://github.com/zfsonlinux/zfs/issues/2991

Non ho cercato, ma mi aspetto che OpenZFS a monte e persino Sun / Oracle ZFS abbiano probabilmente segnalazioni di bug / richieste di funzionalità simili.

A proposito, vedi anche /server/584693/freenas-why-isnt-mv-command-instant-within-a-raidz1-volume


3
Grazie per la risposta approfondita. Apprezzo il suggerimento di rinominare, ma come sospetti ho ancora più dati che non voglio su b. Almeno ora posso andare avanti e copiare i file tramite un disco buffer per almeno eliminare il thrashing.
Fred Hamilton,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.