Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut espace disque : 2 programmes, 2 valeurs

    Préambule
    Pourquoi je hais Linux (des fois) :
    2. View I/O Limits

    Use the -i option as shown below to display the I/O limits on a particular block device.

    You can either pass the partition as an argument, or the whole device.

    The following output displays the minimum IO size, physical and logical sector size of /dev/sdb1 device.

    # blkid -i /dev/sdb1
    MINIMUM_IO_SIZE=512
    PHYSICAL_SECTOR_SIZE=512
    LOGICAL_SECTOR_SIZE=512
    source
    et dans un terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # blkid -i /dev/sda4
    MINIMUM_IO_SIZE=13213811617399046656
    PHYSICAL_SECTOR_SIZE=13213811617399046656
    LOGICAL_SECTOR_SIZE=12884902400


    +++
    blkid display a single device attribute

    the blkid command with a device name display only this device attributes

    # blkid /dev/sda
    /dev/sda: UUID="a4dc8beb-1f79-4a54-883c-26bad0570794" TYPE="xfs" LABEL="/dcs07_l4_5"
    source
    et dans un terminal :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # blkid /dev/sda
    /dev/sda: TYPE="isw_raid_member"
    (nota : cette information serait peut-être issue de l'utilisation précédente de ce disque [seconde main], qui aurait résisté au partitionnement + formatage ?)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # blkid /dev/sda4
    /dev/sda4: LABEL="datas" UUID="88e48b0e-ef96-4cc0-b249-fa998ec2ec34" TYPE="ext4"
    Ah ! Faut rajouter le "4" pour transformer le device en partoche.

    et avec un autre disque :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # blkid /dev/sdb
    (rien -- ligne vide)
    # blkid /dev/sdb1
    /dev/sdb1: LABEL="backup_sdb" UUID="2fcd8e8f-09c9-4ed5-90be-358eb3541d95" TYPE="ext4"
    Pareil, faut rajouter "1".
    Ces trucs-là me font perdre des heures, c'est dingue -- comme si j'avais l'éternité devant moi ...

    +++
    La question :
    j'essaie juste de savoir pourquoi tune2fs ne remonte pas la même information que df -B1 en ce qui concerne l'espace total d'une partition :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # df -B1 /dev/sdb1
    Sys. fich.        1B-blocks        Util.  Disponible Uti% Monté sur
    /dev/sdb1      867740401664 746057814016 77597048832  91% /media/sdb1
     
    # tune2fs -l /dev/sdb1
    Block count:              215261439 --> x 4096 = 881710854144
    Free blocks:               29707663 --> x 4096 = 121682587648, correspond au champ f_bfree de la structure statvfs quand on joue avec C
    Reserved block count:      10763071 --> x 4096 =  44085538816, soustraction des champs f_bfree - f_bavail
    La différence entre Block count de t2fs et 1B-blocks de df (qui correspond au champ f_blocks de la structure statvfs) est inexplicable et je ne sais pas quelle valeur correspond à la vraie vie.

    Si quelqu'un a une idée...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert éminent Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2012
    Messages : 2 969
    Points : 8 322
    Points
    8 322

    Par défaut

    Citation Envoyé par Jipété Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    # df -B1 /dev/sdb1
    Sys. fich.        1B-blocks        Util.  Disponible Uti% Monté sur
    /dev/sdb1      867740401664 746057814016 77597048832  91% /media/sdb1
     
    # tune2fs -l /dev/sdb1
    Block count:              215261439 --> x 4096 = 881710854144
    Free blocks:               29707663 --> x 4096 = 121682587648, correspond au champ f_bfree de la structure statvfs quand on joue avec C
    Reserved block count:      10763071 --> x 4096 =  44085538816, soustraction des champs f_bfree - f_bavail
    La différence entre Block count de t2fs et 1B-blocks de df (qui correspond au champ f_blocks de la structure statvfs) est inexplicable et je ne sais pas quelle valeur correspond à la vraie vie.

    Si quelqu'un a une idée...
    tune2fs te donne les vraies valeurs sans prendre en considération le système (il vit dans son propre monde) , tandis que df te donne les valeurs sur un point de vue pour l'utilisateur non root, donc en ne comptant pas le journal, la table de bitmap,...
    Cordialement.

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Citation Envoyé par disedorgue Voir le message
    tune2fs te donne les vraies valeurs sans prendre en considération le système (il vit dans son propre monde), tandis que df te donne les valeurs sur un point de vue pour l'utilisateur non root, donc en ne comptant pas le journal, la table de bitmap, ...
    Ça me va.
    Si pas d'autre(s) avis, je prends, et

    EDIT : ça me va, mais il y a quand même un truc qui me chagrine...

    La sortie de df mérite une explication plus approfondie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    # df -B1 /media/sdb1/
    Sys. fich.        1B-blocks        Util.  Disponible Uti% Monté sur
    /dev/sdb1      867740401664 746057814016 77597048832  91% /media/sdb1
    En effet,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      746057814016 utilisé
    +  77597048832 disponible
    = 823654862848


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      867740401664
    - 823654862848
    =  44085538816 / 4096 = 10763071 (Reserved block count de tune2fs)
    qui n'apparait pas dans la sortie de df.

    Jusqu'à présent, cette histoire de "reserved block count" se trouve sur le web comme "Reserved for root" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        /*
         * It is helpful to use a picture for calculation of disk space.
         *
         * |<--------------------- f_blocks ---------------------------->|
         *                 |<---------------- f_bfree ------------------>|
         *
         * ---------------------------------------------------------------
         * | USED          | f_bavail                | Reserved for root |
         * ---------------------------------------------------------------
         *
         */
    source
    mais à te lire ce n'est pas vrai : l'utilisateur root avec tous ses pleins pouvoirs ne va pas utiliser cet espace qui lui est "réservé" pour y stocker des photos cochonnes ou Dieu seul sait quoi, en fait cet espace est "Reserved for system (journaux, tables diverses, etc.)"

    Du coup, le vrai espace total utilisable est la somme de USED et f_bavail.

    D'ailleurs, man statfs nous dit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      fsblkcnt_t f_bfree;   /* Free blocks in filesystem */
      fsblkcnt_t f_bavail;  /* Free blocks available to unprivileged user */
    que j'aurais tendance à récrire ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      fsblkcnt_t f_bfree;   /* Blocks reserved for system use */
      fsblkcnt_t f_bavail;  /* Free blocks available to users */
    Je vais donc me baser sur le calcul précédent pour connaître l'espace total, et voili et voilou.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Salut,

    Un dernier mot en forme de conclusion et résumé :
    en fait le problème de compréhension de la sortie de df en français est d'ordre sémantique : je sais pas vous mais moi, quand je vois la colonne "Util.", quand je lis "Util." quand j'entends dans ma tête "Util." je comprends (hélas) "Utile" car ça "sonne" pareil, sauf qu'il faut comprendre "Utilisé", used in English, et non pas available, ce qui change tout.

    Par ailleurs, je confirme ce que je disais hier, ce "Reserved for root" est une bêtise, j'ai fait des tests et les informations renvoyées par la structure statvfs sont les mêmes, que le programme analysant les données soit lancé sous root ou sous un user lamba : c'est bien "Reserved for system" qu'il faut comprendre.
    L'erreur vient peut-être (sans doute ?) d'une confusion entre l'utilisateur root et l'emplacement root (racine) sur le périphérique.

    J'utilise maintenant les valeurs de statvfs, et l'espace total devient sbuf.f_frsize * (sbuf.f_blocks - sbuf.f_bfree + sbuf.f_bavail), qui correspond aux sorties de df -B1 Util.[isé !] + Disponible.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Expert éminent Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2012
    Messages : 2 969
    Points : 8 322
    Points
    8 322

    Par défaut

    Citation Envoyé par Jipété Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        /*
         * It is helpful to use a picture for calculation of disk space.
         *
         * |<--------------------- f_blocks ---------------------------->|
         *                 |<---------------- f_bfree ------------------>|
         *
         * ---------------------------------------------------------------
         * | USED          | f_bavail                | Reserved for root |
         * ---------------------------------------------------------------
         *
         */
    source
    mais à te lire ce n'est pas vrai : l'utilisateur root avec tous ses pleins pouvoirs ne va pas utiliser cet espace qui lui est "réservé" pour y stocker des photos cochonnes ou Dieu seul sait quoi, en fait cet espace est "Reserved for system (journaux, tables diverses, etc.)"
    Non, si c'était le cas, tu retrouverais la valeur du Block count de tune2fs en additionnant le tout, ce qui n'est pas le cas, la réserve permet bien à root de pouvoir continuer à travailler alors que le FS est déclaré FULL.

    Ou alors, je n'ai pas compris de quels journaux ou tables diverses tu faisais allusion.

    Un exemple simple: tu crées une partition var ou dedans tu as les log du systèmes (genre messages) ainsi que le spool d'un serveur de mail.
    Un utilisateur pourrait te remplir la partition rien qu'en recevant beaucoup de mail, ce qui ferait qu'une fois cette partition full à cause de l'utilisateur en question, on ne pourrait plus avoir d'alerte dans messages ou autre log système et pour faciliter les choses, ton système pourrait se figé. C'est là toute l'utilité de cette réserve pour root.
    D'ailleurs, un petit détail: celle-ci est par défaut de 5% mais lors de l'initialisation de la partition, il est souvent utile de changer cette valeur, car 5% de 1To c'est un peu beaucoup, mais 5% de 100Mo, ce n'est peut-être pas assez selon l'utilisation de la partition en question.
    Cordialement.

  6. #6
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 722
    Points : 21 754
    Points
    21 754

    Par défaut

    La confusion vient je pense des éléments de la structure statfs
    champ f_bfree : blocs libres
    champ f_bavail : blocs libres pour les utilisateurs

    La différence entre f_bfree et f_bavail étant les blocs réservés à root.

    la doc de df ne précise pas la valeur retournée.
    Je viens de faire un test en appelant df en user simple et en root : même résultat.

    Reste à voir ce qui est retourné : f_bfree ou f_bavail

    Il me paraitrait logique que ce soit f_bavail, la réservation étant pour éviter de ne rien pouvoir faire si FS rempli. J'ai pas regardé.

    Autre point :
    Un FS va te retourner un nombre de blocs lié à celui-ci, un utilitaire de périphérique, hors FS va te retourner un nombre de bloc lié au périphérique. Il peut y avoir une différence.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  7. #7
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Citation Envoyé par disedorgue Voir le message
    Ou alors, je n'ai pas compris de quels journaux ou tables diverses tu faisais allusion.
    je parlais de ta réponse précédente :
    Citation Envoyé par disedorgue Voir le message
    donc en ne comptant pas le journal, la table de bitmap,...
    Je comprends bien qu'un système de logs va pouvoir y accéder et permettre à root d'y éditer des fichiers, mais pas plus.
    La confusion semble venir du fait que si bfree-bavail = bfree4root, il n'est pas possible pour autant que root y stocke des films ou que sais-je.
    Cet espace ne peut pas se comporter comme une partoche dédiée à root, c'est pour ça que les mots utilisés dans l'aide prêtent à confusion.

    De toute façon, en utilisant grand_total = sbuf.f_blocks - sbuf.f_bfree + sbuf.f_bavail je suis tranquille car en remplaçant la valeur remontée par df (premier champ) par ce grand_total, je conserve la marge réservée à root, aux fichiers système, bref à cette partie qu'on ne maîtrise pas.


    Citation Envoyé par chrtophe Voir le message
    Reste à voir ce qui est retourné : f_bfree ou f_bavail
    Je suis parti de cette discussion, où on y croise quelqu'un qu'on voit parfois ici

    Pour s'y retrouver, j'ai pondu des lignes comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        printf("Espace used  : %15llu %s\n", (long long) sbuf.f_frsize * (sbuf.f_blocks - sbuf.f_bfree), " = df Util.");
        printf("Espace dispo : %15llu %s\n", (long long) sbuf.f_frsize *  sbuf.f_bavail, " = df Disponible, bavail");
        printf("nouveau total: %15llu %s\n", (long long) sbuf.f_frsize * (sbuf.f_blocks - sbuf.f_bfree + sbuf.f_bavail), " = blocks-bfree+bavail (= Util.+Dispo)");
        printf("Espace libre : %15llu %s\n", (long long) sbuf.f_frsize *  sbuf.f_bfree, " = bfree, tune2fs Free blocks");
        printf("libre - dispo= %15llu %s\n", (long long) sbuf.f_frsize * (sbuf.f_bfree - sbuf.f_bavail), " = bfree - bavail, tune2fs Reserved block count");
    Les textes permettent de raccorder les morceaux, en comparant avec une sortie df -B1.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Bonjour,

    un petit mot vite fait à propos de l'avancement du chantier.

    1) une info : dans mon petit prog (qui remonte les mêmes infos que df -B1 chemin), il faut IM-PÉ-RA-TI-VE-MENT faire un appel à sync(); sinon l'appel suivant à statvfs remplit la structure des datas avec des valeurs fausses ! C'est bien noté ?

    2) un souci : il va falloir que je creuse un truc vraiment bizarre, l'arrondi à l'unité supérieure en nombre de blocs est fluctuant.
    Un exemple : soit une petite partoche ext4 (sur clé usb) de 128 Mo, avec donc une taille de bloc de 1024 bytes.
    Si j'y copie un fichier de 1025 bytes, il va occuper 2 blocs car 1025 / 1024 = 1,0009765625 soit supérieur à 1 donc 2.

    Et j'ai un fichier (pour le moment, mais je ne sais pas trop comment chercher ça...) de 54 860 518 bytes (choisi au pif), donc 54860518 / 1024 = 53574,7246094 que j'arrondis à 53575 mais l'appel à statvfs retourne 53576.
    Un fichier plus petit de 38 455 854 bytes retourne bien 37555 blocs, calcul comme appel à statvfs.

    Ce n'est pas dramatique mais c'est très désagréable.

    Il va falloir que je fasse d'autres tests, mais j'ai un peu peur de m'engager dans un chemin passablement hasardeux, et termes de choix des fichiers.

    Je résume : fichier de 38 Mo --> nombre de blocs ok, fichier de 55 Mo --> nombre de blocs + 1.
    Je n'aurai pas trop le temps cet après-midi, mais je vous lirai avec attention à mon retour.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Expert éminent Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2012
    Messages : 2 969
    Points : 8 322
    Points
    8 322

    Par défaut

    Comment as-tu mis tes fichiers sur ta clé ?

    As-tu créé un nouveau répertoire ou bien agrandi la structure de ton répertoire d'origine de ta clé ?

    En gros, ça peut être le soucis de passé par des comptages indirectes, ici, on peut bêtement agrandir un répertoire...
    Cordialement.

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Citation Envoyé par disedorgue Voir le message
    Comment as-tu mis tes fichiers sur ta clé ?
    Avec la touche F5 dans mc.

    Citation Envoyé par disedorgue Voir le message
    As-tu créé un nouveau répertoire ou bien agrandi la structure de ton répertoire d'origine de ta clé ?
    Ni l'un ni l'autre : ai d'abord tout nettoyé/viré avec gparted, puis recréé une partoche de 128 M au début de la clé, toujours avec gparted, qui a participé au formatage également.

    Citation Envoyé par disedorgue Voir le message
    En gros, ça peut être le soucis de passé par des comptages indirectes, ici, on peut bêtement agrandir un répertoire...
    Pas compris ce que tu veux dire, là.

    Quand je me suis rendu compte de ce décalage de 1 bloc, c'était après copie d'un paquet de fichiers : alors j'ai tout viré puis recommencé un fichier à la fois jusqu'à trouver le coupable, que j'ai confirmé après nouvelle suppression de tout puis copie de juste le coupable.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Responsable Systèmes


    Homme Profil pro
    Technicien maintenance
    Inscrit en
    août 2011
    Messages
    9 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : août 2011
    Messages : 9 722
    Points : 21 754
    Points
    21 754

    Par défaut

    Tes fichiers sont sur clé USB ? Donc en FAT, ton calcul n'est peut-être pas juste du coup.

    L'unité d"allocation en FAT n'est pas un bloc mais un cluster. La taille d'un cluster est variable, de 1 à 128 secteurs par multiple de 2 (octet 13 du secteur 0 du volume FAT appelé BPB). Un fichier utilise au minimum un cluster. Si la taille d'un cluster est de 4 secteurs, un fichier de 1 octet occupera sur le disque 4*512=2048 octets, et donc un fichier de 2049 octets occupera 4096 octets. Il faudrait voir si le VFS Linux reporte bien la taille d'un cluster dans le champ f_bsize du statfs d'un volume FAT, en théorie ça devrait être le cas.

    Ou alors c'est peut-être une question d'arrondi.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur la création d'un système : http://chrtophe.developpez.com/tutoriels/minisysteme/
    Mon article sur le P2V : http://chrtophe.developpez.com/tutoriels/p2v/
    Consultez nos FAQ : Windows, Linux, Virtualisation

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Citation Envoyé par chrtophe Voir le message
    Tes fichiers sont sur clé USB ? Donc en FAT, ton calcul n'est peut-être pas juste du coup.
    Je l'ai formatée en ext4 et à l'insertion (à l'instant) elle est parfaitement bien reconnue automatiquement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /dev/sdc1 on /media/redkey type ext4 (rw,nosuid,nodev,relatime,data=ordered,uhelper=udisks)
    redkey c'est le petit nom mignon que je lui ai attribuée, because elle est d'un joli rouge tendre,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  13. #13
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    juillet 2006
    Messages
    7 429
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : juillet 2006
    Messages : 7 429
    Points : 10 703
    Points
    10 703

    Par défaut

    Quand j'appelle l'outil stat sur mon fichier de 55 Mo, la première ligne retourne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       Taille : 54860518  	Blocs : 107152     ES blocs : 1024   fichier
    ...
    (On notera le mot "fichier" tout seul au bout de la ligne )

    et si je l'appelle ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    # stat --format=%s,%b,%B,%o /media/redkey/Wang\ Dang\ Doodle.wav
    ça me donne cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    54860518,107152,512,1024
    avec ces 4 options (man stat) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
           %s     Total size, in bytes
           %b     Number of blocks allocated (see %B)
           %B     The size in bytes of each block reported by %b
           %o     I/O block size
    Questions :
    que veut dire ES ? Entrées/Sorties ? C'est la valeur renvoyée par l'option %o, I/O block size, soit 1024.
    pourquoi %B (512) n'est pas directement remonté par l'outil ?

    Par ailleurs, 107152 x 512 = 54861824, c'est la valeur la plus proche divisible par 4 de la taille divisée par %o : 54860518 / 512 = 107149,449219 --> 107150 n'est pas divisible par 4, pas plus que 107151, mais 107152 oui --> 26788, tiens tiens, car si ensuite je multiplie 26788 par 2 ça donne 53576, la valeur dont j'ai déjà parlé à propos du bloc surnuméraire, sans explication.

    Et 53576 x 1024 = 54861824, la valeur remontée par df -B1 fichier ou mon outil.

    Je vais continuer à creuser cette histoire de division entière par 4 (même si je n'ai rien lu à ce propos) avec d'autres fichiers, histoire de voir...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #14
    Expert éminent Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    décembre 2012
    Messages
    2 969
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : décembre 2012
    Messages : 2 969
    Points : 8 322
    Points
    8 322

    Par défaut

    Perso, j'ai des fichiers qui ont par exemple 16 blocs en plus si on calcul par rapport à leur taille réelle...

    Ceci se joue à cause de la fragmentation. As-tu essayé d'utiliser debugfs comme par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    debugfs /dev/sdc1 <<_EOF
    dump_extents -l "/Wang Dang Doodle.wav"
    _EOF
    Chez moi, par exemple le fichier avec 16 blocs en plus par rapport à sa taille me donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Level Entries         Logical              Physical Length Flags
     1/ 1   1/ 14      0 -    124  78250624 -  78250748    125 
     1/ 1   2/ 14    125 -   6143  88631239 -  88637257   6019 
     1/ 1   3/ 14   6144 -   8191 101388288 - 101390335   2048 
     1/ 1   4/ 14   8192 -  10239 101535744 - 101537791   2048 
     1/ 1   5/ 14  10240 -  12287 101617664 - 101619711   2048 
     1/ 1   6/ 14  12288 -  14335 103501824 - 103503871   2048 
     1/ 1   7/ 14  14336 -  18431 104091648 - 104095743   4096 
     1/ 1   8/ 14  18432 -  51199 104163328 - 104196095  32768 
     1/ 1   9/ 14  51200 -  83967 104196096 - 104228863  32768 
     1/ 1  10/ 14  83968 - 116735 104228864 - 104261631  32768 
     1/ 1  11/ 14 116736 - 149503 104261632 - 104294399  32768 
     1/ 1  12/ 14 149504 - 182271 104294400 - 104327167  32768 
     1/ 1  13/ 14 182272 - 186367 104327168 - 104331263   4096 
     1/ 1  14/ 14 186368 - 211277 104419328 - 104444237  24910
    Cordialement.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo