Cette question a déjà été posée dans le débordement de pile, mais les bonnes personnes là-bas ont recommandé d'essayer la communauté ici à la place.
Je fais des recherches sur les fichiers clairsemés en ce qui concerne divers systèmes de fichiers et j'essaie de trouver quelque chose de concret qui déclare que les fichiers clairsemés sont pris en charge par les systèmes de fichiers réseau (NFS) ou Server Message Block (SMB).
Je comprends que SMB est largement utilisé dans Windows et que selon cette entrée , un serveur SMB peut prendre en charge un fichier clairsemé même si le système de fichiers sous-jacent ne le fait pas. Cependant, si j'ai raison, le système de fichiers qui ne prend pas en charge les fichiers clairsemés ne ferait que combler les «trous» de zéros, ce qui pourrait entraîner un problème de performances.
En ce qui concerne NFS, je n'ai pas pu découvrir quoi que ce soit sur l'utilisation de fichiers clairsemés prenant en charge NFS.
Par conséquent, mes questions sont,
Les fichiers épars sont-ils pris en charge dans NFS et SMB?
la source
dd
lit bloc par bloc et si le système de fichiers sous-jacent prend en charge les fichiers clairsemés ou non, les trous sont transformés en zéros par le système d'exploitation. Essayez-le sur ext4 et vous verrez les mêmes numéros.dd
commande sur un fichier local clairsemé donnera des résultats beaucoup plus rapides. Voir ici pour un exemple :,root@hubble:~# truncate -s 1G test.img root@hubble:~# dd if=test.img of=/dev/null bs=1M iflag=direct 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB) copied, 0.10478 s, 10.2 GB/s
Comme vous pouvez le voir, la lecture d'un fichier local clairsemé donne une vitesse d'E / S au nord de 10 Go / sdu -s
vsls -l
, mais vous avez raison, cela n'aide pas à la transmission sur le réseau; mais dans les deux cas (comme celastrace
sera confirmé),dd
le fichier entier est lu, y compris les «trous» en tant que zéros, la différence étant uniquement d'où proviennent les «zéros» (côté serveur ou client). Cependant, notez (selon ma réponse) que NFS 4.2 prend entièrement en charge les fichiers clairsemés.NFS
Oui, NFS 4.2 prend entièrement en charge les fichiers clairsemés (voir ce document canonique et cette présentation ).
Avant NFS 4.2, le modèle client / serveur NFS supportait les fichiers clairsemés dans le sens où l'API supportait toutes les opérations de fichiers POSIX. Cela signifiait que l'écriture de fichiers épars sur un serveur prenant en charge des fichiers épars sur le système de fichiers de sauvegarde entraînait la création d'un fichier épars (plutôt que de stocker de nombreux zéros). Mais la lecture du fichier entraînerait la transmission de beaucoup de zéros pour l'élément clairsemé. IE, la réponse est «partiellement».
NFS 4.2 ajoute la possibilité pour le client de «voir» les trous dans les fichiers, et donc pour le serveur de ne pas avoir à transmettre tous ces zéros. De l'ID:
Malgré le fait que la spécification prend en charge les fichiers épars, il serait possible pour un implémenteur paresseux d'éviter d'implémenter la prise en charge des fichiers épars dans le client ou le serveur.
SMB
Je connais moins SMB, mais je pense qu'il prend également en charge les fichiers clairsemés, si le bit de capacité FS correspondant est défini. Voir ici pour plus d'informations.
la source