Forum Linux.noyau Comment avoir plus de 256 partitions?

Posté par  . Licence CC By‑SA.
Étiquettes :
5
24
mar.
2020

Suite à ma depêche sur le recyclage d'un disque dur mécanique - et grâce au confinement - j'ai progressé avec gdisk qui m'a permis de passer en GPT et de passer la table de partitions de 128 à 512.

Mais voilà, le fichier /dev/sda255 et suivants ne sont pas crées automatiquement. Qui est le responsable? udev? le noyau?

Merci pour toute piste dans cette quête des limites de Linux ;-)

  • # Commentaire supprimé

    Posté par  . Évalué à -3. Dernière modification le 25/03/20 à 08:17.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Noyau

    Posté par  (site Web personnel) . Évalué à 5.

    Peut-être le noyau. Un fichier de périphérique, tel que /dev/sda1, est un fichier qui donne accès à une interface prise en charge pas le noyau, plus exactement par un pilote du noyau. Ce qui caractérise un fichier de périphérique, ce n'est pas son nom – on peut très bien installer un autre fichier sda1 ailleurs, et même le nommer autrement, il donnera toujours accès à la même partition du même périphérique de stockage – mais ses numéros majeur et mineur, deux numéros qui, historiquement, indiquent au noyau le pilote concerné et le périphérique concerné vu qu'un pilote peut gérer plusieurs périphériques.

    Bref, ici, la limite vient peut-être d'une saturation du nombre de numéros mineurs disponibles.

  • # devices.rst

    Posté par  (site Web personnel) . Évalué à 1.

    Il y a un fichier qui décrit les relation entre /dev et le noyau
    Il est dans Documentation/admin-guide/devices.rst des sources du noyaux
    ça explique aussi les limites de nommage des périphériques

    • [^] # Re: devices.rst

      Posté par  . Évalué à 3.

      J'ai lu un peu vite mais je ne vois pas où ça parle de telles limites dans https://www.kernel.org/doc/Documentation/admin-guide/devices.rst

      « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

      • [^] # Re: devices.rst

        Posté par  (site Web personnel) . Évalué à 2.

        effectivement, le nom de fichier était identique mais l'intérieur non…
        J'ai trouvé ce que je voulais montrer:
        https://www.kernel.org/doc/Documentation/admin-guide/devices.txt

        8 block SCSI disk devices (0-15)
        0 = /dev/sda First SCSI disk whole disk
        16 = /dev/sdb Second SCSI disk whole disk
        32 = /dev/sdc Third SCSI disk whole disk

        240 = /dev/sdp Sixteenth SCSI disk whole disk
        Partitions are handled in the same way as for IDE
        disks (see major number 3) except that the limit on
        partitions is 15.

        et je n'ai pas vu de "minor" à plus de 255

        • [^] # Re: devices.rst

          Posté par  . Évalué à 2.

          et je n'ai pas vu de "minor" à plus de 255

          Merci pour la piste. J'ai essayé de créer /dev/sda256 avec mknod* mais le noyau refuse d'y accéder. Ceci étant, le minor n'est pas à une limite de puissance de 2 :

          brw-rw---- 1 root disk 259, 237 Mar 24 23:32 /dev/sda253
          brw-rw---- 1 root disk 259, 238 Mar 24 23:32 /dev/sda254
          brw-rw---- 1 root disk 259, 239 Mar 24 23:32 /dev/sda255
          brw-rw---- 1 root disk 259, 240 Mar 25 07:39 /dev/sda256

          * ça rajeunit pas, j'avais pas touché à mknod depuis 15 ans facile!

          ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

          • [^] # Re: devices.rst

            Posté par  (site Web personnel) . Évalué à 3. Dernière modification le 25/03/20 à 21:01.

            D'après ce post très détaillé de Stack Overflow, par défaut, le nombre de partition max pour un système GPT est de 255 (pour les disques usuels si j'ai bien compris le flag).

            • [^] # Re: devices.rst

              Posté par  . Évalué à 2.

              Merci, j'étais déjà tombé dessus. Ce que je ne trouve pas, c'est où DISK_MAX_PARTS est définie?

              ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

              • [^] # Re: devices.rst

                Posté par  . Évalué à 4.

                https://github.com/torvalds/linux/blob/master/include/linux/genhd.h#L63

                « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

                • [^] # Re: devices.rst

                  Posté par  (site Web personnel) . Évalué à 3.

                  Exactement, et vu le commit qui a amené le flag et cette constante, j'ai l'impression que c'est une limite arbitraire (mais tout de même assez raisonnable).

                  Je me demande si tu pourrais compiler un noyau avec une constante plus élevée (disons 512) et espérer que tout fonctionne encore ?

                  • [^] # Re: devices.rst

                    Posté par  . Évalué à 4.

                    J'ai bien envie de tester ce weekend, il faudrait juste un script formater un disque (virtuel) avec plus de 256 partitions.

                    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

                    • [^] # Re: devices.rst

                      Posté par  . Évalué à 2. Dernière modification le 26/03/20 à 09:04.

                      Merci à tous, j'essaye à l'instant de recompiler vmlinux avec ce paramètre à 512.

                      Pour avoir plus de 128 partitions gpt : utilise gdisk, mode expert.

                      Pour créer les partitions, facile je suis rodé :

                      #!/bin/sh
                      debut=0
                      longueur=4096
                      while (($debut < 2000000)) ; do
                        fin=$(($debut+$longueur-1))
                        echo sgdisk -n0:$debut:$fin -t0:8e00 /dev/sda
                        debut=$(($debut+$longueur))
                      done
                      

                      ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

                  • [^] # Re: devices.rst

                    Posté par  . Évalué à 3. Dernière modification le 26/03/20 à 10:22.

                    Bon ben ça suffit pas : on dirait bien que ça a fait un overflow de variable, puisque le système s'est mis à accéder au début du disque en lisant la partition 256…

                    ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

  • # l'intérêt de 512 partitions sur un disque ?

    Posté par  . Évalué à 1.

    non je me demande vraiment,
    parce que 512 accès concurrents ca doit quand meme sacrement le ralentir le disque :???

    • [^] # Re: l'intérêt de 512 partitions sur un disque ?

      Posté par  (site Web personnel) . Évalué à 6.

      Ce n'est pas pour faire des accès concurrents, il faut aller voir le journal auquel l'auteur fait référence, et dans lequel il explique ce qu'il veut faire : il s'agit d'utiliser les zones viables d'un disque dur partiellement endommagé. L'approche retenue est de faire des tas de partitions, en évitant les zones hors service, puis d'agréger toutes ces partitions avec LVM.

      • [^] # Re: l'intérêt de 512 partitions sur un disque ?

        Posté par  . Évalué à 3.

        c'est pas à ca que sert le 'mark badblock' d'un fcsk ?
        qui évite alors de partitionner son disque en 500morceaux.

        et s'il est défectueux à ce point, vaut peut-être mieux en changer ?

        • [^] # Re: l'intérêt de 512 partitions sur un disque ?

          Posté par  . Évalué à 3. Dernière modification le 25/03/20 à 19:26.

          Merci, mais c'est juste pour l'exercice intellectuel, et peut-être aussi car je n'aime pas jeter…

          Marquer avec badblocks ne fonctionne pas car ext4* tient à utiliser des blocks indiqués comme défectueux lors de la création du système de fichiers.

          *le seul fs actuel qui sait encore gérer des blocks défectueux

          ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

    • [^] # Re: l'intérêt de 512 partitions sur un disque ?

      Posté par  . Évalué à 2.

      Les partitions ne servent pas à faire des accès concurrents. On peut très bien faire plein d'accès concurrents juste avec stress ;-)

      ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

  • # les creer

    Posté par  . Évalué à 3.

    la main ? ou avec un script. honnetement je l'ai fait au debut de linux remplir /dev/ à la main mais la je seche.

    pour les 255 j'imagine que celui qui a crée les fichiers d'avance, c'est peut etre dit que c'etait suffisant pour un usage normal

    • [^] # Re: les creer

      Posté par  . Évalué à 2.

      Le fichiers ne sont pas créés à l'avance dans /dev/ c'est une système de fichier spécial géré par le noyau (devtmpfs)… au moins pour les distributions x86!

      ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

      • [^] # Re: les creer

        Posté par  . Évalué à 3.

        tu es sur ? je me souviens parfaitement avoir creer des sda et sdb avec une commande genre mkinode /dev/sda258 12 56

        • [^] # Re: les creer

          Posté par  . Évalué à 2.

          Oui. C'est toujours possible de le faire à la main, et j'ai essayé au cas où ;-)

          ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

  • # Device mapper

    Posté par  . Évalué à 3.

    Je me répète mais j'avais suggéré le device-mapper dans ta dépêche, qui n'a pas cette limite. As-tu essayé ?

    • [^] # Re: Device mapper

      Posté par  . Évalué à 2.

      J'ai dû rater ton commentaire… tu peux préciser ta pensée? Comment l'utiliser concrètement? Merci.

      Pour l'instant, j'explore la voie de partitions qui sont partagées avec nbd-server pour avoir plusieurs partitions dans /dev/nbd1…

      ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

Suivre le flux des commentaires

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