• Non ci sono risultati.

Nozioni di base sugli snapshot

Suggerimento: montaggio/smontaggio manuale

8.3 Snapshot dei dispositivi di blocco

8.3.2 Nozioni di base sugli snapshot

Nelle procedure seguenti è dimostrato come creare, elencare e rimuovere snapshot mediante l'uso del comando rbd sulla riga di comando.

8.3.2.1 Creazione di snapshot

Per creare uno snapshot con rbd, specificare l'opzione snap create, il nome pool e il nome immagine.

root # rbd --pool pool-name snap create --snap snap-name image-name root # rbd snap create pool-name/image-name@snap-name

Ad esempio:

root # rbd --pool rbd snap create --snap snapshot1 image1 root # rbd snap create rbd/image1@snapshot1

99 Note su Cephx SES 5

8.3.2.2 Elenchi di snapshot

Per elencare gli snapshot di un'immagine, specificare il nome pool e il nome immagine.

root # rbd --pool pool-name snap ls image-name root # rbd snap ls pool-name/image-name

Ad esempio:

root # rbd --pool rbd snap ls image1 root # rbd snap ls rbd/image1

8.3.2.3 Rollback di snapshot

Per eseguire il rollback a uno snapshot con rbd, specificare l'opzione snap rollback, il nome pool, il nome immagine e il nome snapshot.

root # rbd --pool pool-name snap rollback --snap snap-name image-name root # rbd snap rollback pool-name/image-name@snap-name

Ad esempio:

root # rbd --pool pool1 snap rollback --snap snapshot1 image1 root # rbd snap rollback pool1/image1@snapshot1

Nota

Eseguire il rollback di un'immagine a uno snapshot significa sovrascrivere la versione attuale dell'immagine con i dati provenienti da uno snapshot. La durata di esecuzione di un rollback aumenta proporzionalmente alle dimensioni dell'immagine. È più rapido eseguire la clonazione da uno snapshot piuttosto che eseguire il rollback di un'immagine a uno snapshot; questo è inoltre il metodo preferito per tornare a uno stato preesistente.

8.3.2.4 Eliminazione di uno snapshot

Per eliminare uno snapshot con rbd, specificare l'opzione snap rm, il nome pool, il nome immagine e il nome utente.

root # rbd --pool pool-name snap rm --snap snap-name image-name root # rbd snap rm pool-name/image-name@snap-name

100 Nozioni di base sugli snapshot SES 5

Ad esempio:

root # rbd --pool pool1 snap rm --snap snapshot1 image1 root # rbd snap rm pool1/image1@snapshot1

Nota

Nei Ceph OSD i dati vengono eliminati in modo asincrono, quindi con l'eliminazione di uno snapshot non si libera immediatamente spazio su disco.

8.3.2.5 Eliminazione definitiva di snapshot

Per eliminare tutti gli snapshot di un'immagine con rbd, specificare l'opzione snap purge e il nome immagine.

root # rbd --pool pool-name snap purge image-name root # rbd snap purge pool-name/image-name

Ad esempio:

root # rbd --pool pool1 snap purge image1 root # rbd snap purge pool1/image1

8.3.3 Layering

Ceph supporta la creazione di molti cloni copia su scrittura (copy-on-write, COW) di uno snap-shot del dispositivo di blocco. Il layering degli snapsnap-shot consente ai client dei dispositivi di blocco Ceph di creare immagini molto rapidamente. Ad esempio, si può creare un'immagine del dispositivo di blocco con una Linux VM scritta al suo interno, quindi eseguire lo snapshot dell'immagine, proteggere lo snapshot e creare tutti i cloni copia su scrittura desiderati. Poiché gli snapshot sono di sola lettura, la clonazione di uno di essi semplifica la semantica e consente quindi di creare i cloni rapidamente.

Nota

I termini "parent" e "child" menzionati negli esempi di riga di comando riportati sotto significano uno snapshot del dispositivo di blocco Ceph (parent) e l'immagine corrispon-dente clonata dallo snapshot (child).

101 Layering SES 5

In ciascuna immagine clonata (child) è memorizzato il rifermento alla rispettiva immagine su-periore, che consente all'immagine clonata di aprire e leggere lo snapshot superiore.

Un clone COW di uno snapshot si comporta esattamente come qualsiasi altra immagine del di-spositivo di blocco Ceph. Nelle immagini clonate è possibile eseguire operazioni di lettura e scrittura ed è possibile clonarle e ridimensionarle. Con le immagini clonate non esistono restri-zioni speciali. Il clone copia su scrittura di uno snapshot si riferisce tuttavia allo snapshot, quindi è necessario proteggere quest'ultimo prima di clonarlo.

Nota

Ceph supporta la clonazione solo per le immagini format 2 (creata con rbd create --image-format 2).

8.3.3.1 Introduzione al layering

Il layering dei dispositivi di blocco Ceph è un processo semplice. È necessario disporre di un'im-magine, creare uno snapshot dell'imun'im-magine, proteggere lo snapshot. Dopo aver eseguito questi passaggi, è possibile iniziare la clonazione dello snapshot.

L'immagine clonata fa riferimento allo snapshot superiore e include l'ID pool, l'ID immagine e l'ID snapshot. L'inclusione dell'ID pool significa che è possibile clonare snapshot da un pool nelle immagini in un altro pool.

Modello di immagine: un caso comune di layering dei dispositivi di blocco consiste nel creare un'immagine master e uno snapshot che funge da modello per i cloni. Ad esempio, un utente può creare un'immagine per una distribuzione Linux (ad esempio, SUSE Linux Enterprise Server) e creare uno shapshot corrispondente. Periodicamente, l'utente può ag-giornare l'immagine e creare un nuovo snapshot (ad esempio, zypper ref && zypper patch seguito da rbd snap create). Ma mano che l'immagine matura, l'utente può clo-nare qualsiasi snapshot.

Modello esteso: un caso più avanzato consiste nell'estensione di un'immagine modello che fornisce ulteriori informazioni rispetto all'immagine di base. Ad esempio, un utente può clonare un'immagine (un modello VM) e installare un software diverso (ad esempio un database, un sistema di gestione di contenuti o un sistema di analisi) ed eseguire quindi lo snapshot dell'immagine estesa, che a sua volta è possibile aggiornare allo stesso modo dell'immagine di base.

102 Layering SES 5

Pool di modelli: un metodo per utilizzare il layering dei dispositivi di blocco consiste nel creare un pool contenente immagini master che fungono da modelli e snapshot di tali modelli. È quindi possibile estendere i privilegi di sola lettura agli utenti in modo che possano clonare gli snapshot senza doverli scrivere o eseguire nel pool.

Migrazione/recupero dell'immagine: un metodo per utilizzare il layering dei dispositivi di blocco consiste nell'eseguire la migrazione o il recupero dei dati da un pool in un altro.

8.3.3.2 Protezione di uno snapshot

I cloni accedono agli shapshot superiori. Tutti i cloni verrebbero interrotti se un utente elimi-nasse inavvertitamente lo snapshot superiore. Per impedire la perdita di dati, è necessario pro-teggere lo snapshot prima di poterlo clonare.

root # rbd --pool pool-name snap protect \ --image image-name --snap snapshot-name

root # rbd snap protect pool-name/image-name@snapshot-name

Ad esempio:

root # rbd --pool pool1 snap protect --image image1 --snap snapshot1 root # rbd snap protect pool1/image1@snapshot1

Nota

Non è possibile eliminare uno snapshot protetto.

8.3.3.3 Clonazione di uno snapshot

Per clonare uno snapshot, è necessario specificare il pool superiore, l'immagine e lo snapshot, il pool secondario e il nome immagine. È necessario proteggere lo snapshot prima di poterlo clonare.

root # rbd --pool pool-name --image parent-image \ --snap snap-name --dest-pool pool-name \

--dest child-image

root # rbd clone pool-name/parent-image@snap-name \ pool-name/child-image-name

103 Layering SES 5

Ad esempio:

root # rbd clone pool1/image1@snapshot1 pool1/image2

Nota

Si può clonare uno snapshot da un pool in un'immagine in un altro pool. Ad esempio, si possono mantenere immagini e snapshot di sola lettura come modelli in un pool e cloni scrivibili in un altro pool.

8.3.3.4 Annullamento della protezione di uno snapshot

Prima di poter eliminare uno snapshot, è necessario annullarne la protezione. Inoltre, non è possibile eliminare snapshot con riferimenti dai cloni. È necessario appiattire ciascun clone di uno snapshot prima di poter eliminare quest'ultimo.

root # rbd --pool pool-name snap unprotect --image image-name \ --snap snapshot-name

root # rbd snap unprotect pool-name/image-name@snapshot-name

Ad esempio:

root # rbd --pool pool1 snap unprotect --image image1 --snap snapshot1 root # rbd snap unprotect pool1/image1@snapshot1

8.3.3.5 Elenco degli elementi secondari di uno snapshot

Per elencare gli elementi secondari di uno snapshot, eseguire quanto riportato di seguito:

root # rbd --pool pool-name children --image image-name --snap snap-name root # rbd children pool-name/image-name@snapshot-name

Ad esempio:

root # rbd --pool pool1 children --image image1 --snap snapshot1 root # rbd children pool1/image1@snapshot1

104 Layering SES 5

8.3.3.6 Appiattimento di un'immagine clonata

Le immagini clonate mantengono un riferimento allo snapshot superiore. Quando si rimuove il riferimento dal clone secondario nello parent superiore, di fatto si "appiattisce" l'immagine copiando le informazioni dallo snapshot al clone. La durata di appiattimento di un clone au-menta proporzionalmente alle dimensioni dello snapshot. Per eliminare uno snapshot, prima è necessario appiattire le immagini secondarie.

root # rbd --pool pool-name flatten --image image-name root # rbd flatten pool-name/image-name

Ad esempio:

root # rbd --pool pool1 flatten --image image1 root # rbd flatten pool1/image1

Nota

Poiché un'immagine appiattita contiene tutte le informazioni provenienti dallo snapshot, questa occuperà uno spazio di memorizzazione maggiore rispetto a un clone su più strati.