Cephfs is great. It can be used to store and share files and can take advantage of the granularity and performance of Ceph. One of the reasons why I'm using it is the possibility of being used on erasure coded (slow disk) pools and cached on fast ssd disks.
Big amounts of data can be stored and live snapshots can be taken so remote backups can be easily performed. More than once, those snapshots helped me to restore a specific file or directory in a specific point of time, in a transparent and easy way.
Taking a manual snapshot is easy: you'll find a ".snap" hidden directory inside any directory of your (cephfs) file system. You can just "mkdir something" inside the .snap directory and you'll have a full snapshot called "something". To remove the snapshot, just use rmdir and the cephfs will delete and trim the space as soon as possible.
Using cephfs-snp is quite easy:
# cephfs-snp Usage: cephfs-snp <dir> (<tag>) (<limit>) (<seconds>) dir │ create snapshot of <dir> tag │ name the snapshot <tag>_<timestamp> limit │ keep <limit> snapshots with this tag. 0 to disable seconds │ don't create snapshots before <seconds> have passed from last with this tag. 0 to disable
You can just ask to perform a snapshot or specify more options to have a more granular control of the snapshots created.
It becomes quite interesting when used with cron:
# cat > /etc/cron.hourly/cephfs-snp <<EOF #!/bin/bash /usr/local/sbin/$BIN /home hourly 24 3600 /usr/local/sbin/$BIN /home daily 7 86400 /usr/local/sbin/$BIN /home weekly 4 604800 /usr/local/sbin/$BIN / weekly 4 604800 /usr/local/sbin/$BIN /home monthly 12 2592000 EOF chmod +x /etc/cron.hourly/cephfs-snp
For more information, you can have a look here: https://github.com/draga79/cephfs-snp