Testen von Festplattenspeicher in Linux

7

Ich habe ein Programm, das möglicherweise abstürzt, wenn nicht mehr genügend Speicherplatz zur Verfügung steht, um eine bestimmte Datei zu schreiben. Ich bin mir nicht sicher, ob das der Fall ist.

Ich würde es gerne ausführen und sehen, aber mein Testserver wird nicht bald keinen Platz mehr haben. Kann ich dieses Verhalten irgendwie verspotten? Es sieht nicht so aus, als ob es eine Möglichkeit gibt, eine Ordner- / Dateigrößenbeschränkung in Ubuntu festzulegen, und das Einrichten von Benutzerkontingenten wird ein Prozess sein (aufgrund der Erlangung von Berechtigungen)

Gibt es eine allgemeine Möglichkeit, diese Situation zu testen?

Ich benutze Ubuntu 12.04

    
Erix 16.04.2013, 18:14
quelle

3 Antworten

20
  1. Erstellen Sie eine Datei der gewünschten Größe (hier 10 MB)

    dd if=/dev/zero of=/home/qdii/test bs=1024 count=10000

  2. Erstellen Sie ein Loopback-Gerät aus dieser Datei

    losetup -f /home/qdii/test

  3. Formatieren Sie das Gerät im gewünschten Dateisystem

    mkfs.ext4 /dev/loop0

  4. Stellen Sie es dort ein, wo Sie möchten ( /mnt/test sollte existieren)

    mount /dev/loop0 /mnt/test

  5. Kopieren Sie Ihr Programm auf diese Partition und testen Sie

    cp /path/my/program /mnt/test && cd /mnt/test && ./program

Um zu wissen, welches loopup-Gerät erstellt wurde, können Sie losetup -a

verwenden

Vergessen Sie nicht, die Bereitstellung mit umount /mnt/test zu lösen.

Vergessen Sie nicht, Schleifengeräte nach der Verwendung mit losetup -D

zu säubern

Vergessen Sie nicht, die Datei zu entfernen.

    
qdii 16.04.2013, 18:26
quelle
3
___ answer16044644 ​​___

Eine andere Möglichkeit wäre, das entsprechende Limit mit setrlimit (2) syscall zu reduzieren mit RLIMIT_FSIZE oder mit dem bash ulimit eingebaut (mit -f ). Dann würde write (2) mit EFBIG

fehlschlagen

Und Sie könnten auch einige Kontingente auf ein geeignetes Dateisystem setzen, also write(2) schlägt mit EDQOT fehl.

Wenn Sie den echten ENOSPC Fehler auf write(2) setzen möchten, benötigen Sie wahrscheinlich ein Loopback-Dateisystem, wie es von qdii .

Übrigens, ich weiß nicht wirklich, wie man den EIO Fehler "emuliert" (vielleicht mit einem FUSE Dateisystem?) .

Viele Programme behandeln write(2) Fehler (und fast alle sollten). Aber ich kenne nicht viele Programme, die die verschiedenen möglichen Fehler mit write(2) sehr unterschiedlich behandeln. Die meisten Programme behandeln alle write(2) Fehler auf die gleiche Weise.

Sie müssen jedoch möglicherweise EINTR und EWOULDBLOCK Fehler anders behandeln: Dies sind behebbare Fehler, und in der Regel wiederholen Sie die write(2) zu einem späteren Zeitpunkt.

    
___ qstnhdr ___ Testen von Festplattenspeicher in Linux ___ tag123linux ___ LINUX FRAGEN MÜSSEN PROGRAMMIEREN VERWANDT SEIN. Verwenden Sie dieses Tag nur, wenn sich Ihre Frage auf das Programmieren mit Linux-APIs oder das Linux-spezifische Verhalten bezieht, nicht nur, weil Sie Ihren Code unter Linux ausführen. Wenn Sie Linux-Unterstützung benötigen, können Sie https://unix.stackexchange.com oder https://askubuntu.com ausprobieren ___ tag123testing ___ Softwaretesten ist eine Aktivität, die darauf abzielt, ein Attribut oder eine Fähigkeit eines Programms oder Systems zu bewerten und festzustellen, dass es die erforderlichen Ergebnisse erreicht. ___ answer41764916 ___

Verwenden Sie einfach / dev / full, es wird den ENOSPC-Fehler auslösen, wenn Sie versuchen, darauf zu schreiben:

%Vor%     
___ answer16044420 ___
  1. Erstellen Sie eine Datei der gewünschten Größe (hier 10 MB)

    %code%

  2. Erstellen Sie ein Loopback-Gerät aus dieser Datei

    %code%

  3. Formatieren Sie das Gerät im gewünschten Dateisystem

    %code%

  4. Stellen Sie es dort ein, wo Sie möchten ( %code% sollte existieren)

    %code%

  5. Kopieren Sie Ihr Programm auf diese Partition und testen Sie

    %code%

Um zu wissen, welches loopup-Gerät erstellt wurde, können Sie %code%

verwenden

Vergessen Sie nicht, die Bereitstellung mit %code% zu lösen.

Vergessen Sie nicht, Schleifengeräte nach der Verwendung mit %code%

zu säubern

Vergessen Sie nicht, die Datei zu entfernen.

    
___ qstntxt ___

Ich habe ein Programm, das möglicherweise abstürzt, wenn nicht mehr genügend Speicherplatz zur Verfügung steht, um eine bestimmte Datei zu schreiben. Ich bin mir nicht sicher, ob das der Fall ist.

Ich würde es gerne ausführen und sehen, aber mein Testserver wird nicht bald keinen Platz mehr haben. Kann ich dieses Verhalten irgendwie verspotten? Es sieht nicht so aus, als ob es eine Möglichkeit gibt, eine Ordner- / Dateigrößenbeschränkung in Ubuntu festzulegen, und das Einrichten von Benutzerkontingenten wird ein Prozess sein (aufgrund der Erlangung von Berechtigungen)

Gibt es eine allgemeine Möglichkeit, diese Situation zu testen?

Ich benutze Ubuntu 12.04

    
___
Basile Starynkevitch 16.04.2013 18:41
quelle
1

Verwenden Sie einfach / dev / full, es wird den ENOSPC-Fehler auslösen, wenn Sie versuchen, darauf zu schreiben:

%Vor%     
Krzysztof Karski 20.01.2017 13:31
quelle

Tags und Links