Bene, dipende davvero da quanto vuoi che sia il pool. E no, non è uno scherzo.
Innanzitutto, un po 'di terminologia: in ZFS, si importa un pool e, facoltativamente, si montano i (qualsiasi) file system al suo interno. È possibile importare una piscina senza montare i file system passando -N
per zpool import
e poi in seguito montare i file system desiderato usando zfs mount
. (Questo è uno scenario perfettamente valido se, ad esempio, si desidera accedere a un solo file system su molti, o se si desidera fare qualcosa di simile a uno scrub offline del pool.)
ZFS non è un grande fan dell'accesso in sola lettura. Ad esempio, se ZFS rileva un errore che è in grado di riparare, credo che riparerà l'errore e scriverà i dati riparati sul disco anche se il pool è stato importato in sola lettura. La mia comprensione è che, in ZFS Parlace, "sola lettura" si applica solo allo stato visibile dall'utente del pool e dei suoi set di dati. Se, d'altra parte, fai una copia binaria del disco in un file (o set di file), rendi quei file veramente di sola lettura e provi a importare il pool da lì, ZFS non sarà in grado di importare il piscina, non importa quanto ci provi. Se rendi i file scrivibili, funzionerà bene. (In realtà l'ho provato solo poche settimane fa, anche se usando uno zvol, e ZFS ha rifiutato con veemenzaper importare il pool. Quando ho impostato zvol in lettura / scrittura anziché in sola lettura, il pool è stato importato correttamente.) Altri file system come (su Linux) ext4 e probabilmente altri gestiscono questa situazione in modo abbastanza elegante, ma ZFS si interrompe.
Se sei sfortunato e non hai RAM ECC installata nel sistema in cui stai importando il pool, allora il tentativo di ZFS di correggere eventuali errori riscontrati potrebbe effettivamente peggiorare le cose , anche se le opinioni differiscono sul fatto che si tratti effettivamente di un rischio reale in pratica. Personalmente sono dell'opinione che qualsiasi dato a cui tengo abbastanza da proteggere con ZFS e snapshot e ridondanza e backup a livello di archiviazione e quant'altro meriti la protezione offerta dalla RAM ECC, ma molti PC non hanno RAM ECC.
Quindi, è possibile importare la piscina in modalità di sola lettura, con una specifica di root alternativa per evitare che un passo su qualsiasi altra cosa c'è di dita dei piedi, ma è necessario essere consapevoli che non è necessariamente vero di sola lettura in un senso forense. (Tuttavia, assicurerà di non modificare accidentalmente nulla nel pool.) Per eseguire un'importazione in sola lettura, supponendo che il pool sia denominato tank
e che i nodi del dispositivo siano / siano disponibili in /dev
, usa un comando come:
# zpool import tank -d /dev -o readonly=on -R /mnt/someplace
Questo cercherà /dev
tutto ciò che contiene un pool ZFS con il nome tank
, lo importa, impostando temporaneamente la proprietà del pool readonly
su on
(il che significa che tutte le scritture avviate dall'utente verranno rifiutate) e impostando temporaneamente la sua altroot
proprietà su /mnt/someplace
. (Questi valori di proprietà sono "temporanei", nel senso che non sono persistenti sul / i disco / i come valori di proprietà correnti, quindi se si esporta e reimporta il pool senza di essi, i valori torneranno alla normalità. Potrebbero può essere eventualmente scritto nella cronologia del pool, che una volta importato il pool è possibile esaminarezpool history tank
se sei così incline.) Una volta importato il pool, vedrai i tuoi file in / mnt / da qualche parte e avrai accesso normale e di sola lettura ad essi, inclusi tutti gli snapshot che sono già stati fatti sui set di dati nel pool.
Dato il tuo esempio, sospetto che useresti qualcosa del tipo:
# zpool import zroot02 -d /dev -o readonly=on -R /mnt/my-fun-mountpoint
Al termine, ricordarsi di esportare in modo pulito il pool:
# zpool export tank
o forse
# zpool export zroot02
Ciò smonterà tutti i file system e gli altri set di dati all'interno del pool, scaricherà tutti i buffer (nella misura in cui sia necessario eseguire lo flush in primo luogo), contrassegnerà il pool come non importato su tutti i dispositivi costituenti ed eseguirà tutte le altre attività di pulizia necessarie per garantire che il pool può essere tranquillamente spostato su un altro sistema e importato lì in seguito.