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
Lustige Idee, einem Rechner im laufenden Betrieb die Swap-Partition zu klauen und zu erwarten, daß der das unbeschadet übersteht. Bitte: Welche Aufgabe hat eine Swap-Partition, und warum werden da überhaupt irgendwelche Daten draufgeschrieben?
Dergute W. schrieb: > Ich bin mir ziemlich sicher, dass das nach einem reboot alles wieder gut > sein wird. denn mach das doch :-]
Moin, Harald K. schrieb: > und zu erwarten, daß der das unbeschadet übersteht. Ich hab' nicht erwartet, dass der das unbeschadet uebersteht, es hat mich auch erstaunt, dass so garnix "schlimmes" passiert ist. Ich hab' das mit dem swap eher nur zufaellig deutlich spaeter entdeckt, wollte im kernellog eigentlich was ganz anderes gucken... Gruss WK
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.
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
Dergute W. schrieb: > 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... Rechnern das Swap wegzunehmen ist vergleichbar mit dem Ausbau von RAM im Betrieb. Da ist der einzige Trick ein Reboot, und beten, daß nichts wichtiges im Swap stand.
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.
:
Bearbeitet durch User
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?
Dergute W. schrieb: > Und ja, ein reboot ist auf dem Rechner kein Problem. Aber es gibt > Rechner, auf denen waere das ein Problem. Lerne durch Schmerz das du solche Rechner nicht von Deppen betreiben lässt.
Bauform B. schrieb: > Ein interessanter Fall; wie robust ist der kernel bei einem > Fehler-der-eigentlich-nicht-passieren-kann? Dann klappt die CPU ihre Beinchen nach oben um nicht noch mehr kaputt zu machen.
Reboot und gut ist... Wenn irgendwas kaputt geht, dann auf sdc1 und das ist eh schon zu spät.
ich habe keine Ahnung davon, aber Wikipedia sagt zu swap-Partitionen, daß man auch mehrere anlegen und löschen kann.
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?
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
Dergute W. schrieb: > Der einzig adequate Vorschlag bis jetzt :-) Ähm … nein. Jede swap Partition hat natürlich eine eigenständige, einmalige UUID. So leicht lässt der Kernel sich nun auch wieder nicht verarsc… ;-)
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.
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.
Habe mir mal den Sourcecode von swapon/swapoff in FreeBSD angesehen, wie zu erwarten, wird dort bei -a nur die fstab durchgegangen.
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 |
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.
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
Dergute W. schrieb: > Beim rebooten ist nix unerwartetes/aussergewoehnliches passiert. Den hättest du auch ohne all die Kapriolen machen können. Im bequemsten Fall sogar mir Alt-SysReq und dem reisub Limbo. Vor allem hast du keinerlei Information darüber ob und wenn ja wie mit dirty pages umgegangen wurde. Aber nach einem reboot ist ja nun alles automagisch bereinigt.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.