Pourquoi ne puis-je pas créer des fichiers de plus de 2 Go sous Linux?

8

Je voulais partager certaines connaissances que j'ai acquises lorsque j'ai eu des problèmes avec libpcap et snort pour renifler une liaison réseau haute capacité (1 Go en duplex intégral; 2 Go max agrégé). Les applications renifleraient tout le trafic avec succès, mais se bloqueraient lorsque la taille du fichier atteindrait 2 Go capturés.

Si vous rencontrez des problèmes avec la création de fichiers de 2 Go, même si vous avez un système de fichiers qui le prend en charge et / ou si vous savez que le noyau le prend en charge, c'est pour vous.

romandas
la source
Je pensais que je partagerais cela avec la communauté; faites-moi savoir s'il y a des changements que je dois apporter.
romandas

Réponses:

22

La prise en charge des fichiers volumineux (> 2 Go) pour Linux doit être traitée dans trois emplacements distincts pour vous assurer de ne pas exécuter la limite de taille de fichier maximale de 2 Go:

  1. Prise en charge des fichiers volumineux activée dans le noyau

  2. Un système de fichiers qui prend en charge de grandes tailles de fichiers (de nombreux systèmes de fichiers basés sur Linux le font (ext3, reiserfs> = 3.6, etc.))

  3. Prise en charge de fichiers volumineux dans les bibliothèques ou applications utilisées

La prise en charge du noyau pour les fichiers volumineux existe depuis le 2.4.0-test7; si vous utilisez un noyau personnalisé, assurez-vous d'avoir inclus les options de fichiers volumineux.

La plupart des systèmes de fichiers Linux prennent en charge les fichiers volumineux, mais vous pouvez rencontrer des problèmes lors de l'utilisation d'un système de fichiers réseau.

Enfin, les bibliothèques (ie libpcap) et les applications doivent être compilées avec les options gcc -D _LARGEFILE64_SOURCE -D _FILE_OFFSET_BITS = 64. Vérifiez que les packages que vous utilisez sont pré-compilés avec ces options ou lancez les vôtres.

Voir ici pour plus de détails.

romandas
la source
3
Au lieu de "FILE_OFFSET_BITS", ce devrait être "_FILE_OFFSET_BITS".
Juliano
Tu as raison. Corrigée.
romandas
1
Si vous dévaluez, au moins soyez décent et dites-moi pourquoi .
romandas
Remarque: _FILE_OFFSET_BITSpasse O_LARGEFILEà l' openappel système sur la bonne arche, mais _FILE_OFFSET_BITSest préférable pour la portabilité: stackoverflow.com/questions/2888425/…
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
2

On dirait que c'est un problème avec libpcap ... Comme indiqué dans la première réponse.

Recompilez libpcap ou trouvez une autre version.

Joseph Kern
la source