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
Ich habe mir in meinem Proxmox-Cluster drei Knoten abgestellt, auf denen ich gern ein Backup der laufenden VMs erstellen möchte. Da mir hier die Performance nicht ganz so wichtig ist, ich aber gleichzeitig maximale Skalierbarkeit und Verfügbarkeit haben möchte, ist der Schritt zu Ceph eigentlich ein logischer.
Dummerweise hat Proxmox dieses Szenario nicht so interpretiert wie ich es gern hätte, sodass sie nur vorsehen ganze Festplatten für Ceph zu nutzen. Mein Setup ist aber viel cooler, denn ich habe auf dem Server, welcher 8 HDDs bestitzt ein ZFS Raid1 über ALLE Plattengespannt, sodass absolut jede Festplatte ausfallen kann ohne das das System kaputt geht. Dazu nutze ich allerdings nur 40GB als Partition - der Rest kann als Backup Platz genutzt werden.
Dafür muss man aber ein wenig Handarbeit leisten.
Auf allen Hosts muss Ceph installiert werden, damit sie es nutzten können.
pveceph install
Anschließend kann man seinen Ceph Cluster einfach erstellen - ich nutzte als Netzwerk das ohnehin schon vorhandene Backup Netzwerk:
pveceph init --network 192.168.199.0/24
Nun muss man sich die ClusterID notieren: grep -i fsid /etc/pve/ceph.conf
Damit Ceph funktionieren kann, braucht es mindestens einen, idealerweise aber mehrere Monitore. Ich nutze dazu meine 3 Backup Knoten und initialisiere sie als Monitor
pveceph createmon
Nun wird es ernst. Ich bin ein fauler Admin. Daher habe ist bei mir möglichst viel einheitlich, damit ich automatisieren kann. In meinem Fall wird auf jeder Festplatte eine 4. Partition erstellt und für Ceph genutzt. Ich benutzt noch eine Paket, das zusätzlich installiert werden muss um eindeutige UUIDs zu erstellen:
apt-get install uuid-runtime
Anschließend kann es losgehen mit der Vorbereitung
PARTITION=4
PTYPE=4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
CLUSTERID=
for i in a b c d e f g h
do
OSD_UUID=$(uuidgen -r)
sgdisk -d $PARTITION /dev/sd$i
sgdisk --largest-new=$PARTITION --change-name="$PARTITION:ceph data" --partition-guid=$PARTITION:$OSD_UUID --typecode=$PARTITION:$PTYPE -- /dev/sd$i
done
partprobe
for i in a b c d e f g h
do
OSD_UUID=$(uuidgen -r)
ceph-disk prepare --filestore --cluster ceph --cluster-uuid $CLUSTERID --osd-uuid $OSD_UUID --fs-type xfs /dev/sd$i$PARTITION
ceph-disk activate /dev/sd$i$PARTITION
done
Dieser Schritt dauert ein wenig. Man sollte allerdings zusehen können, die die OSDs im Proxmox auftauchen. Zur Sicherheit würde ich einen Reboot des Servers ausführen. Kontrollieren kann man übrigens auch über die CLI
ceph osd tree
ceph status
Quellen und Links: