3.13. De HFS à HFS Plus

On s’intéresse ici à la gestion de fichier de MacOS, et à son évolution récente en 8.1. Voici un extrait d’un article de la presse de vulgarisation.
Depuis 1986, la structure des disques durs d’Apple s’appuie sur HFS (Hierarchical File System). Sans entrer dans une description technique, sachez que ce format découpe un disque en 216 blocs indivisibles de taille égale, dits blocs d’allocation. Tout fichier qui occupe même partiellement un bloc d’allocation se l’attribue entièrement, ce qui signifie que la taille d’un bloc d’allocation représente la taille du plus petit fichier possible sur un volume donné.
MacOS 8.1 s’appuie sur HFS Plus, où le nombre de blocs d’allocation d’un volume varie de 216 à 232. La règle du jeu est fixée comme suit:
Taille du volume
taille des blocs
jusqu’à 256 Mo compris
0,5 Ko
plus de 256 jusqu’à 512 Mo compris
1 Ko
plus de 512 Mo jusqu’à 1 Go compris
2 Ko
plus de 1 Go
4 Ko
Grâce à HFS Plus, l’utilisateur économise de la place sur son volume, dans une proportion très variable selon la taille du disque, la taille et le nombre de fichiers. En supplément, la barrière des 65536 fichiers sur un volume saute et varie de 65536 sur un volume de 32 Mo à plus de 1000000 sur un volume de plus de 1 Go.
A- Expliquer les conséquences et les limites induites par la contrainte du découpage de HFS en 216 blocs indivisibles de taille égale de l’espace disque. On étudiera en particulier le cas d’un disque de 32 Mo et celui d’un disque de 1 Go.
B- Expliquer les avantages et les inconvénients que vous voyez à la structuration de HFS Plus. On étudiera en particulier le cas d’un disque de 32 Mo et celui d’un disque de 1 Go.
C- L’article signale que des mesures ont donné les gains en espace suivants:
Taille volume
nombre de fichiers
occupation en HFS
occupation en HFS+
500 Mo
6000
340 Mo
323 Mo
1 Go
15000
983,7 Mo
879,8 Mo
2 Go
22000
1,3 Go
700 Mo
Comment expliquez-vous de telles variations de gains suivant la taille?
D- Vous faites des mesures sur votre propre système comportant un disque de 2 Go en HFS, et vous constatez les résultats suivants:
nombre de fichiers
taille réelle
espace occupé
10000
t ≤ 4 Ko
320 Mo
5000
4 < t ≤ 8 Ko
160 Mo
3000
8 < t ≤ 32 Ko, moyenne 20 Ko
96 Mo
2000
32 Ko < t, moyenne 256 Ko
512 Mo
Quel gain espérez-vous obtenir du passage en HFS Plus de votre disque?
E- A votre avis peut-on attendre des changements (perte ou gain) en terme de temps d’accès du changement de structuration.
Solution de l’exercice 3.13

3.13.1. Question A

Nous reprenons ici ce qui a déjà été dit pour l’exercice précédent. Le limite de 216 blocs indivisibles implique que, pour un disque de taille T, le bloc soit au moins de taille T/65536. Cette taille est de 512 octets pour un disque de 32 Mo et de 16 Ko pour un disque de 1 Go. Ceci a deux conséquences. D’une part, tout fichier de moins de 16 Ko recevra de fait 16 Ko sur un disque de 1 Go. Plus généralement, la perte de place étant de 1/2 quantum par objet (voir §8.4.1), plus le quantum est grand, plus la perte est grande. D’autre part, quelle que soit la taille du disque, il y a au plus 65536 blocs, donc au plus 65536 fichiers contenant au moins 1 bloc, limitant de fait le nombre de fichiers d’un volume.

3.13.2. Question B

L’utilisation de HFS Plus pallie les deux inconvénients ci-dessus pour les gros disques et est sans effet sur les disques de 32 Mo (un bloc ne peut être de taille inférieure au secteur, qui contient au moins de 512 octets sur les disques actuels). Pour un disque de 1 Go, la perte d’espace moyenne par objet est divisée par 8 (1 Ko au lieu de 8 Ko) et le nombre de fichiers maximum est multiplié par 8. Par contre, le nombre d’unités allouables augmentant, la taille de la représentation de l’espace libre augmente tout comme la durée d’exécution de l’algorithme d’allocation.

3.13.3. Question C

Analysons l’évolution de l’espace moyen occupé par fichier lors du passage de HFS en HFS Plus dans chacun des trois cas. Il passe de 58 à 55 Ko sur le disque de 500 Mo, de 67,2 à 60 Ko sur celui de 1 Go et de 60,5 à 32,6 Ko sur celui de 2 Go. Ceci veut dire que dans les deux premiers cas les fichiers sont plus gros en moyenne que dans le troisième cas, or le gain est d’autant plus important que les fichiers sont plus petits et le disque plus gros. Pour le disque de 2 Go, le bloc fait 32 Ko en HFS contre 4 Ko en HFS Plus. Comme dans le troisième cas l’espace moyen alloué est de 32,6 Ko, cela veut dire qu’il y a beaucoup de petits fichiers qui bénéficient pleinement d’un espace alloué plus faible. En fait le gain moyen est de 27,9 Ko par fichier, c’est-à-dire que presque tous les fichiers bénéficient pleinement de la réduction de la taille des blocs. Notons que les blocs ont diminués de 28 Ko, et il est étonnant d’approcher cette valeur de si prêt, mais l’article ne donnait aucune information sur la précision des mesures, ce qui nous conduit alors à être prudent dans nos conclusions.

3.13.4. Question D

Les 10000 fichiers de taille inférieure à 4 Ko recevront exactement 4 Ko en HFS Plus au lieu de 32 Ko en HFS. Le gain sera donc de 28 Ko par fichier soit un total de 280 Mo. Les 5000 fichiers dont la taille est comprise entre 4 et 8 Ko, recevront 8 Ko au lieu de 32 Ko, soit un gain de 24 Ko par fichier et donc un total de 120 Mo. Les 3000 fichiers de taille comprise entre 8 et 32 Ko ayant une taille moyenne de 20 Ko peuvent permettre un gain moyen de 12 Ko par fichier, et donc un gain total de 36 Mo. Enfin, les 2000 fichiers de taille supérieure donnaient lieu à une perte moyenne de 1/2 quantum soit 16 Ko par fichier. Avec HFS Plus, cette perte sera ramenée à 2 Ko par fichier, ce qui nous laisse espérer un gain moyen de 14 Ko par fichier, soit un total de 28 Mo. En rassemblant l’ensemble, on peut donc espérer un gain global de 280 + 120 + 36 + 28 = 464 Mo, sur un total occupé de 1088 Mo, soit prêt de 43%.

3.13.5. Question E

Le fait d’avoir des blocs plus petits peut entraîner une certaine dispersion de l’espace alloué aux gros fichiers et donc une certaine perte de performance quant au temps d’accès, puisqu’il pourrait y avoir plus de mouvement de bras. Notons cependant que un quantum plus petit ne veut pas dire obligatoirement des zones plus petites : cela dépend de l’état de la capacité de trouver de grands espaces contigus au moment de l’allocation des zones.