Spostamento di un filesystem ZFS da un pool a un altro


18

Sto estendendo un server Solaris 10 U8 con un pool di archiviazione aggiuntivo oltre al root pool.

Qual è il modo più efficace / semplice / affidabile per spostare particolari filesystem ZFS da rpool a questo nuovo pool di archiviazione?

È possibile farlo online o devo prima chiudere i servizi utilizzando questi pool?

Risposte:


15

La domanda sulla disabilitazione dei servizi dipende essenzialmente dai servizi stessi:

  • Stanno scrivendo attivamente sul file system che intendi spostare?
  • Stanno memorizzando dati persistenti che si desidera conservare.

In ogni caso, l'invio di un file system ZFS potrebbe richiedere molto tempo. È possibile ridurre al minimo l'indisponibilità del servizio mantenendoli online la maggior parte delle volte in questo modo:

  • creare un'istantanea
  • invia quella istantanea nel modo precedentemente suggerito ma mantenendo attivi tutti i servizi
  • quando viene ricevuto fs sull'altro pool, disabilitare i limiti dei servizi critici per quel file system. Assicurarsi che il nuovo file system nel pool di destinazione non venga modificato poiché le modifiche verranno comunque eliminate in seguito.
  • creare una seconda istantanea (ad es. istantanea2)
  • invia quella seconda istantanea in modo incrementale, che sarà molto più veloce del trasferimento precedente. per esempio:

    zfs invia -i rpool / filesystem @ snapshot rpool / filesystem @ snapshot2 | zfs riceve -F destinationpool / filesystem

  • al termine, spostare il punto di montaggio del filesystem dal vecchio set di dati a quello nuovo. per esempio:

    zfs set mountpoint=/application/directory.old rpool/filesystem
    

    zfs set mountpoint = / application / directory destination / filesystem

È necessario assicurarsi che nessun processo sia vincolato /application/filesystem(ad esempio: accedere ai file o averlo come directory corrente) per raggiungere questo obiettivo.

  • riattivare i servizi e il gioco è fatto.

10

Non penso che questo possa essere eseguito online, ma il mio processo sarebbe quello di chiudere i servizi necessari, fare uno snapshot e usare zfs send / rice per effettuare la migrazione. Qualcosa di simile a:

zfs send rpool/filesystem@snapshot | zfs receive destinationpool/filesystem

Modificare:

Se si installa il comando "pipe view" (pv), è possibile monitorare lo stato del trasferimento con:

zfs send rpool/filesystem@snapshot | pv | zfs receive destinationpool/filesystem

10

Sto ripetendo molto di ciò che ha detto jlliagre, ma con aggiunte per i file system discendenti. (Principalmente quindi ho un riferimento quando dimentico.)

Se disponi di sottosistemi, ti consigliamo di utilizzare il -rflag sul comando snapshot zfs e il flag -ro -Rsul zfs sendcomando. La maiuscola -Rsposta tutte le proprietà , le istantanee e i cloni.

Per spostare un intero pool:

zfs snapshot -r sourcepool@moving
zfs send -R sourcepool@moving | zfs receive -F destpool

quindi per sincronizzare le modifiche per un periodo di migrazione più breve, chiudere applicazioni, chiudere samba, nfs

zfs snapshot -r sourcepool@moving2
zfs send -Ri sourcepool@moving sourcepool@moving2 | zfs receive -F destpool

Se si desidera creare più istantanee di intermediazione per la migrazione, leggere la pagina man per il zfs send -Icommutatore.


3
Nei miei esperimenti, il comando esatto sembrava essere: zfs send -R Pool0 @ moving | zfs riceve -dF Pool1
TinkerTank

4

Troverai anche dei vantaggi nell'usare uno strumento come "mbuffer" nella pipeline; apparentemente le prestazioni di invio / ricezione di ZFS migliorano notevolmente se entrambe le estremità possono principalmente trasmettere dati in modo continuo e senza mbuffer (o qualcosa di simile) si ottiene un effetto ping-pong in cui uno si blocca continuamente sull'altro.


Questa è una domanda molto vecchia (oltre 5 anni) e la tua risposta è improbabile che aggiunga qualcosa a una domanda così vecchia.
Catherine MacInnes,

1
Questo è un ottimo consiglio e lo uso anche per gli spostamenti in piscina.
Dan Buhler,
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.