Pokud chcete mít sami možnost operovat se snapshoty je třeba nám tento požadavek sdělit.
Snapshot je logická kopie obrazu (tedy všech dat na něm uložených) v určitém okamžiku, která je pouze pro čtení. Jednou z pokročilých funkcí blokových zařízení Ceph je to, že můžete vytvářet snapshoty RBD obrazů pro uchování historie stavu v určitém okamžiku. Ceph také podporuje layering, které umožňuje rychle a snadno klonovat RBD obrazy (např. VM obraz). Snapshoty blokového zařízení Ceph jsou spravovány pomocí příkazu rbd a několika rozhraními vyšší úrovně, včetně QEMU, libvirt, OpenStack a CloudStack.
A Pokud RBD image není sdílen před více zařízení (viz bod B), ale hrozí, že automatika (orchestrační nástroj, skript atd.) může někdy připojit RBD image i file-systém vícekrát, pak doporučujeme použít při mapování RBD image volbu --exclusive. V tomto případě je nezbytné vyrábět snapshoty na odmapovaném RBD. Ujistěte se zároveň, že daný RBD image nemáte připojený na jiném stroji, například pomocí #rbd –id client_name status rbd_pool_name/rbd_image_name. Pokud image není připojen na žádném jiném stroji, měli byste obdržet hlášení Watchers: none.
B Pokud NEpoužíváte při mapování volbu --exclusive, což může být třeba v případě použití clustrového file-systému, stačí použít příkaz fsfreeze a po dokončení snapshotu opět povolit IO přes fsfreeze s přepínačem –unfreeze. Další podrobnosti najdete na manuálové stránce fsfreeze(8).
Následující sekce ukazují základní ovládání snapshotů přes příkaz rbd.
Datové přírustky vzniklé použitím snapshotů se započítávají do dohodnuté kvóty.
Pro vytvoření zadejte název poolu, jméno image v daném poolu a jak chcete aby se snapshot jmenoval.
rbd snap create {pool-name}/{image-name}@{snap-name}
Příklad:
rbd snap create rbd-pool/foo@snapname
Pro vypsání již vytvořených snapshotů konkrétního RBD image zadejte název poolu a jméno image.
rbd snap ls {pool-name}/{image-name}
Příklad:
rbd snap ls rbd-pool/foo
Pokud chcete provést rollback do bodu daného snapshotem zadejte název poolu, jméno image v daném poolu a jméno snapshotu.
rbd snap rollback {pool-name}/{image-name}@{snap-name}
Příklad:
rbd snap rollback rbd-pool/foo@snapname
Pro správu snapshotů doporučujeme, každý snapshot opatřit atributem protected, který znemožní přímé smazání snapshotů pro v případě chyby.
rbd snap protect {pool-name}/{image-name}@{snapshot-name}
Příklad:
rbd snap protect rbd/foo@snapname
Zrušení ochrany snapshotů před mazáním
rbd snap unprotect {pool-name}/{image-name}@{snapshot-name}
Příklad:
rbd snap unprotect rbd/foo@snapname
Pro smazání snapshotu zadejte název poolu, jméno image v daném poolu a jméno snapshotu.
rbd snap rm {pool-name}/{image-name}@{snap-name}
Příklad:
rbd snap rm rbd-pool/foo@snapname
Snapshot je možné i připojit v režimu read-only a číst:
rbd map {pool-name}/{image-name}@{snap-name} mount /dev/rbd/{pool-name}/{image-name}@{snap-name} /mnt/{mountpoint} -o ro
Příklad:
rbd map rbd/foo@snapname mount /dev/rbd/rbd-pool/foo@snapname /mnt/snap -o ro
Pozor: některé filesystémy vyžadují přidání dalších voleb příkazu mount
- např. XFS:
mount /dev/rbd/rbd-pool/foo@snapname /mnt/snap -o ro,norecovery