Comment fonctionne la taille de bloc du système de fichiers?

11

Tous les systèmes de fichiers Linux ont une taille de bloc de 4 Ko. Disons que j'ai 10 Mo de stockage sur disque dur. Cela signifie que j'ai 2560 blocs disponibles et disons que j'ai copié 2560 fichiers ayant chacun 1 Ko de taille. Chaque bloc de 1 ko occupera 1 bloc bien qu'il ne remplisse pas le bloc entier.

Donc mon disque entier est maintenant rempli mais j'ai encore 2560x3kb d'espace libre. Si je veux stocker un autre fichier de disons 1 Mo, le système de fichiers me permettra-t-il de stocker? Écrira-t-il dans l'espace libre laissé dans les blocs individuels? Existe-t-il un concept pour résoudre ce problème?

J'apprécierais quelques éclaircissements. Merci d'avance

Srimanth Duggineni
la source
OK, 2560 fichiers, chacun fait 1 Ko, soit 2560 * 0,001 Mo = 2,56 Mo. Chaque fichier de 1 Ko devrait occuper environ 1/4 du bloc, car 1000 * 4 = 4000, non? Et la taille du bloc est de 4096, vous avez donc besoin de 4 fichiers pour remplir le bloc. Un fichier de 1 Mo vous coûtera alors 1000000/4096 = 244 blocs.
Sergiy Kolodyazhnyy

Réponses:

3

La taille de bloc par défaut était de 512 octets depuis le premier Linux. Sauf jusqu'à récemment, la taille des blocs 4k était introduite pour répondre à la taille toujours croissante des disques. Cela est même presque dicté par le matériel du disque (voir plus: /unix/178899/optimizing-logical-sector-size-for-physical-sector-size-4096-hdd ).

Pourtant, pour votre question spécifique: vous avez raison de dire que tous les fichiers gaspillent les octets inutilisés du dernier bloc sur de nombreux types de systèmes de fichiers, ce qui est particulièrement coûteux pour les petits fichiers. Mais les btfrs et reiserfs semblent être en mesure de faire face, selon https://en.m.wikipedia.org/wiki/Block_suballocation

Harald
la source
1
  1. Les systèmes de fichiers peuvent avoir une taille de bloc de 512 à (généralement) 65536 octets. La taille de bloc peut être spécifiée comme option mkfs.xxx. La taille de bloc par défaut dans la plupart des systèmes de fichiers Linux - 4096 octets.

  2. Certains systèmes de fichiers prennent en charge l'empilage et / ou l'allocation de sous-blocs. ext2 / 3/4 - fait, xfs - ne fait pas. Si vous envisagez de remplir une partition avec plusieurs petits fichiers, vous pouvez réduire l'espace «en queue» gaspillé en réduisant la taille des blocs à 512 ou 1024.

Oleksandr Suvorov
la source