On 08/08/13 15:21, Craig Lewis wrote:
I've seen a couple posts here about broken clusters that had to repair
by modifing the monmap, osdmap, or the crush rules.
The old school sysadmin in me says it would be a good idea to make
backups of these 3 databases. So far though, it seems like everybody
was able to repair their clusters by dumping the current map and
modifying it.
I'll probably do it, just to assuage my paranoia, but I was wondering
what you guys thought.
Well, this could get you *some* infos, but you wouldn't be able to
reconstruct a monitor this way. There's just way too many maps that
you'd need to reconstruct the monitor.
The not-so-best approach would be to grab all map epochs, from 1 to the
map's current epoch. We don't currently have a way to expose to the
user what is the first available map epoch in the store (the need for it
never came up), so for now you'd have to start at 1 and increment it
until you'd find an existing version (we trim old versions, so that
could be at 1, 10k, or a few hundred thousands, depending on how many
maps you have). With all that information, you could somehow
reconstruct a monitor with some effort -- and even so, we currently only
expose an interface to obtain maps for some services such as the mon,
osd, pg and mds; we have a bunch of other versions kept in the monitor
that are not currently exposed to the user.
This is something we definitely want to improve on, but as of this
moment the best approach to backup monitors reliably would be to stop
the monitor, copy the store, and restart the monitor. Assuming you have
3+ monitors, stopping just one of them wouldn't affect the quorum or
cluster availability. And assuming you're backing up a monitor that is
in the quorum, then backing it up is as good as backing any other monitor.
Hope this helps.
-Joao
I'm thinking of cronning this on the MON servers:
#!/usr/bin/env bash
# Number of days to keep backups
cleanup_age="10"
# Fetch the current timestamp, to use in the backup filenames
date=$(date +"%Y-%m-%dT%H:%M:%S")
# Dump the current maps
cd /var/lib/ceph/backups/
ceph mon getmap -o ./monmap.${date}
ceph osd getmap -o ./osdmap.${date}
ceph osd getcrushmap -o ./crushmap.${date}
# Delete old maps
find . -type f -regextype posix-extended -regex
'\./(mon|osd|crush)map\..*' -mtime +${cleanup_age} -print0 | xargs -0 rm
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com
--
Joao Eduardo Luis
Software Engineer | http://inktank.com | http://ceph.com
_______________________________________________
ceph-users mailing list
ceph-users@lists.ceph.com
http://lists.ceph.com/listinfo.cgi/ceph-users-ceph.com