We recently upgraded our Ceph cluster from the latest version of Hammer to 10.2.7 (Jewel). Here are the steps that we used in order to complete the upgrade. Due to a change in Ceph daemon permissions, this specific upgrade required an additional step of using chmod to change file permissions for each daemon directory.
Set the cluster to the ‘noout’ state so that we can perform the upgrade without any data movement:
ceph osd set noout
From the Ceph-deploy control node upgrade monitor nodes first:
ceph-deploy install --release jewel ceph-mon1 ceph-mon2 ceph-mon3
On each monitor node:
stop ceph-mon-all
cd /var/lib/ceph
chown -R ceph:ceph /var/lib/ceph/
start ceph-mon-all
Next move on to the OSD nodes:
ceph-deploy install --release jewel ceph-osd1 ceph-osd2 ceph-osd3 ceph-osd4
Add the following line to /etc/ceph/ceph.conf on each OSD (this will allow the ceph daemons to startup using the old permission scheme):
setuser match path = /var/lib/ceph/$type/$cluster-$id
Stop OSD’s and restart them on each node:
stop ceph-osd-all
start ceph-osd-all
Don’t forget to unset noout from the admin node:
ceph osd unset noout
Once the cluster is all healthy again and you have some time make the necessary permission changes for the OSD daemons you can do the following:
Set noout:
ceph osd set noout
Log onto to each OSD node 1 at a time and run the following commands:
find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R root:root
stop ceph-osd-all
find /var/lib/ceph/osd -maxdepth 1 -mindepth 1 -print | xargs -P12 -n1 chown -R ceph:ceph
chown -R ceph:ceph /var/lib/ceph/
Comment out the setuser line in ceph.conf and restart OSD’s:
#setuser match path = /var/lib/ceph/$type/$cluster-$id
start ceph-osd-all
Don’t forget to unset noout from the admin node:
ceph osd unset noout