Suche Lösung zu SW-Raid Problem

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
honzert
Beiträge: 3
Registriert: 04.06.2024 12:47:39

Suche Lösung zu SW-Raid Problem

Beitrag von honzert » 04.06.2024 20:56:54

Hallo Leute.
Könnt ihr mir mit einer Lösung weiterhelfen?
Ich habe schon den ganzen Tag gegoogelt und weiß immer noch nicht weiter.

Das ist das Problem:

Beim Hochfahren starte ich 2 SW-Raids, /dev/md1 und /dev/md2.
Da /dev/md2 zwingend nach dem /dev/md1 gestartet und gemounted werden muss, will ich das in einem Systemd-Service File mit

Code: Alles auswählen

After=mnt-md1.mount
Requires=mnt-md1.mount
erreichen.
Damit würde ich dann ein Skript starten, dass /dev/md2 assembled und mounted (Auto assemble ist per <ignore> Eintrag in mdadm.conf deaktiviert)

Das Problem ist nun, dass ich die gleiche (umgekehrte) Reihenfolge auch beim Shutdown/Reboot brauch.

Sprich, zuerst alles was mit /dev/md2 ist dismounten und stoppen und erst danach /dev/md1 dismounten und stoppen.

Weder md1 noch md2 sind root FS.

Ich hoffe ich konnte das Problem verständlich schildern und ich hoffe, dass mir jemand sagen kann, wie ich diese Reihenfolge für shutdown/reboot vorgeben kann.

Benutzeravatar
heisenberg
Beiträge: 4203
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Suche Lösung zu SW-Raid Problem

Beitrag von heisenberg » 04.06.2024 21:36:28

Die Antwort kenne ich leider auch nicht. Hätte ich das Problem, würde ich vermutlich erst einmal die manpage von systemd.mount durcharbeiten.

chrbr
Beiträge: 637
Registriert: 29.10.2022 15:53:26

Re: Suche Lösung zu SW-Raid Problem

Beitrag von chrbr » 04.06.2024 21:50:41

Ich würde die Handhabung beider RAIDs in einer einzigen gemeinsamen Unit abarbeiten.

Benutzeravatar
schorsch_76
Beiträge: 2639
Registriert: 06.11.2007 16:00:42
Lizenz eigener Beiträge: MIT Lizenz

Re: Suche Lösung zu SW-Raid Problem

Beitrag von schorsch_76 » 05.06.2024 03:45:06

Mounte es in /etc/fstab dann ist das Problem gelöst.

honzert
Beiträge: 3
Registriert: 04.06.2024 12:47:39

Re: Suche Lösung zu SW-Raid Problem

Beitrag von honzert » 05.06.2024 20:12:28

Vielen Dank schon mal für die Antworten und Ideen bisher.
heisenberg hat geschrieben: ↑ zum Beitrag ↑
04.06.2024 21:36:28
Die Antwort kenne ich leider auch nicht. Hätte ich das Problem, würde ich vermutlich erst einmal die manpage von systemd.mount durcharbeiten.
Habe ich tatsächlich gemacht. So direkt habe ich die Lösung aber nicht gesehen.
Aber es hat mich zu einem anderen Link geführt:
https://serverfault.com/questions/11397 ... -the-linux und dort wurde genau der Teil aus den offiziellen Docs zitiert, der die Lösung zu sein scheint:
When two units with an ordering dependency between them are shut down, the inverse of the start-up order is applied.
Also eigentlich dürfte es mein "Problem" gar nicht geben, wenn ich die Reihenfolge korrekt angebe. Vielleicht habe ich deswegen auch so wenig dazu gefunden.

Das wäre ja super.
chrbr hat geschrieben: ↑ zum Beitrag ↑
04.06.2024 21:50:41
Ich würde die Handhabung beider RAIDs in einer einzigen gemeinsamen Unit abarbeiten.
Das werde ich mir noch einmal anschauen, das wäre vielleicht auch eine sehr gute Idee.
schorsch_76 hat geschrieben: ↑ zum Beitrag ↑
05.06.2024 03:45:06
Mounte es in /etc/fstab dann ist das Problem gelöst.
Ich muss das zweite Raid per Skript nach dem erten zusammenbasteln. Meines Wissens kriege ich das nur über die /etc/fstab nicht hin.

Also ein paar neue Anregungen habe ich schon mal bekommen. Vielen Dank den Postern!

Benutzeravatar
heisenberg
Beiträge: 4203
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Suche Lösung zu SW-Raid Problem

Beitrag von heisenberg » 05.06.2024 20:57:19

Ich habe selbst mal zwei Mount-Units angelegt und das mal getestet:

/etc/systemd/system/home-fs1.mount

Code: Alles auswählen

[Unit]
Description=Mount /home/raw/fs1.raw as a loop device
After=home-fs2.mount
Requires=home-fs2.mount

[Mount]
What=/home/raw/fs1.raw
Where=/home/fs1
Type=auto
Options=loop

[Install]
WantedBy=multi-user.target
/etc/systemd/system/home-fs2.mount

Code: Alles auswählen

[Unit]
Description=Mount /home/raw/fs2.raw as a loop device
Before=home-fs1.mount
Requires=home-fs1.mount

[Mount]
What=/home/raw/fs2.raw
Where=/home/fs2
Type=auto
Options=loop

[Install]
WantedBy=multi-user.target
Diese mounten zwei loop-Devices, die ich dafür extra angelegt habe. Dabei soll /home/fs2 zuerst und dann /home/fs1 eingehängt werden.

Wie man am Journal erkennen kann, findet das so statt:

Code: Alles auswählen


# journalctl --no-pager --since=today|grep home-fs

Jun 05 18:43:15 dot systemd[1]: Mounting home-fs2.mount - Mount /home/raw/fs2.raw as a loop device...
Jun 05 18:43:15 dot systemd[1]: Mounted home-fs2.mount - Mount /home/raw/fs2.raw as a loop device.
Jun 05 18:43:15 dot systemd[1]: Mounting home-fs1.mount - Mount /home/raw/fs1.raw as a loop device...
Jun 05 18:43:15 dot systemd[1]: Mounted home-fs1.mount - Mount /home/raw/fs1.raw as a loop device.
Die Abhängigkeiten sind da gerade redundant. Ich teste das nochmal ausgemistet ...

Funktioniert. Ich habe jetzt nur noch bei home-fs1 ein requires=home-fs2.mount und ein after=home-fs2.mount drin.

Benutzeravatar
heisenberg
Beiträge: 4203
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Suche Lösung zu SW-Raid Problem

Beitrag von heisenberg » 05.06.2024 21:06:36

Hast Du schon den Status bzw. das Log beider Mount-Units geprüft?

Code: Alles auswählen

systemctl status deineunit.mount
bzw. das Laden bei Systemstart?

Code: Alles auswählen

journalctl --no-pager |grep -E "(deineunit1|deineunit2)"
Vielleicht auch nochmal die Abhängigkeiten anzeigen lassen:

Bei mir sieht das so aus:

Code: Alles auswählen

# systemctl list-dependencies home-fs1.mount 
home-fs1.mount
● ├─-.mount
● ├─dev-loop1.device
● ├─home-fs2.mount
● └─system.slice

# systemctl list-dependencies home-fs2.mount 
home-fs2.mount
● ├─-.mount
● ├─dev-loop0.device
● └─system.slice

honzert
Beiträge: 3
Registriert: 04.06.2024 12:47:39

Re: Suche Lösung zu SW-Raid Problem

Beitrag von honzert » 01.07.2024 10:31:40

@heisenberg

Vielen Dank für dein Mitausprobieren und deine Tipps.

Der Server, für den das notwendig ist läuft in Production und ich muss immer etwas schauen, wann ich ihne denn überhaupt hoch- und runterfahren kann.

Das ist in der Zwischenzeit aber ein paar Mal passiert und es scheint nun zu passen. Und zwar musste ich anscheinend noch ein

Code: Alles auswählen

bindto
verwenden.

Hier ist noch eine tolle Abhandlung, die ich gefunden hatte: https://pychao.com/2021/02/24/differenc ... temd-unit/

Mein mnt-md2 hat also jetzt ein

Code: Alles auswählen

After=mnt-md1.mount
Requires=mnt-md1.mount
und mit mit einem weiteren

Code: Alles auswählen

After=Skript und bindto=Skript
starte ich das notwendige Script.
Über das BindTo ist es so an mnt-md2 gebunden, dass es eine Stopanforderung bekommt, wenn md2 ungemounted wurde. So kann ich das Stopskript starten und erst danach wird md1 ungemounted.
Das hört sich irgendwie wild an, aber es scheint zu funktionieren. Schade, dass man das nicht in die /etc/fstab reinkloppen kann.

Antworten