PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SWAP wird nicht benutzt



Imagine
19.10.07, 14:17
Hallo,

ich nutze ein Debian Etch und wundere mich, warum mein Server nicht swapt. Muss ich das explizit aktivieren oder geschieht von alleine? Denn wenn ich mit tar von Band 2,5MB zurücksichern will, mauert der Befehl, obwohl genug Auslagerungsspeicher vorhanden ist.

free -m


total used free shared buffers cached
Mem: 2012 1223 788 0 38 528
-/+ buffers/cache: 656 1355
Swap: 3906 0 3906

Jetzt habe ich schon so viel Swap, aber das wird nicht genutzt.Wie kann ich das System den Swap nutzen lassen?

Grüsse und vielen Dank

Imagine

Der Gestreifte
19.10.07, 14:31
Jetzt habe ich schon so viel Swap, aber das wird nicht genutzt.Wie kann ich das System den Swap nutzen lassen?Warum willst Du das tun, wenn doch massig RAM ungenutzt ist (einen halbwegs aktuellen Kernel vorausgesetzt, kannst Du die "swappiness" (http://gentoo-wiki.com/FAQ_Linux_Memory_Management) festlegen)?

Was meinst Du mit "mauert der Befehl"?

Imagine
19.10.07, 14:42
Ja, jetzt sieht das gut aus. So gesehen dürfte ich gar nichts sagen. Aber ich will mit tar von einem Band zurücksichern.
Der Sicherungs-Befehl sieht so aus:

tar --create --verbose --one-file-system --files-from=snapshoot.txt --gzip --file=/dev/nst0 --totals --blocking-factor=128
und der zum Rücksichern so:


tar -xvf /dev/nst0

Und sobald das Tar-File auf dem Band grösser ist als mein "free: 788MB", was mit 2500 MB der Fall ist, dann bricht tar ab. Als Fehlermeldung gibt er dann fehlenden Hauptspeicher an. Also frage ich mich, warum nutzt der dann nicht den Swap?

Ich gebe zu, in meinem Posting oben sollte das nicht 2,5MB sondern 2,5GB heissen. Streckenweise ist da noch mehr auf dem Band. Ich sollte es nur zurücksichern können.

Imagine

zyrusthc
19.10.07, 18:08
Als Fehlermeldung gibt er dann fehlenden Hauptspeicher an. Also frage ich mich, warum nutzt der dann nicht den Swap?
Poste doch mal die Fehlermeldung im genauen Wortlaut.

Greeez Oli

Imagine
19.10.07, 18:14
Gerne, sie ist nur auf Deutsch:


tar xfz /dev/nst0
liefert die Meldung

tar: /dev/nst0: Kann read nicht ausführen: Nicht genügend Hauptspeicher verfügbar
tar: Am Anfang des Mediums, beende jetzt.
tar: Nicht behebbarer Fehler: Programmabbruch.

gzip: stdin: unexpected end of file
tar: Child returned status 2
tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.

Grüsse

Imagine

zyrusthc
19.10.07, 18:18
Versuche es mal so:

cat /dev/nst0 | tar xfz -
?

Greeez Oli

Imagine
19.10.07, 18:37
Dein Vorschlag liefert


cat: /dev/nst0: Nicht genügend Hauptspeicher verfügbar

gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.


strace cat /dev/nst0 | tar xfz -
liefert


execve("/bin/cat", ["cat", "/dev/nst0"], [/* 19 vars */]) = 0
uname({sys="Linux", node="samba", ...}) = 0
brk(0) = 0x804d000
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
mmap2(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe1000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=29210, ...}) = 0
mmap2(NULL, 29210, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7fd9000
close(3) = 0
access("/etc/ld.so.nohwcap", F_OK) = -1 ENOENT (No such file or directory)
open("/lib/tls/libc.so.6", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\24 0O\1"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0644, st_size=1241392, ...}) = 0
mmap2(NULL, 1251484, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7ea7000
mmap2(0xb7fcf000, 28672, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x127) = 0xb7fcf000
mmap2(0xb7fd6000, 10396, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7fd6000
close(3) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7ea6000
mprotect(0xb7fcf000, 20480, PROT_READ) = 0
set_thread_area({entry_number:-1 -> 6, base_addr:0xb7ea68e0, limit:1048575, seg_32bit:1, contents:0, read_exec_only:0, limit_in_pages:1, seg_not_present:0, useable:1}) = 0
munmap(0xb7fd9000, 29210) = 0
open("/usr/lib/locale/locale-archive", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=319184, ...}) = 0
mmap2(NULL, 319184, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7e58000
close(3) = 0
brk(0) = 0x804d000
brk(0x806e000) = 0x806e000
fstat64(1, {st_mode=S_IFIFO|0600, st_size=0, ...}) = 0
open("/dev/nst0", O_RDONLY|O_LARGEFILE) = 3
fstat64(3, {st_mode=S_IFCHR|0660, st_rdev=makedev(9, 128), ...}) = 0
read(3, 0x804e000, 4096) = -1 ENOMEM (Cannot allocate memory)
write(2, "cat: ", 5cat: ) = 5
write(2, "/dev/nst0", 9/dev/nst0) = 9
open("/usr/share/locale/locale.alias", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=2582, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7fe0000
read(4, "# Locale name alias data base.\n#"..., 4096) = 2582
read(4, "", 4096) = 0
close(4) = 0
munmap(0xb7fe0000, 4096) = 0
open("/usr/share/locale/de_DE/LC_MESSAGES/libc.mo", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/share/locale/de/LC_MESSAGES/libc.mo", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=123180, ...}) = 0
mmap2(NULL, 123180, PROT_READ, MAP_PRIVATE, 4, 0) = 0xb7e39000
close(4) = 0
open("/usr/lib/gconv/gconv-modules.cache", O_RDONLY) = 4
fstat64(4, {st_mode=S_IFREG|0644, st_size=21568, ...}) = 0
mmap2(NULL, 21568, PROT_READ, MAP_SHARED, 4, 0) = 0xb7fdb000
close(4) = 0
open("/usr/lib/gconv/ISO8859-15.so", O_RDONLY) = 4
read(4, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\20 0\4\0"..., 512) = 512
fstat64(4, {st_mode=S_IFREG|0644, st_size=9436, ...}) = 0
mmap2(NULL, 12324, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 4, 0) = 0xb7e35000
mmap2(0xb7e37000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 4, 0x1) = 0xb7e37000
close(4) = 0
write(2, ": Nicht gen\374gend Hauptspeicher v"..., 40: Nicht genügend Hauptspeicher verfügbar) = 40
write(2, "\n", 1
) = 1
close(3) = 0
close(1) = 0
exit_group(1) = ?
Process 16180 detached

gzip: stdin: unexpected end of file
tar: Child returned status 1
tar: Fehler beim Beenden, verursacht durch vorhergehende Fehler.


Grüsse

Imagine

Imagine
26.10.07, 14:44
Also inzwischen konnte ich das Problem lösen. Vorab, es liegt nicht am fehlenden Cache. Sondern daran wie gesichert bzw. rückgesichert wird.
Zur Erinnerung, ich sichere mit



tar --create --verbose --one-file-system --files-from=snapshoot.txt --gzip --file=/dev/nst0 --totals --blocking-factor=128
und der zum Rücksichern so:


tar -xzvf /dev/nst0


Ich habe als Erstes "--gzip" rausgenommen, da das Laufwerk ja bereits hardwarekomprimiert und gunzip tatsächlich Cache benötigt. Nachdem

tar --create --verbose --one-file-system --files-from=snapshoot.txt --file=/dev/nst0 --totals --blocking-factor=128
immer noch beim Rücksichern mit

tar -xvf /dev/nst0
den Fehler

tar: /dev/nst0: Cannot read: Cannot allocate memory
tar: At beginning of tape, quitting now
tar: Error is not recoverable: exiting now
liefert, habe ich durch Versuche herausgefunden, der Blockingfaktor das Problem ist.
Also entweder lasse ich den beim Sichern ganz weg, oder ich muss ihn beim Rücksichern so mit angeben.

tar -xvf /dev/nst0 --blocking-factor=128

So klappt die Sicherung auch prima!

Ich hoffe, die Erklärung hilft Anderen bei ähnlichem Problemen ebenfalls.

Grüsse

Imagine:)