GNU/Linux >> Linux Esercitazione >  >> Linux

Come "ribilanciare" i dati in zfs? (Assicurati che i dati siano distribuiti tra tutti i mirror a strisce)

Solo i dati appena scritti (aggiunti) vengono suddivisi tra tutti i vdev attualmente attivi, non esiste un'operazione di ribilanciamento esplicita in ZFS.

Due possibili soluzioni:

  1. Attendi fino a quando tutti i vecchi dati non vengono riscritti (a causa di CoW, questo può richiedere molto tempo, nel peggiore dei casi il doppio del tempo necessario per scrivere completamente il disco).
  2. Rimuovi tutti i dati e scrivili di nuovo (zfs send/recv è utile per ottenere tutti i dati dal pool e viceversa senza perdere nulla). Questo non deve essere fatto tutto in una volta e può essere fatto nello stesso pool.

Per essere più precisi, sceglierei la seconda soluzione e trasferirei ogni file system separatamente nei momenti in cui il carico del sistema è basso (ad esempio di notte):

  • Scatta un'istantanea (zfs snapshot -r ) di un file system di dimensioni decenti (e file system deceduti, in modo ricorsivo)
  • Usa zfs send | zfs recv con opzioni appropriate per inviare l'istantanea a un file system temporaneo appena creato (può trovarsi sullo stesso pool se lo spazio lo consente); questo file system dovrebbe trovarsi nella stessa posizione nella gerarchia di quello vecchio
  • Al termine della copia (potrebbe volerci un po' di tempo, perché i dischi devono leggere e scrivere), zfs destroy la vecchia istantanea e il vecchio file system
  • zfs rename il sistema temporaneo al vecchio nome
  • Controlla e modifica i punti di montaggio con zfs mount , riorganizzando la situazione precedente per il tuo file system sostituito
  • Ripeti finché tutti i file system non vengono spostati

possibile terza soluzione (come menzionato da SirMaster in questo post del forum FreeNAS):

  • aggiungi nuovi dischi a zpool
  • copia molti file in un'altra nuova directory /mnt/pool/temp/
  • cancella i file originali:rm -rf original/
  • rinomina la cartella indietro:mv temp/ original/

Funziona perché ZFS posizionerà proporzionalmente le scritture su qualunque vdev abbia più spazio libero, in questo caso le unità nuove di zecca che erano vuote. (a partire dalla versione 0.7, zfs favorirà le unità più veloci per le scritture, ma supponiamo che le tue 2 nuove unità abbiano prestazioni uguali o superiori rispetto alle unità originali)

Probabilmente è più lento di zfs send | zfs recv , ma più semplice perché non devi creare/distruggere istantanee.

Puoi eseguire zpool list -v prima e dopo per vedere ogni utilizzo di vdev.

Inoltre, ho trovato uno script php che esegue la procedura di copia/eliminazione/rinomina file per file. Questo è stato collegato in una risposta da una domanda simile (ma zvol) di qualche anno più vecchia. (non ho testato personalmente questo script)


Linux
  1. Come trovare il filesystem del CD/DVD per farlo montare automaticamente:[Linux]

  2. Come aggiungere una nuova riga alla fine di un file?

  3. Mostra tutto il file fino alla partita?

  4. Come aggiungere l'output a un file?

  5. Come reindirizzare l'output di system() su un file?

Come rendere eseguibile un file in Linux

Come rendere il file sparse?

Come funziona rm? Cosa fa rm?

Come posso modificare tutti i file restituiti da find in vi in ​​Linux?

Come trovare il file manager predefinito?

Come faccio a rendere un file NON modificabile?