[LinuxOB] swapoff für gelöschtes swapfile

Hesse, Christian mail at earthworm.de
Mi Okt 12 15:36:09 CEST 2005


On Wednesday 12 October 2005 15:21, Michael Gisbers wrote:
> Am Wednesday, 12. October 2005 12:29 schrieb Hesse, Christian:
> > On Wednesday 12 October 2005 12:21, Daniel Dombrowski wrote:
> > > On Wed, 2005-10-12 at 01:27 +0200, Hesse, Christian wrote:
> > > > Hallo zusammen,
> > > >
> > > > ich habe hier ein sehr interessantes Problem, mal sehen ob dazu
> > > > jemand eine Lösung findet. Angenommen ich erstelle mir ein swapfile
> > > > und binde es anschließend ein:
> > > >
> > > > $ dd if=/dev/zero of=swap bs=1k count=1M
> > > > $ mkswap swap
> > > > $ swapon swap
> > > >
> > > > Jetzt lösche ich die Datei:
> > > >
> > > > $ rm swap
> > > >
> > > > Der Kernel greift jetzt noch als swapspace drauf zu, nur dummerweise
> > > > kann ich das Ding nicht wieder loswerden. swapoff will eine
> > > > existierende Datei haben...
> > >
> > > Also, ich mache mal zwei Vorschläge:
> >
> > Also einmal vorweg:
> >
> > root at logo:~# swapon -s
> > Filename                                Type            Size    Used
> > Priority
> > /dev/hda2                               partition       1028152 0      
> > -4 /mnt/data/swap1\040(deleted)            file            1048568 15852 
> >  -3
> >
> > > 1. Einfach mit touch eine leere Datei an der Stelle erstellen, wo die
> > > gelöschte swap-Datei lag. Dann mit swapoff entsprechend deaktivieren.
> >
> > root at logo:~# touch /mnt/data/swap1
> > root at logo:~# swapoff /mnt/data/swap1
> > swapoff: /mnt/data/swap1: Invalid argument
> >
> > > 2. Ändert es etwas, wenn die swap-Datei korrekt in /etc/fstab
> > > eingetragen ist?
> >
> > root at logo:~# grep swap /etc/fstab
> > /dev/hda2      swap    swap    defaults                0       0
> > /mnt/data/swap1   swap   swap      defaults         0       0
> > root at logo:~# swapoff -a
> > root at logo:~# swapon -s
> > /mnt/data/swap1\040(deleted)            file            1048568 15852  
> > -3
> >
> > Funktioniert also beides nicht...
>
> Habe ich mir gedacht.... Ist ein ähnliches Spiel wie beim Löschen von
> Dateien, die z. B. noch von syslogd benutzt werden. Es kann solange die
> Datei benutzt werden wie ein Prozeß einen Handle darauf hat.

Und solange ein Prozess drauf zugreift kann man die Datei auch noch retten, 
sie ist dann nämlich noch unter /proc/$PID/fd/$FILE erreichbar. Nur leider 
scheint das für Kernelthreads nicht zu gelten...

> Ist der Handle 
> weg und es gibt keine weiteren Prozesse die auf die Datei zugreifen, dann
> wird auch die Datei freigegeben.
>
> Erst dann wird sie auch im Filesystem freigegeben.

Ja, so ist es ja auch sinnvoll. Nur kann ich in meinem Fall nicht mal so eben 
den Prozess beenden.

> Bei der Vorgehensweise von Christian ist es natürlich ärgerlich, daß er
> erst die Datei gelöscht hat bevor er die Datei freigegeben hat.

Ärgerlich würde ich nicht sagen. Habe das ja absichtlich gemacht um zu schauen 
was passiert. :)
-- 
Christian
-------------- nächster Teil --------------
Ein Dateianhang mit Binärdaten wurde abgetrennt...
Dateiname   : nicht verfügbar
Dateityp    : application/pgp-signature
Dateigröße  : 190 bytes
Beschreibung: nicht verfügbar
URL         : <http://mailman.mylinuxtime.de/pipermail/linux/attachments/20051012/86ab2c5f/attachment.asc>


Mehr Informationen über die Mailingliste linux