Différence entre la taille de bloc et la taille de cluster

20

J'ai une question concernant la taille du bloc et la taille du cluster. En ce qui concerne ce que j'ai lu à ce sujet, je suppose ce qui suit:

  • La taille de bloc est la taille physique d'un bloc, généralement 512 octets. Il n'y a aucun moyen de changer cela.
  • La taille du cluster est la taille minimale d'un bloc qui est lu et accessible en écriture par le système d'exploitation. Si je crée un nouveau système de fichiers, par exemple ext3, je peux spécifier cette taille de bloc minimale avec le commutateur -b. Presque tous les programmes comme dumpe2fs, mke2fs utilisent la taille de bloc comme nom pour la taille du cluster.

Si j'ai la sortie suivante:

$ stat test
File: `test'
Size: 13            Blocks: 4          IO Block: 2048   regular file
Device: 700h/1792d  Inode: 15          Links: 1

Est-il exact que la taille est l'espace réel en octets, les blocs sont les blocs physiquement utilisés (512 octets pour chacun) et le bloc IO correspond à la taille de bloc spécifiée lors de la création du FS?

pluckyDuck
la source

Réponses:

26

Je pense que vous êtes confus, peut-être parce que vous avez lu plusieurs documents qui utilisent une terminologie différente. Des termes comme «taille de bloc» et «taille de cluster» n'ont pas de signification universelle, même dans le contexte de la littérature sur les systèmes de fichiers.

Systèmes de fichiers

Pour ext2 ou ext3 , la situation est relativement simple: chaque fichier occupe un certain nombre de blocs . Tous les blocs d'un système de fichiers donné ont la même taille, généralement l'un de 1024, 2048 ou 4096 octets. Un fichier¹ dont la taille est comprise entre N blocs plus un octet et N + 1 blocs occupe N + 1 blocs. Cette taille de bloc est ce que vous spécifiez avec mke2fs -b. Il n'y a pas de notion distincte de clusters.

Le système de fichiers FAT utilisé en particulier par MS-DOS et les premières versions de Windows a une allocation d'espace similaire. Ce que ext2 appelle des blocs, FAT appelle des clusters ; Le concept est le même.

Certains systèmes de fichiers ont un schéma d'allocation plus sophistiqué: ils ont des blocs de taille fixe, mais peuvent utiliser le même bloc pour stocker les derniers octets de plusieurs fichiers. C'est ce qu'on appelle la sous -allocation de blocs ; Reiserfs et Btrfs le font, mais pas ext3 ni même ext4.

Utilitaires

Les utilitaires Unix utilisent souvent le mot «bloc» pour désigner une unité de taille arbitraire, généralement 512 octets ou 1 Ko. Cette utilisation n'est liée à aucun système de fichiers ou matériel de disque particulier. Historiquement, le bloc 512B a été créé parce que les disques et les systèmes de fichiers fonctionnaient alors à l’aide de blocs 512B, mais l’utilisation moderne est tout simplement arbitraire. Les utilitaires et interfaces Unix traditionnels utilisent encore parfois des blocs de 512B, bien que les blocs de 1 Ko soient maintenant souvent préférés . Vous devez vérifier la documentation de chaque utilitaire pour savoir quelle taille de bloc il utilise (certains ont un commutateur, par exemple du -Bou df -Bsous Linux).

Dans l' statutilitaire GNU / Linux , le blockschiffre est le nombre de blocs 512B utilisés par le fichier. Le IO Blockchiffre est la taille préférée pour l'entrée-sortie du fichier, qui n'est en principe pas liée mais généralement une indication de la taille de bloc du système de fichiers sous-jacent (ou la taille du cluster si c'est ce que vous voulez appeler). Ici, vous avez un fichier de 13 octets, qui occupe un bloc sur le système de fichiers ext3 avec une taille de bloc de 2048; par conséquent, le fichier occupe 4 unités de 512 octets (appelées «blocs» par stat).

Disques

La plupart des disques présentent une interface qui montre le disque comme un tas de secteurs . Le disque ne peut écrire ou lire qu'un secteur entier, pas des bits ou octets individuels. La plupart des disques durs ont des secteurs de 512 octets, bien que les disques de 4 Ko aient commencé à apparaître il y a quelques années.

La taille du secteur du disque n'est pas directement liée à la taille du bloc du système de fichiers, mais avoir un bloc composé d'un nombre entier de secteurs est meilleur pour les performances.

¹ Exception: les fichiers épars économisent de l'espace.

Gilles 'SO- arrête d'être méchant'
la source
2
Merci pour la clarification. Je suis arrivé ici en raison d'une telle confusion causée par l'outil ext2fsd pour Windows. Leurs options de ligne de commande commencent: ´Utilisation: mke2fs [-c | -l nom de fichier] [-b taille-bloc] [-C taille-cluster] ... ´ Eh bien, vous voyez, à la fois la taille du bloc et celle du cluster ...
Bernhard Hiller
Je suis également intéressé de savoir quelle est la différence entre la taille de bloc de mke2fs et la taille de cluster. Est-ce que quelqu'un sait ?
X.LINK
1
@ X.LINK C'est expliqué dans la page de manuel. La taille du cluster est utilisée par la fonctionnalité bigalloc , qui, si je comprends bien, accélère l' accès aux gros fichiers au détriment d'un stockage plus gaspillé.
Gilles 'SO- arrête d'être méchant'