Ceph: Skillnad mellan sidversioner

Från Lysators datorhandbok, den ultimata referensen.
Hoppa till navigering Hoppa till sök
Ingen redigeringssammanfattning
 
(19 mellanliggande sidversioner av 5 användare visas inte)
Rad 7: Rad 7:
|-
|-
! Operativsystem
! Operativsystem
| [[:Kategori:Debian 9.0| Debian 9.0]] Ska migreras till [[:Kategori:CentOS| CentOS]].
| [[:Kategori:CentOS| CentOS]].
|-
|-
! Arkitektur
! Arkitektur
Rad 28: Rad 28:
|-
|-
! Ceph-status
! Ceph-status
| [http://vogon-0.lysator.liu.se:7000/health Manager]
| [https://vogon-0.lysator.liu.se]
|-
|-
! Ansvariga rötter
! Ansvariga rötter
| '''''INGEN'''''
| hx och octol
|-
|-
! Driftstatus
! Driftstatus
Rad 46: Rad 46:


==== Vogoner ====
==== Vogoner ====
Som mon/mds/mgr körs tre stycken HP DL160-maskiner, vogon-[0-2]. Dessa är bestyckade med 16G RAM och infiniband.
Som mon/mds/mgr körs tre stycken HP DL1000-maskiner, vogon-[0-2]. Dessa är bestyckade med 72G RAM och infiniband.

Individuella vogoner går att hitta [[:Kategori:vogon-noder | här]].


==== Babelfish ====
==== Babelfish ====
Maskinen babelfish har 72G RAM och kör en mds som cachar det mesta av metadatan i RAM och är dessutom NFS-export till de maskiner som inte har kernel-klienter till Ceph-klustret.
Maskinen babelfish har 72G RAM och kör en mds som cachar det mesta av metadatan i RAM och är dessutom NFS-export till de maskiner som inte har kernel-klienter till Ceph-klustret.

Individuella babelfish-noder går att hitta [[:Kategori:babelfish-noder | här]].

==== Infinidim ====
Maskinen [[infinidim-0]] liknar Babelfish (DL170h G6 i en DL1000). Den kör en mds som cachar metadata i RAM och är NFS-export genom nfs-ganesha. Körs i ett corosync-/pacemakerkluster tillsammans med vogonerna, faller noden som exporterar NFS så flyttar IP (infinidim, 130.236.254.9) och nfs-ganesha till en av de levande noderna. Ska ersätta Babelfish.


==== Trillians ====
==== Trillians ====
Som osd-servrar trillian-[1-7] körs Dell R510 med 12 2TB diskar. Eftersom RAID-korten inte tycker om JBOD så är alla diskar sin egen RAID0. En disk i varje chassi används som systemdisk, resten allokeras till OSD:er. Det finns ingen numrering, utan använd verktygen för RAID-korten för att markera diskar vid behov. Trillian-0 är även den en Dell R510 med 12 2TB diskar plus en 128GB SSD internt och agerar experimentverkstad för en framtida uppdatering av hur metadata hanteras.
Som osd-servrar trillian-[1-7] körs Dell R510 med 12 2TB diskar och har 28GB RAM vardera. Eftersom RAID-korten inte tycker om JBOD så är alla diskar sin egen RAID0. En disk i varje chassi används som systemdisk, resten allokeras till OSD:er. Det finns ingen numrering, utan använd verktygen för RAID-korten för att markera diskar vid behov. Varje trillian har också en 512GB nvme ett instickskort. Samtliga trillian-servrar kör CentOS.

Individuella trillian-noder går att hitta [[:Kategori:trillian-noder | här]].


==== Systemdiskar ====
==== Systemdiskar ====
Det finns inga speglade systemdiskar i någon av maskinerna. Ifall en systemdisk dör, vänta 10 minuter så kommer ceph börja skyffla runt datan för att komma upp i rätt mängd redundans igen. Smäll upp en ny maskin och smäll in den i klustret igen enligt manualen. Eller sätt maskenen till 'noout', installera om, kör `ceph-deploy` och starta om, då bör osd-demonerna starta igen.
Det finns inga speglade systemdiskar i någon av maskinerna. Ifall en systemdisk dör, vänta 10 minuter så kommer ceph börja skyffla runt datan för att komma upp i rätt mängd redundans igen. Smäll upp en ny maskin och smäll in den i klustret igen enligt manualen. Eller sätt klustret till 'noout' och 'norebalance', installera om, kör `ceph-deploy` och skicka över konfigurationen, då kan osd:erna startas med 'ceph-volume lvm activate --all' (försäkra dig om att firewalld är död och begraven först).


=== Konfiguration ===
=== Konfiguration ===


Fördelning av resurser till poolerna är antagna att vara 60% för home_data, 5% för home_meta, 35% för vm. När det nya beräkningsklustret tas i bruk kommer den fördelningen ändras då 6+2 filsystemet Scratch kommer att ta plats, fördelningen av poolerna blir: 50% för home_data, 5% för home_meta, 30% för vm, 12% för scratch_data och 3% för scratch_meta (Trillian-7 antas vara i drift som vanlig osd-server då detta sker).
Fördelning av resurser till poolerna är antagna att vara 60% för home_data, 5% för home_meta, 35% för vm. När det nya beräkningsklustret tas i bruk kommer den fördelningen ändras då 6+2 filsystemet Storage kommer att ta plats, fördelningen av poolerna blir: 50% för home_data, 5% för home_meta, 30% för vm, 12% för storage_data och 3% för storage_meta.


==== Nätverk ====
==== Nätverk ====
Rad 71: Rad 80:
==== Prestandatweaks ====
==== Prestandatweaks ====
* För att använda mer av RAM på mds-servrarna till metadata-cache så har mds_cache_memory_limit satts till 8GiB (standard är 1GiB), förutom på babelfish, där den är 64GiB.
* För att använda mer av RAM på mds-servrarna till metadata-cache så har mds_cache_memory_limit satts till 8GiB (standard är 1GiB), förutom på babelfish, där den är 64GiB.
* För att förhindra att osd-servrarna blir mycket långsam eller kraschar vid recovery så har bluestore_cache_size_hdd satts till 268435456 (byte).


=== Tips och trix ===
=== Tips och trix ===
Rad 82: Rad 90:
* ceph-volume lvm list
* ceph-volume lvm list
* ceph-volume lvm activate <osd id> <fs id> (eller --all)
* ceph-volume lvm activate <osd id> <fs id> (eller --all)

Om Ceph inte får igång en OSD igen efter en krasch och det inte går att lösa via systemd så kan det vara intressant att prova:
* ceph-volume lvm list (se om ceph hittar OSD:n)
* ceph-volume lvm activate <osd id> <fs id> (prova att aktivera OSD:n)

=== Byt en trasig disk ===
Följ dessa steg:

<nowiki># Patcha bugg som förhindrar (åter)skapande av osd:er
cat > /root/ceph_volume_util_prepare.patch <<EOF
--- /usr/lib/python2.7/site-packages/ceph_volume/util/prepare.py.old 2019-10-26 16:45:57.140995418 +0000
+++ /usr/lib/python2.7/site-packages/ceph_volume/util/prepare.py 2019-10-26 16:46:37.615813246 +0000
@@ -199,9 +199,12 @@
output = json.loads(''.join(stdout).strip())
osds = output['nodes']
osd = [osd for osd in osds if str(osd['id']) == str(osd_id)]
- if osd and osd[0].get('status') == "destroyed":
- return True
- return False
+ if osd:
+ if osd[0].get('status') == "destroyed":
+ return True
+ else:
+ return False
+ return True
EOF
cd /
patch -p0 < root/ceph_volume_util_prepare.patch
# Ifall patch skriver ut "Reversed (or previously applied) patch detected!" är patchen redan applicerad, avbryt i så fall med C-c.

ceph osd destroy {id} --yes-i-really-mean-it
ceph-volume lvm zap /dev/sdX
ceph-volume lvm prepare --bluestore --osd-id {id} --data /dev/sdX
systemctl enable ceph-osd@{id}
systemctl start ceph-osd@{id}
</nowiki>

Patchen ovan kommer ursprungligen från https://tracker.ceph.com/issues/36307 (via https://www.spinics.net/lists/ceph-users/msg48363.html).






[[Category:Tjänsteservrar]]
[[Category:Tjänsteservrar]]

Nuvarande version från 11 oktober 2024 kl. 20.57

Funktion Tjänsteservrar
Specialfunktion Lagrings-kluster för /home, /lysator och vms.
Operativsystem CentOS.
Arkitektur x86_64
CPU Blandat
Minne Varierande
Chassi Många
Moderkort Varierande
Placering FOO-hallen
Ceph-status [1]
Ansvariga rötter INGEN
Driftstatus I drift

Lysators lagringslösning i Ceph

RTFM

http://docs.ceph.com/docs/master/

Hårdvara

För att köra Lysators cephlösning används många maskiner, för att få redundans och HA. Man kan med andra ord rycka sladden ur vilken maskin som helst utan att något hemskt händer. (Gör det inte)

Vogoner

Som mon/mds/mgr körs tre stycken HP DL1000-maskiner, vogon-[0-2]. Dessa är bestyckade med 72G RAM och infiniband.

Individuella vogoner går att hitta här.

Babelfish

Maskinen babelfish har 72G RAM och kör en mds som cachar det mesta av metadatan i RAM och är dessutom NFS-export till de maskiner som inte har kernel-klienter till Ceph-klustret.

Individuella babelfish-noder går att hitta här.

Infinidim

Maskinen infinidim-0 liknar Babelfish (DL170h G6 i en DL1000). Den kör en mds som cachar metadata i RAM och är NFS-export genom nfs-ganesha. Körs i ett corosync-/pacemakerkluster tillsammans med vogonerna, faller noden som exporterar NFS så flyttar IP (infinidim, 130.236.254.9) och nfs-ganesha till en av de levande noderna. Ska ersätta Babelfish.

Trillians

Som osd-servrar trillian-[1-7] körs Dell R510 med 12 2TB diskar och har 28GB RAM vardera. Eftersom RAID-korten inte tycker om JBOD så är alla diskar sin egen RAID0. En disk i varje chassi används som systemdisk, resten allokeras till OSD:er. Det finns ingen numrering, utan använd verktygen för RAID-korten för att markera diskar vid behov. Varje trillian har också en 512GB nvme på ett instickskort. Samtliga trillian-servrar kör CentOS.

Individuella trillian-noder går att hitta här.

Systemdiskar

Det finns inga speglade systemdiskar i någon av maskinerna. Ifall en systemdisk dör, vänta 10 minuter så kommer ceph börja skyffla runt datan för att komma upp i rätt mängd redundans igen. Smäll upp en ny maskin och smäll in den i klustret igen enligt manualen. Eller sätt klustret till 'noout' och 'norebalance', installera om, kör `ceph-deploy` och skicka över konfigurationen, då kan osd:erna startas med 'ceph-volume lvm activate --all' (försäkra dig om att firewalld är död och begraven först).

Konfiguration

Fördelning av resurser till poolerna är antagna att vara 60% för home_data, 5% för home_meta, 35% för vm. När det nya beräkningsklustret tas i bruk kommer den fördelningen ändras då 6+2 filsystemet Storage kommer att ta plats, fördelningen av poolerna blir: 50% för home_data, 5% för home_meta, 30% för vm, 12% för storage_data och 3% för storage_meta.

Nätverk

Ceph serverar 10.44.0.0/16 över IPoIB. Varje OSD-server har två IPoIB interface, ett för internkommunikation mellan osd:er på 10.43.0.0/24, ett för kommunikation med resten av klustret (och proxmox) på 10.44.0.0/16. Ytterligare har alla maskiner nät på 130.236.254.0/24 för att komma åt resten av världen, även om detta inte är strikt nödvändigt så är det bekvämt.

Användarkontot ceph-vogon

För att ceph-deploy ska fungera rätt så finns det på varje maskin ett användarkontot 'ceph-vogon' med sudorättigheter utan lösenord. Puppet hanterar detta, inklusive kopiering av nycklar. ceph-vogon@vogon-0 har en privat ssh-nyckel för kontot. OBS! Du ska vara i rätt mapp också cd /ceph/ceph-vogon/lysfs.

Prestandatweaks

  • För att använda mer av RAM på mds-servrarna till metadata-cache så har mds_cache_memory_limit satts till 8GiB (standard är 1GiB), förutom på babelfish, där den är 64GiB.

Tips och trix

För arbete på trillian-nod:

  • ceph osd set noout
  • ceph osd set norebalance
  • systemctl stop ceph-osd\*.service ceph-osd.target

Vid flytt av OSD-disk till ny nod:

  • ceph-volume lvm list
  • ceph-volume lvm activate <osd id> <fs id> (eller --all)

Om Ceph inte får igång en OSD igen efter en krasch och det inte går att lösa via systemd så kan det vara intressant att prova:

  • ceph-volume lvm list (se om ceph hittar OSD:n)
  • ceph-volume lvm activate <osd id> <fs id> (prova att aktivera OSD:n)

Byt en trasig disk

Följ dessa steg:

# Patcha bugg som förhindrar (åter)skapande av osd:er
cat > /root/ceph_volume_util_prepare.patch <<EOF
--- /usr/lib/python2.7/site-packages/ceph_volume/util/prepare.py.old  2019-10-26 16:45:57.140995418 +0000
+++ /usr/lib/python2.7/site-packages/ceph_volume/util/prepare.py  2019-10-26 16:46:37.615813246 +0000
@@ -199,9 +199,12 @@
     output = json.loads(''.join(stdout).strip())
     osds = output['nodes']
     osd = [osd for osd in osds if str(osd['id']) == str(osd_id)]
-    if osd and osd[0].get('status') == "destroyed":
-        return True
-    return False
+    if osd:
+        if osd[0].get('status') == "destroyed":
+            return True
+        else:
+            return False
+    return True
EOF
cd /
patch -p0 < root/ceph_volume_util_prepare.patch
# Ifall patch skriver ut "Reversed (or previously applied) patch detected!" är patchen redan applicerad, avbryt i så fall med C-c.

ceph osd destroy {id} --yes-i-really-mean-it
ceph-volume lvm zap /dev/sdX
ceph-volume lvm prepare --bluestore --osd-id {id} --data /dev/sdX
systemctl enable ceph-osd@{id}
systemctl start ceph-osd@{id}

Patchen ovan kommer ursprungligen från https://tracker.ceph.com/issues/36307 (via https://www.spinics.net/lists/ceph-users/msg48363.html).