swap auf nicht (mehr) vorhandenem device

OP #7577711
Lesenswert?

Moin,

Folgendes Problem: Auf nem (Linux)rechner mit eingebauten Platten sda und sdb hatte ich per usb eine weitere Platte angeschlossen (sdc). Auf der sdc war eine swap-partition, die ich per swapon /dev/sdc2 verwendet hatte. Nun gabs ein kleines Kabeloopsie am USB-Stecker, sdc war weg. Die und andere Platten werden seither (hab' noch nicht rebootet) nur noch als sdd,sde, etc. "erkannt", weil ja diese olle Swappartition noch "an" ist. (swapon listet die noch auf, mit swapoff /dev/sdc2 kommt natuerlich nur "swapoff: /dev/sdc2: swapoff failed: No such file or directory") Zusaetzlich sind natuerlich im kernellog jede Menge Meldungen "Write-error on swap-device (8:32:xyzblafasel)". Ich bin mir ziemlich sicher, dass das nach einem reboot alles wieder gut sein wird. Nur frag' ich mich/euch - gibt's fuer diese Situation einen Weg, ohne reboot den Kernel davon zu ueberzeugen, den swap auf /dev/sdc2 "loszulassen"? (Der wird eh' grad nicht gebraucht ;-))

Gruss WK

#7577754
Lesenswert?

Die Frage ist eher, was läuft auf dem Rechner? Wenn nur der Browsercache in den Swap gewandert ist, wird wohl nicht viel passieren. Bei einer DB kann das schon übler sein. Ansonsten vm.swappiness=1 setzen, damit er nach Möglichkeit keinen Swap benutzt, in der fstab die UUIDs der Partitionen angeben, statt /dev/sda etc.

OP #7577766
Lesenswert?

Moin,

Ich hab' nicht gefragt, was ich in Zukunft machen kann (und ich glaube nicht, dass uuids bei dieser Konstellation auch nur einen Furz besser gewesen waeren) und - ja - tataechlich weiss ich auch, fuer was swap gut ist. Das ist alles nicht der springende Punkt. Ich hab' gefragt, ob jemand was weiss, was ich momentan machen kann (ausser Reboot). Und ja, ein reboot ist auf dem Rechner kein Problem. Aber es gibt Rechner, auf denen waere das ein Problem. Und weil ich gerne auch mal was dazulerne, waere es interessant gewesen, wenn da wer "einen Trick17" kennt...

Gruss WK

#7578031
Lesenswert?

  1. Es gibt SW, die will/muss unbedingt was auslagern, andere nicht. Im Prinzip ist man hinterher nur klüger. Mit etwas Glück war der RAM noch groß genug und es wurde wenig ausgelagert.

  2. Mannn könnte natürlich die jetzt ausgebaute Swap-Platte lesend genauer ansehen/vergleichen?

3.> gibt's fuer diese Situation einen Weg, ohne reboot den Kernel davon zu ueberzeugen Ob das gut geht, weiß ich nicht.

#7578083
Lesenswert?

Du bist doch ein Gefahrensucher und hast ein aktuelles Backup und suchst ein neues Abenteuer ;)

Dergute W. schrieb:

"swapoff: /dev/sdc2: swapoff failed: No such file or directory" "Write-error on swap-device (8:32:xyzblafasel)"

und nicht "No such device or address". Wenn man das wörtlich nimmt...

1
cd /dev
2
mknod sdc b 8 32
3
mknod sdc2 b 8 34
4
swapoff /dev/sdc2

So richtig gute Vorsichtsmaßnahmen fallen mir jetzt keine ein, vielleicht vorher die meisten Programme beenden und remount,ro oder sync machen? Oder gerade das nicht? Aber beim normalen Runterfahren passiert genau das.

Ein interessanter Fall; wie robust ist der kernel bei einem Fehler-der-eigentlich-nicht-passieren-kann?

#7578289
Lesenswert?

Bauform B. schrieb:

Ein interessanter Fall; wie robust ist der kernel bei einem Fehler-der-eigentlich-nicht-passieren-kann?

In so einem Fall kann er nichts tun. Sobald etwas vom jetzt fehlenden Swap-Device gebraucht wird, dürfte mindestens der entsprechende Prozess abschmieren, auch eine Kernel Panic wäre denkbar.

Mit Swap auf einem RAID-Array ist das entspannter.

Carypt C. schrieb:

ich habe keine Ahnung davon

Warum sagst Du dann etwas dazu?

OP #7578380
Lesenswert?

Moin,

Bauform B. schrieb:

und nicht "No such device or address". Wenn man das wörtlich nimmt...cd /dev mknod sdc b 8 32 mknod sdc2 b 8 34 swapoff /dev/sdc2

Der einzig adequate Vorschlag bis jetzt :-) Gab aber auch nur ein

1
swapoff: /dev/sdc2: swapoff failed: No such device or address

Auch wenn /dev/sdd2 die naemliche swap partition ist, und ich in /dev ein

1
ln -s sdd2 sdc2

gemacht habe, kommt

1
swapoff: /dev/sdc2: swapoff failed: Invalid argument

Und weils vielleicht nicht jedem klar ist: Ich frag' nicht aus Verzweiflung, sondern aus reiner technischer Neugier.

Gruss WK

#7578391
Lesenswert?

Norbert schrieb:

Ähm … nein.

Ja, viel Hoffnung hatte ich nicht. Mach' einen besseren Vorschlag!

Jede swap Partition hat natürlich eine eigenständige, einmalige UUID. So leicht lässt der Kernel sich nun auch wieder nicht verarsc… ;-)

Was habt ihr immer mit dieser UUID? Der Kernel kennt sowas nicht¹. Das ist eine Notlösung für Distributionen damit die Installation einfacher wird. Vor allem ist die UUID für diese Aufgabe hier mehrere Ebenen zu weit oben angesiedelt.

  1. inzwischen vielleicht doch? Wäre schade.
Moderator Persönliche Seite #7578397
Lesenswert?

Wenn auf dem Rest nicht zu viel ausgelagert ist, könntest du schauen, ob er bei "swapoff -a" nicht bloß dumm in /etc/fstab guckt (und dann wieder "No such file or directory" sagt), sondern stattdessen eine interne Liste durchgeht. Viel Hoffnung hätte ich aber da nicht.

Ansonsten ist das Device zwar halt intern noch geöffnet jedoch nicht mehr zugreifbar, und es kommt natürlich auch durch erneutes Anstecken nicht wieder herbei, da das erneute Anstecken natürlich ein neues Device produziert, denn das vorige ist ja noch belegt, und irgendeine persistente Kennung in Form eines "Fingerabdrucks", die dem Kernel sagt, dass das Gerät jetzt das gleiche ist wie das zuvor, gibt es (sehr wahrscheinlich) nicht.

Dumm gelaufen.

#7578409
Lesenswert?

Jörg W. schrieb:

Wenn auf dem Rest nicht zu viel ausgelagert ist, könntest du schauen, ob er bei "swapoff -a" nicht bloß dumm in /etc/fstab guckt (und dann wieder "No such file or directory" sagt), sondern stattdessen eine interne Liste durchgeht. Viel Hoffnung hätte ich aber da nicht.

swapoff -a macht beides?

1
strace swapoff -a
2
openat(AT_FDCWD, "/proc/swaps", O_RDONLY|O_CLOEXEC) = 3
3
newfstatat(3, "", {st_mode=S_IFREG|0444, st_size=0, ...}, AT_EMPTY_PATH) = 0
4
read(3, "Filename\t\t\t\tType\t\tSize\t\tUsed\t\tPr"..., 1024) = 39
5
read(3, "", 1024)                       = 0
6
close(3)                                = 0
7
getuid()                                = 2024
8
newfstatat(AT_FDCWD, "/etc/fstab", {st_mode=S_IFREG|0644, st_size=713, ...}, 0) = 0
9
openat(AT_FDCWD, "/etc/fstab", O_RDONLY|O_CLOEXEC) = 3
10
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=713, ...}, AT_EMPTY_PATH) = 0
11
read(3, "# /etc/fstab: static file system"..., 4096) = 713
Moderator Persönliche Seite #7578413
Lesenswert?

Bauform B. schrieb:

swapoff -a macht beides?

Naja, dann doch lieber den Sourcecode ansehen:

https://github.com/util-linux/util-linux/blob/master/sys-utils/swapoff.c

1
  /*
2
   * In case /proc/swaps exists, unswap stuff listed there.  We are quiet
3
   * but report errors in status.  Errors might mean that /proc/swaps
4
   * exists as ordinary file, not in procfs.  do_swapoff() exits
5
   * immediately on EPERM.
6
   */

Könnte also funktionieren.

OP #7578634
Lesenswert?

Moin,

Norbert schrieb:

Dergute W. schrieb:

Der einzig adequate Vorschlag bis jetzt :-)

Ähm … nein.

Aehm - doch. Ich erwarte ja nicht, dass jeder Vorschlag gleich ootb funktioniert. Aber er passt wenigstens zu meiner Problemstellung. Ich brauch' niemanden, der mir erklaert, was ein swap ist, oder dass es nicht so toefte ist, den im laufenden Betrieb zu entfernen, oder mir aus der wikipedia vorliest (Wenigstes ist mir hier ChatGPT noch erspart geblieben). Sonst haett' ich das angefragt. Insofern danke ich explizit fuer diesen Beitrag, wie auch fuer die anderen fachlich fundierten Beitraege.

Beim rebooten ist nix unerwartetes/aussergewoehnliches passiert.

Gruss WK

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren