Skip to content

Instantly share code, notes, and snippets.

@dosaboy
Created February 7, 2017 18:48
Show Gist options
  • Save dosaboy/f1402f79c7179423b6b61f233376d2e2 to your computer and use it in GitHub Desktop.
Save dosaboy/f1402f79c7179423b6b61f233376d2e2 to your computer and use it in GitHub Desktop.
#!/bin/bash -eu
# THE FOLLOWING PROCEDURE TO REFORMAT AN OSD AND ITS JOURNAL HAS BEEN TESTED
# ON UBUNTU TRUSTY WITH CEPH 0.94.8-0ubuntu0.15.04.1~cloud0 FROM KILO UCA.
OSD_ID=48
OSD=osd.$OSD_ID
BLK_DEV=/dev/vdb
JOURNAL_UUID=`cat /var/lib/ceph/osd/ceph-$OSD_ID/journal_uuid`
JOURNAL_PART=`sudo readlink -f /var/lib/ceph/osd/ceph-$OSD_ID/journal`
BASE_DEV=${JOURNAL_PART%*[0-9]}
PART_NUM=${JOURNAL_PART#$BASE_DEV}
sudo sgdisk -i $PART_NUM $BASE_DEV > /tmp/sgdisk_info.txt
START_SECTOR=`cat /tmp/sgdisk_info.txt | awk '/First sector/ { print $3 }'`
LAST_SECTOR=`cat /tmp/sgdisk_info.txt | awk '/Last sector/ { print $3 }'`
echo -e "\nIMPORTANT: please confirm the following is correct:"
cat <<- EOF
OSD: $OSD
OSD Journal:
UUID: $JOURNAL_UUID
partition: $BASE_DEV$PART_NUM
start sector: $START_SECTOR
last sector: $LAST_SECTOR
EOF
read -p "Hit [ENTER] to continue and reformat journal partition and osd device" || true
set -x
sudo ceph osd set noup
sudo ceph osd out $OSD
sudo ceph osd down $OSD
sudo service ceph-osd stop id=$OSD_ID
sudo ceph osd crush rm $OSD
sudo ceph auth del $OSD
sudo ceph osd rm $OSD
while true; do ps -ef| egrep -q "[/]usr/bin/ceph-osd.+-id? $OSD_ID" && echo "OSD-$OSD_ID STILL RUNNING!" && sleep 1 && continue || echo "Ok" && break; done
sudo dd if=/dev/zero of=$JOURNAL_PART || true
sudo sgdisk --delete=$PART_NUM $BASE_DEV
sudo partprobe
# NOTE: the following sector range must match that from sgdisk information above
sudo sgdisk --new=$PART_NUM:$START_SECTOR:$LAST_SECTOR --change-name=$PART_NUM:'ceph journal' --partition-guid=$PART_NUM:$JOURNAL_UUID --typecode=$PART_NUM:$JOURNAL_UUID --mbrtogpt -- $BASE_DEV
sudo partprobe
sudo ceph-osd -i $OSD_ID --mkjournal
sudo umount /var/lib/ceph/osd/ceph-$OSD_ID
sudo ceph-disk-prepare --zap-disk $BLK_DEV --journal-uuid $JOURNAL_UUID
sudo mount ${BLK_DEV}1 /var/lib/ceph/osd/ceph-$OSD_ID || true
sudo ceph osd in $OSD
sudo service ceph-osd start id=$OSD_ID || true
sudo ceph osd unset noup
sudo ceph -s
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment