Ich hatte ja beschrieben wie man sich auf einfache Art und Weise den Tag versauen kann, indem man "mal eben" seinen Ceph Cluster auf Nautilus aktualisiert.
Wenn man sich wieder beruhigt hat, dann kann man auch darüber nachdenken wie man seinen ollen Filestore auf Bluestore aktualisiert. Das geht nämlich eigentlich ganz einfach, indem man aufhört Filestore zu nutzen und die Partition mit Bluestore formatiert und wieder einbindet.
Tendenziell bin ich bei sowas ja faul und möchte die Arbeit einmal richtig machen und dann beliebig oft reproduzieren. Daher muss ich folgende Schritte gehen:
Jetzt wo ich alles habe, kann ich die Schritte auch für die anzahl der OSD und Festplatten automatisieren:
OSDONHOST="0 1 2 3 4 5 6 7"
PARTITIONTOUSE=4
for i in $OSDONHOST
do
ceph osd out $i
systemctl stop ceph-osd@$i.service
ceph osd destroy $i --yes-i-really-mean-it
done
for i in a b c d e f g h
do
ceph-volume lvm zap /dev/sd$i$PARTITION
ceph-volume lvm create --data /dev/sd$i$PARTITION
done
Jetzt sollte man aber auch so brav sein und das nicht sofort bei allen Knoten machen - das Resilvern dauert ein wenig.
Wenn man mal richtig bock darauf hat sich den Tag zu versauen, dann macht man genau das: ein Upgrade von Ceph Version Luminous auf Ceph Version Nautilus mit Filestore.
PARTITION=4
for i in a b c d e f g h
do
ceph-volume simple scan /dev/sd$i$PARTITION
done
/etc/ceph/osd/0-908444d5-2b4e-48e7-8780-58c2679c4db0.json
{
"active": "ok",
"ceph_fsid": "b8f7fd3a-471a-42bc-9bdf-23694508646f",
"cluster_name": "ceph",
"data": {
"path": "/dev/sda4",
"uuid": "a47683ae-1b32-45b1-b48c-adb3ad52037e"
},
"fsid": "908444d5-2b4e-48e7-8780-58c2679c4db0",
"keyring": "AQAVX+5daGvXNBAA8QMsdjVaDwNzTmY6qbY/Fw==",
"magic": "ceph osd volume v026",
"ready": "ready",
"require_osd_release": 12,
"systemd": "",
"type": "filestore",
"whoami": 0
}
zu
{
"active": "ok",
"ceph_fsid": "b8f7fd3a-471a-42bc-9bdf-23694508646f",
"cluster_name": "ceph",
"data": {
"path": "/dev/sda4",
"uuid": "a47683ae-1b32-45b1-b48c-adb3ad52037e"
},
"journal": {
"path": "/var/lib/ceph/osd/ceph-0/journal"
},
"fsid": "908444d5-2b4e-48e7-8780-58c2679c4db0",
"keyring": "AQAVX+5daGvXNBAA8QMsdjVaDwNzTmY6qbY/Fw==",
"magic": "ceph osd volume v026",
"ready": "ready",
"require_osd_release": 12,
"systemd": "",
"type": "filestore",
"whoami": 0
}
ceph-volume simple activate --all
...
Running command: /bin/mount -v /dev/sdf4 /var/lib/ceph/osd/ceph-17
stdout: mount: /dev/sdf4 mounted on /var/lib/ceph/osd/ceph-17.
Running command: /bin/systemctl enable ceph-volume@simple-17-ed611cec-c4c2-4c8b-934c-69292305c63c
stderr: Created symlink /etc/systemd/system/multi-user.target.wants/ceph-volume@simple-17-ed611cec-c4c2-4c8b-934c-69292305c63c.service → /lib/systemd/system/ceph-volume@.service.
Running command: /bin/ln -sf /dev/null /etc/systemd/system/ceph-disk@.service
--> All ceph-disk systemd units have been disabled to prevent OSDs getting triggered by UDEV events
Running command: /bin/systemctl enable --runtime ceph-osd@17
stderr: Created symlink /run/systemd/system/ceph-osd.target.wants/ceph-osd@17.service → /lib/systemd/system/ceph-osd@.service.
Running command: /bin/systemctl start ceph-osd@17
--> Successfully activated OSD 17 with FSID ed611cec-c4c2-4c8b-934c-69292305c63c
Quellen und Links:
Ich mach es kurz: ich liebe Proxmox als einfache und potente Lösung für die Virtualisierung. Es macht einfach Spaß und bedient viele Bedürfnisse die man so in der IT-Infrastruktur hat.
Das Update auf Version 6 hat bei mir einige Probleme gelöst und dem ganzen natürlich einen neuen Anstrich gegeben. Gleichzeitig war es cool, das man zweigleisig fahren konnte - also Hosts mit Version 5 und Hosts mit Version 6 im Cluster mischen kann.
In meinem Beitrag zeige ich auf, wie ich as Upgrade möglich kompakt durchgeführt habe und die notwendigen Schritte quasi mit Copy and Paste gegangen bin.
Zunähchst einmal wollen wir aktualisieren was wir unter den Fingern haben. Das ist immer gut und minimiert die Stolpersteine.
apt-get update && apt-get dist-upgrade -y && apt-get autoclean -y && apt-get autoremove -y
Nach dem Update wollen wir schauen, was wir überhaupt zu tun haben. Dafür wird ein kleines Skript mitgeliefert, welches wir gefahrlos ausfühen können.
pve5to6
Normaler Weise wollen wir HA. So jedoch nicht wenn wir updaten - andernfalls haben wir russisch Roulette mit den Diensten. Daher schalten wir auf allen Knoten die HA-Services ab.
systemctl stop pve-ha-lrm
systemctl stop pve-ha-crm
systemctl status pve-ha-lrm pve-ha-crm | grep -i active
Sofern CEPH im Einsatz ist, wollen wir ausnahmesweise mal kein rebalancing solange wir die Software aktualisieren und die Kisten rebooten.
ceph osd set noout
Jetzt geht es los: damit wir nicht alles still legen, aktualisieren wir zunächst Corosync - das ist einfach gemacht und funktionierte bei mir auch ohne sorgen im Cluster - quasi on the fly
echo "deb http://download.proxmox.com/debian/corosync-3/ stretch main" > /etc/apt/sources.list.d/corosync3.list
apt update
apt dist-upgrade --download-only
apt dist-upgrade -y
Ob alles richtig gelaufen ist, sehen wir durch das folgende Kommando.
pvecm status
Jetzt könnte man die HA-Dienste wieder starten - ich mache das nicht, ich will schnell fertig werden.
systemctl start pve-ha-lrm
systemctl start pve-ha-crm
systemctl status pve-ha-lrm pve-ha-crm | grep -i active
Damit wir nun das gesamte System aktualisieren können, müssen wir auch die vorhandenen Repos anfassen. Ich bin faul und mache das mit sed.
sed -i 's/stretch/buster/g' /etc/apt/sources.list
sed -i 's/stretch/buster/g' /etc/apt/sources.list.d/pve-*
Wenn Ceph im Einsatz ist empfiehlt es sich wirklich das auch gleich mit zu aktualisieren. Bei meinem drei Knoten Backup Cluster hat es wunder gewirkt.
echo "deb http://download.proxmox.com/debian/ceph-luminous buster main" > /etc/apt/sources.list.d/ceph.list
Jetzt wird es ernst. Bitte anschnallen und die Hosen hochziehen. Wir aktualisieren.
apt update
apt-get dist-upgrade -y
Wenn wir fertig sind, die Hosts und VMs alle wieder laufen, dann können wir auch ein wenig aufräumen.
rm /etc/apt/sources.list.d/corosync3.list
apt-get autoclean -y
apt-get autoremove -y
Ceph only
ceph osd unset noout