summaryrefslogtreecommitdiffstats
path: root/doc/cephfs/snapshots.rst
blob: a60be96ed535f24db8ab611dc4d2d0a5fba0cf01 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
================
CephFS Snapshots
================

CephFS snapshots create an immutable view of the file system at the point
in time they are taken. CephFS support snapshots which is managed in a 
special hidden subdirectory named ``.snap`` .Snapshots are created using
``mkdir`` inside this directory.

Snapshots can be exposed with a different name by changing the following client configurations.

- ``snapdirname`` which is a mount option for kernel clients
- ``client_snapdir`` which is a mount option for ceph-fuse.

Snapshot Creation
==================

CephFS snapshot feature is enabled by default on new file systems. To enable 
it on existing file systems, use the command below.

.. code-block:: bash
    
    $ ceph fs set <fs_name> allow_new_snaps true

When snapshots are enabled, all directories in CephFS will have a special ``.snap``
directory. (You may configure a different name with the client snapdir setting if 
you wish.)
To create a CephFS snapshot, create a subdirectory under ``.snap`` with a name of 
your choice. 
For example, to create a snapshot on directory ``/file1/``, invoke ``mkdir /file1/.snap/snapshot-name``

.. code-block:: bash

    $ touch file1
    $ cd .snap
    $ mkdir my_snapshot

Using snapshot to recover data
===============================

Snapshots can also be used to recover some deleted files.

- ``create a file1 and create snapshot snap1``

.. code-block:: bash

    $ touch /mnt/cephfs/file1
    $ cd .snap
    $ mkdir snap1

- ``create a file2 and create snapshot snap2``

.. code-block:: bash

    $ touch /mnt/cephfs/file2
    $ cd .snap
    $ mkdir snap2

- ``delete file1 and create a new snapshot snap3``

.. code-block:: bash

    $ rm /mnt/cephfs/file1
    $ cd .snap
    $ mkdir snap3

- ``recover file1 using snapshot snap2 using cp command``

.. code-block:: bash

    $ cd .snap
    $ cd snap2
    $ cp file1 /mnt/cephfs/

Snapshot Deletion
==================

Snapshots are deleted by invoking ``rmdir`` on the ``.snap`` directory they are
rooted in. (Attempts to delete a directory which roots the snapshots will fail; 
you must delete the snapshots first.)

.. code-block:: bash

    $ cd .snap
    $ rmdir my_snapshot