Come migrare un pool zfs con tempi di inattività minimi?


1

Ho un pool RAID1 ZFS con 2x mirror da 5 TB e 2x unità con mirroring da 1TB e voglio sostituire i due dispositivi da 1TB con quelli da 4TB. Da zpool add è annullabile [1], è necessario distruggere la piscina dopo averla ricreata nel layout desiderato.

Perciò

  • io zpool detach creato i dispositivi con mirroring e creato un nuovo pool con loro.
  • Dopo che i seguenti comandi non sono riusciti a causa di punti di mount sovrapposti, l'ho ri-importato e re-importato usando una radice alternativa zpool import -R /mnt/data1
  • Ho creato un'istantanea migrate1 per essere in grado di correre sudo zfs send -R data@migrate1 | sudo zfs receive -F data1 che è attualmente in corso.

Ora mi piacerebbe conoscere la procedura migliore dopo zfs send tubo completato poiché nella mia comprensione devo ottenere la vecchia piscina data montare su una radice alternativa e sul nuovo pool data1 senza una radice alternativa dopo il riavvio per poter eliminare il vecchio pool e rendere il suo dispositivo disponibile per il collegamento a quello nuovo. Forse c'è un altro modo.

Sto usando ZFS 0.7.0-182_gc0daec32f8 e SPL 0.7.0-20_g35a44fcb costruiti dal sorgente su Ubuntu 17.10 con Linux 4.13.0-16-generic.

Ho controllato

So che questo è complicato e che non sarebbe male mantenere i dispositivi da 1TB all'interno del pool, ma questo non fa parte della domanda.


[1] Ho richiesto questo come problema ZFSOnLinux a https://github.com/zfsonlinux/zfs/issues/6857 che fornisce collegamenti con il piano / la roadmap complessi dietro

Risposte:


1

Ho un pool RAID1 ZFS con 2x mirror da 5 TB e 2x unità con mirroring da 1TB e voglio sostituire i due dispositivi da 1TB con quelli da 4TB. Poiché zpool add è annullabile [1], è necessario sminuire il pool dopo averlo ricreato nel layout desiderato.

Questo suona più come specchi a strisce (2x2) di RAIDZ1 (almeno 3x1). In entrambi i casi, è possibile far crescere entrambe le configurazioni rimuovendo e sostituendo un disco alla volta. Attendi che ciascun resilver finisca, quindi sostituisci il disco successivo. Infine, dopo che tutti i dischi sono stati sostituiti, zpool offline la piscina e poi zpool online -e per espandere la nuova dimensione (o impostare autoexpand=true prima dell'espansione):

    zpool online [-e] pool device...
         Brings the specified physical device online. This command is not
         applicable to spares.

         -e      Expand the device to use all available space. If the
                 device is part of a mirror or raidz then all devices must
                 be expanded before the new space will become available to
                 the pool.

Ovviamente, prima di tutto ricollegate i dispositivi staccati nel vostro caso, perché la sostituzione è possibile solo quando vi è una ridondanza sufficiente.


Oltre a ciò, è possibile impostare e modificare i mount point al volo e distruggere pool con punti di mount attivi (purché non vi sia alcun I / O attivo su di essi). Se non funziona, zpool export / zpool import fa la maggior parte del tempo, come fa un riavvio (se ne puoi permettere uno, e questo non è il pool di root).


Intendevo RAID1 (! = RAIDZ1) nel senso di mirroring senza parità o striping. Questa risposta è corretta, sfortunatamente, ho fatto una domanda XY tralasciando dettagli cruciali che rendono questa soluzione non funzionante per me.
Karl Richter

@KarlRichter Spiacente, ho letto male la parte Z1. Potresti anche modificare la tua domanda e includere dettagli aggiuntivi in ​​modo che le risposte (mia e di altri) possano essere più utili per te.
user121391
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.