Forum Linux.général loop défectueux sous Debian ?

Posté par  .
Étiquettes :
0
2
juin
2008
Bonjour,

j'ai déjà posté quelque chose sur un problème que j'ai avec le module loop sous Debian (http://linuxfr.org/comments/935592.html). Je pensais que ça venait de ntfs-3g mais je n'avais probablement pas les yeux en face des trous.

Si je monte un système de fichiers via loop, je ne peux pas écrire dedans "massivement". J'ai fait pas mal de tests et rien à faire avec Debian. Par contre ça fonctionne avec Fedora Live. Fichtre.

J'ai testé avec Debian Etch 32 et 64 bits, avec Linux Mint 4.0 (c'est un descendant d'Ubuntu, donc de Debian). L'erreur est présente sur tous ces systèmes. J'ai testé avec Fedora Live et pas d'erreur.

J'ai posté un rapport de bug (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=483830).

De bonnes âmes veulent tester ce qui suit pour confirmer/infirmer le problème ?

ATTENTION: cette manipulation risque éventuellement de bloquer la machine. Ne pas le faire sur un système distant.

En tant que root:

Charger le module loop (en principe inutile)
# modprobe loop

Créer un répertoire de test
# cd ~
# mkdir test
# cd test

Créer un disque virtuel d'environ 2 Go
# dd if=/dev/zero of=virtualdisk bs=1M count=2000
--> 53 Mb/s chez moi
# losetup /dev/loop0 virtualdisk

Test 1: écrire directement dans le disque virtuel
# dd if=/dev/zero of=/dev/loop0 bs=1M
--> 14 Mb/s (4 fois plus lent)

Créer un système de fichiers dans le disque virtuel, et le monter
# mkfs.ext2 /dev/loop0
# mount /dev/loop0 /mnt

Test 2: écrire dans le système de fichiers en question
# dd if=/dev/zero of=/mnt/bigfile bs=1M
--> chez moi ça bloque au bout de quelques secondes

Dans une autre fenêtre de terminal, si je fais un iostat je constate qu'un coeur est en 100% d'iowait (c'est un double coeur, j'ai donc 50% d'iowait au total).
ctrl+C met plusieurs secondes avant que j'ai de nouveau la main.

Quel débit avez-vous en natif ? (le premier dd)
Quel débit avez-vous au premier test (le second dd)
Que donne le test 2 chez vous ?
  • # D'autres tests

    Posté par  . Évalué à 2.

    Les tests précédents ont été fait sur 3 machines différentes.

    Je viens de tester sur une autre machine. Ca fonctionne avec Ubuntu 7.10 mais toujours pas avec Debian Lenny.

    Sur une autre machine (oui, encore une autre), Debian Etch, ça ne fonctionne pas. Ca bloque carrément au premier test (!!).

    Avec un noyau 2.6.25.4 qui ne vient pas du tout de chez Debian, ça fonctionne parfaitement (sources venant de kernel.org, fichier de configuration venant de chez ovh).Par contre avec un noyau 2.6.24 qui vient de kernel.org et un fichier de configuration qui vient de chez Debian, ça ne fonctionne pas. Bon, c'est bel et bien la configuration Debian qui est en cause ; je ne sais pas pourquoi et je ne vais pas chercher.

    Le module loop est tout de même pas mal utilisé. Je ne saisi pas comment un dysfonctionnement pareil est resté inaperçu aussi longtemps. :-)
    • [^] # Re: D'autres tests

      Posté par  . Évalué à 2.

      Je viens de tester sur une lenny fraichement mise à jour, sans problème.

      Création du fichier : 34,1 MB/s

      Test 1 : 16,3 MB/s

      Test 2 : 31,1 MB/s

      iostat : aux alentours de 3.8 % d'iowait
  • # alors chez moi ...

    Posté par  . Évalué à 2.

    ubuntu 8.04 64bits,
    disk SSD (ca influe peut-etre sur les performances)

    [1] dd if=/dev/zero of=vdisk bs=1M count=1500
    1500+0 enregistrements lus
    1500+0 enregistrements écrits
    1572864000 bytes (1,6 GB) copied, 17,9943 s, 87,4 MB/s

    [2] sudo dd if=/dev/zero of=/dev/loop0 bs=1M
    dd: écriture de `/dev/loop0': Aucun espace disponible sur le périphérique
    1501+0 enregistrements lus
    1500+0 enregistrements écrits
    1572864000 bytes (1,6 GB) copied, 4,03553 s, 390 MB/s

    [3] sudo dd if=/dev/zero of=/mnt/loop/bigfile bs=1M
    dd: écriture de `/mnt/loop/bigfile': Aucun espace disponible sur le périphérique
    1485+0 enregistrements lus
    1484+0 enregistrements écrits
    1556525056 bytes (1,6 GB) copied, 2,69045 s, 579 MB/s


    on voit clairement que le [3] n'essaie pas d'ecrire sur TOUT le disque
    logique si on en croit les specs du systeme de fichier qui reserve de la place
    • [^] # Re: alors chez moi ...

      Posté par  . Évalué à 2.

      L'espace manquant est "mangé" par les inodes et compagnie. Logique effectivement.
  • # test sur une debian unstable

    Posté par  . Évalué à 1.

    voilà ce que ça donne sur une Debian unstable :
    [1]
    2000+0 enregistrements lus
    2000+0 enregistrements écrits
    2097152000 bytes (2,1 GB) copied, 37,8351 s, 55,4 MB/s


    [2]
    dd: écriture de `/dev/loop0': Aucun espace disponible sur le périphérique
    2001+0 enregistrements lus
    2000+0 enregistrements écrits
    2097152000 bytes (2,1 GB) copied, 33,7156 s, 62,2 MB/s


    [3]
    dd: écriture de `/mnt/bigfile': Aucun espace disponible sur le périphérique
    1964+0 enregistrements lus
    1963+0 enregistrements écrits
    2059116544 bytes (2,1 GB) copied, 33,1546 s, 62,1 MB/s
  • # Anciennes versions ?

    Posté par  . Évalué à 2.

    Pour l'instant, il semble que les Debian fraîchement mises à jour fonctionnent bien. Les Ubuntu ont l'air de tenir également.
    Je suis étonné pour Linux Mint. Noyau récent et soi-disans copié depuis Ubuntu.

    Quelqu'un peut tester une Etch pas trop bricolée ?
    • [^] # Re: Anciennes versions ?

      Posté par  . Évalué à 2.

      Etch à jour, noyau 2.6.18-6-k7 :

      Création du fichier : 35,8 MB/s

      Test 1 : 30,5 MB/s

      Test 2 : 28,0 MB/s

      iostat : aux alentours de 15 % d'iowait
      • [^] # Re: Anciennes versions ?

        Posté par  . Évalué à 2.

        Je viens d'essayer une Etch toute fraîche, puis aptitude upgrade, puis installation du 2.6.18-6-k7 (le processeur est un AMD 4200+). Ca bloque pendant le test 1.

        Je ne comprends pas pourquoi ça marche lorsque c'est une autre personne qui le fait :-)

        J'ai testé sur des machines matériellement différentes. Celles de l'entreprise (AMD 4200+/4Go, Intel Celeron/1Go), une machine perso (AMD 4000+/1Go), une machine d'OVH (Intel E6600/4Go) et une de chez DRI (Intel E6600/4Go). Aucune carte-mère identique.

        Si quelqu'un a une idée...
        • [^] # Re: Anciennes versions ?

          Posté par  . Évalué à 1.

          J'ai testé sur des machines matériellement différentes.[...]Aucune carte-mère identique.
          en meme temps la carte mere ne doit pas jouer grand chose vu que ce n'est pas un peripherique reel...
        • [^] # Re: Anciennes versions ?

          Posté par  . Évalué à 2.

          Histoire d'avoir une base commune, j'ai essayé sous qemu, avec cette image : http://www.oszoo.org/wiki/index.php/DebianEtch24112006, lancée sans kqemu avec 512 Mo de mémoire attribués.

          Création du fichier : 12.7 MB/s

          Test 1 : 10.1 MB/s

          Test 2 : 8.8 MB/s


          Je mets l'image à jour avec une etch fraîche, et je recommence...


          Sinon, as tu des similitudes entre les machines/installations sur lesquelles tu as des problèmes, autres que la distribution (processus qui tournent, RAID ou LVM, ...)
          • [^] # Re: Anciennes versions ?

            Posté par  . Évalué à 2.

            Sinon, as tu des similitudes entre les machines/installations sur lesquelles tu as des problèmes, autres que la distribution (processus qui tournent, RAID ou LVM, ...)
            C'est bien la question que je me pose. La seule similitude que je vois c'est le mec qui est devant la console, c'est à dire moi.

            Ce qui me semble étrange c'est qu'avec une Etch et une Lenny toute fraîche ça plante, mais pas avec une Fedora toute fraîche. Testé sur 2 machines différentes.
          • [^] # qemu

            Posté par  . Évalué à 2.

            Je viens d'effectuer le test avec qemu et l'image indiquée. Ca fonctionne sans problème.

            Création du fichier: 35 Mo/s
            Test1: 35.4 Mo/s
            Test2: 35.8 Mo/s
  • # Linux Mint Live

    Posté par  . Évalué à 2.

    J'ai testé avec Linux Mint 4.0 KDE (http://www.linuxmint.com/mirrors.php?id=23). Avec cette version live, si une autre personne fait le test nous aurons exactement la même version pour tout.

    Je démarre la machine sur le DVD, mode graphique sans échec, clavier français. J'ouvre un terminal. Jusque là, rien d'étrange :-)

    # sudo mkdir /mnt/1
    # sudo mkdir /mnt/2

    # sudo mount /dev/sda1 /mnt/1
    (sda1 est une partition contenant un espace libre)

    # sudo dd if=/dev/zero of=/mnt/1/grosfichier bs=1M count=2000
    --> 76,1 Mo/s

    # sudo losetup -f
    --> /dev/loop1

    # sudo losetup /dev/loop1 /mnt/1/grosfichier

    Test1:
    # sudo dd if=/dev/zero of=/dev/loop1 bs=1M
    --> ça commence à écrire, puis plus rien
    --> ctrl+C fonctionne après plus de 20 secondes

    # sudo mkfs.ext2 /dev/loop1
    # sudo mount /dev/loop1 /mnt/2

    # sudo dd if=/dev/zero of=/mnt/2/grosfichier bs=1M count=10
    --> ça fonctionne

    Test2:
    # sudo dd if=/dev/zero of=/mnt/2/grosfichier bs=1M
    --> 50 Mo/s tient, étrange, le premier test ne fonctionne pas, mais celui-ci est ok (?!!)

    # sudo umount /mnt/2

    Test1 bis:
    # sudo dd if=/dev/zero of=/dev/loop1 bs=1M count=10
    --> ça fonctionne
    # sudo dd if=/dev/zero of=/dev/loop1 bs=1M count=100
    --> ça fonctionne
    # sudo dd if=/dev/zero of=/dev/loop1 bs=1M count=1000
    --> ça bloque

    Je ne suis tout de même pas le seul sur terre à constater ce problème... si ? :-)
    • [^] # Re: Linux Mint Live

      Posté par  . Évalué à 2.

      As tu essayé avec l'image qemu ?

      Je suis désolé, mais je n'ai pas sous la main de machine que je puisse rebooter sur un Live-CD.
      • [^] # qemu: installation fraîche

        Posté par  . Évalué à 2.

        L'image virtuelle d'Etch que tu as proposée est en anglais. Clavier pas terrible. Je refais :-)


        # cd ~
        # mkdir test
        # cd test
        # wget http://cdimage.debian.org/debian-cd/4.0_r3/i386/iso-cd/debia(...)

        # dd if=/dev/zero of=montest bs=1M count=10000
        --> 37.8 Mo/s

        # qemu -hda montest -cdrom debian-40r3-i386-netinst.iso -boot d -m 256 -vnc 1 -k fr -localtime -net none
        --> je lance une console vnc vers mamachine:1
        --> j'ai l'écran d'accueil de Debian, j'appuie sur ENTREE... Erreur de segmentation
        --> je relance la même commande, ça fonctionne (mais l'affichage vnc est très étrange, et il faut relancer vnc plusieurs fois)

        une fois l'installation terminée:
        # qemu -hda montest -m 256 -vnc 1 -k fr -localtime -net none

        Dans la machine virtuelle:
        # mkdir test
        # cd test
        # dd if=/dev/zero of=virt bs=1M count=2000
        --> 16.1 Mo/s

        # losetup -f
        # losetup /dev/loop0 virt
        # dd if=/dev/zero of=/dev/loop0 bs=1M
        --> ça commence à écrire (iostat sur la machine physique le montre)
        --> ça se bloque
        --> surprise, ça reprends l'écriture après environ une minute
        --> 15.2 Mo/s

        Deuxième tentative:
        # dd if=/dev/zero of=/dev/loop0 bs=1M
        --> 38.2 Mo/s (ce qui correspond à l'affichage d'iostat)

        Le premier test donne un résultat étrange.
        Les tentatives suivantes fonctionnent bien.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.